L'apprentissage automatique dans la négociation : théorie, modèles, pratique et algo-trading - page 205

 
ivanivan_11:

Il vous sera probablement proposé d'utiliser vous-même ces fonctions si nécessaire https://www.mql5.com/ru/docs/opencl.

J'ai une vieille carte vidéo, OpenCL ne semble pas la prendre en charge. S'ils placent le support dans la bibliothèque, que se passera-t-il ?

Je voulais donc dire qu'il serait possible de choisir de prendre en charge à la fois la vidéo et les autres cœurs du processeur, ou de ne pas utiliser OpenCL du tout. C'est une véritable opportunité pour les gens ordinaires de voir comment appliquer OpenCL efficacement.

 

Quand nous arriverons aux calculs lourds, nous utiliserons peut-être OpenCL. Mais quelque chose me dit que l'utilisation de CPU multicore donnera des résultats acceptables et plus garantis.

Pour l'instant, il n'est pas question d'accélération. Nous travaillons sur la fonctionnalité de base des bibliothèques.

 
Dr. Trader:

Selon la formule du fichier d'aide de R, cela est calculé à l'aide de la formule
f(x)= 1/(s^a Gamma(a)) x^(a-1) e^-(x/s)
(shape= a et scale= s,pourx ≥ 0,a > 0 ets > 0)
scale est 1/rate par défaut

Le problème est que dans ce cas x^(a-1) = 0^(1-1) = 0^0 qui est indéfini, c'est-à-dire qu'il n'y a aucun intérêt à appeler la fonction avec un tel paramètre et aucun intérêt à comparer les résultats avec d'autres logiciels. Car 0^0 peut être différent dans différents logiciels, selon la religion des développeurs.
C'est dans le sens logiciel de 0^0. Au sens mathématique, plus précisément ici lim(x^0), à x->0 - et c'est sans ambiguïté une
 

Dr. Trader:
L'erreur supposée est que

dgamma(x=0, shape=1, rate=1,log=FALSE)== 1

Selon la formule figurant dans l'aide R, le calcul s'effectue à l'aide de la formule suivante
f(x)= 1/(s^a Gamma(a)) x^(a-1) e^-(x/s)
(forme= a et échelle= s,pourx ≥ 0,a > 0 ets > 0)
échelle par défaut à 1/rate

Le problème est que dans ce cas x^(a-1) = 0^(1-1) = 0^0, ce qui est indéfini, c'est-à-dire qu'il n'y a aucun intérêt à appeler la fonction avec un tel paramètre et aucun intérêt à comparer les résultats avec d'autres logiciels. Car 0^0 peut être différent dans différents logiciels, selon la religion des développeurs.

Bien. Il s'avère que l'on ne peut pas parler de définition, puisqu'il y a des incertitudes.

Vous pouvez tracer le graphique et vous assurer qu'à x=0, l'expression à ces paramètres tend vers 1. C'est un nombre normal, il n'y a pas de divergence à d'autres points.

Nous pouvons additionner toute la densité, le résultat sera un certain nombre (facteur de normalisation), par lequel nous divisons et obtenons la probabilité unitaire, qui est étalée sur la zone de définition. La courbe est normalisée, l'aire sous la courbe = 1. Dans ce cas, on peut parler de densité de probabilité.

Cependant, avec les paramètres 0,5 et 1 au point x=0, la situation est différente. La limite à ce point est l'infini. Lorsqu'elle s'approche de 0, elle tend vers l'infini. Il est également possible de ne pas intégrer après ce point, le résultat ne changera pas. Comment normaliser à l'infini ? Avec cette normalisation, toute courbe se transforme en ligne.

Mais si l'on considère que l'expression ne fonctionne que lorsque x>0, alors l'expression peut être considérée comme la définition de la fonction, car il n'y a pas d'incertitudes à x=0. Toutes les valeurs sont finies et rien ne se casse.

Cette hypothèse explique les résultats que Mathematica et Matlab donnent : au point x=0 la densité=0.

C'était la question.

 
Renat Fatkhullin:

Quand nous arriverons aux calculs lourds, nous utiliserons peut-être OpenCL. Mais quelque chose me dit que l'utilisation de CPU multicore donnera des résultats acceptables et plus garantis.

Pour l'instant, il n'est pas question d'accélération. Nous sommes occupés à bricoler la fonctionnalité de base des bibliothèques.

Je l'ai. Je vais attendre les développements.

 
Quantum:

Super. Il s'avère que l'on ne peut pas parler de définition, puisqu'il y a des incertitudes.

Vous pouvez tracer le graphique et vous assurer qu'au point x=0, l'expression tend vers 1. C'est un nombre normal, il n'y a pas de divergence à d'autres points.

Nous pouvons additionner toute la densité, le résultat est un certain nombre (le facteur de normalisation) par lequel nous divisons et obtenons la probabilité unitaire, qui est étalée sur la zone de définition. La courbe est normalisée, l'aire sous la courbe = 1. Dans ce cas, on peut parler de densité de probabilité.

Cependant, avec les paramètres 0,5 et 1 au point x=0, la situation est différente. La valeur limite à ce point est l'infini. Lorsqu'elle s'approche de 0, elle tend vers l'infini. Il est également possible de ne pas intégrer après ce point, le résultat ne changera pas. Comment normaliser à l'infini ? Avec cette normalisation, toute courbe se transforme en ligne.

Mais si nous considérons que l'expression ne fonctionne que lorsque x>0, alors l'expression peut être considérée comme la définition de la fonction, car il n'y a pas d'incertitudes à x=0. Toutes les valeurs sont finies et rien ne s'écroule.

Cette hypothèse explique les résultats que Mathematica et Matlab donnent : au point x=0 la densité=0.

C'était la question.

Cette fonction est ce qui est défini à (0,inf). ou vous n'êtes pas d'accord avec cela ?

Deuxièmement. Étant donné que la fonction de distribution de probabilité est parfaitement définie sur la région spécifiée, y a-t-il un sens à attribuer n'importe quelle valeur 0, 1, inf à la fonction de densité au point 0 et à appeler l'une de ces valeurs une erreur ?

Non, je n'ai pas à me plaindre de la valeur 0. Allez-vous personnellement, en tant qu'auteur du code de la fonction, répondre aux programmeurs de R pour ce que vous avez dit au sujet de leur fonction dgamma qui est incorrecte ?
 
Mes collègues et moi avons vérifié dgamma après avoir lu l'article. Vos révélations n'ont pas et ne peuvent pas affecter les résultats des recherches effectuées. Et une personne qui n'y connaît rien pourrait penser que R fait les calculs par erreur. L'avez-vous fait délibérément dans ce but ? Ceci ne s'applique qu'à dgamma.

Suivant.

J'ai une question à vous poser personnellement. Fonction de Dirac. Fonction Delta. Egale à l'infini au point 0 et à zéro aux autres points. Son intégrale sur le domaine -inf à +inf = 1. Pourquoi y aurait-il un problème avec l'intégrale de la fonction gamma sur son domaine si à zéro la densité est égale à l'infini ?
 
Alexey Burnakov:

J'ai une question à vous poser personnellement. Fonction de Dirac. Fonction Delta. Elle est égale à l'infini au point 0 et à zéro aux autres points. Son intégrale sur le domaine -inf à +inf = 1. Pourquoi y aurait-il un problème avec l'intégrale de la fonction gamma sur son domaine si à zéro la densité est égale à l'infini ?

Vous voulez dire qu'une telle transformation en fonction delta de Dirac est acceptable ? Pourquoi tout le reste ?

Dites-moi ce qui arrive à l'infini pendant le pgamma au point x=0, quand la réponse "correcte" comme vous dites est donnée dans dgamma(0,0.5,1)=+inf.

Représenter graphiquement la fonction et les plages d'intégration lors du calcul de pgamma.

 

Fait intéressant

Les définitions des valeurs de densité de la distribution gamma dans la traduction russe de

Johnson N.L., Kotz S., Balakrishnan N. Univariate continuous distributions. Part 1 and the earlier English version are different :



mais la version anglaise comporte une faute de frappe présumée en raison de signes différents.

 
Quantum:

Voulez-vous dire que ce type de transformation en fonction delta de Dirac est acceptable ? Quel est l'intérêt de tout le reste alors ?

Dites-moi ce qui arrive à l'infini dans le processus pgamma à x=0, lorsque la réponse "correcte" comme vous dites dans dgamma(0,0.5,1)=+inf a été donnée.
J'ai lu la documentation de Pgamma. D'après ce que j'ai compris, il n'est pas lié à dgamma. Son homologue est différent.

Non, je ne vais pas te dire ce dont je ne suis pas sûr.
... J'ai donné un exemple où pour une densité = infini l'intégrale = 1. Puisqu'il y a des zéros sur le reste de la région...

Et une autre question pour vous.

J'ai pris Excel. Il y a aussi une fonction gamma.race. elle compte la densité si cumulative = false. pour x = 0 la fonction sort une valeur de #number ! Extrait de l'aide :Dans Excel, cette erreur se produit lorsqu'une formule ou une fonction contient une valeur numérique non valide.

Excel obtient-il également l'erreur ? En suivant votre logique. Peut-être que vous pouvez aussi rivaliser avec eux dans le domaine de l'esprit.

Et ajoutez à votre article la mention que la fonction stat pour la distribution gamma en Python renvoie des valeurs R similaires, et appelez le feuilleton comme suit : Il existe de nombreux programmes qui gâchent vos recherches avec des erreurs, et dans MT nous avons résolu toutes vos erreurs.

Et d'ailleurs ajouter une section sur les conventions adoptées dans MT5 pour les valeurs non calculables.

Et j'attends que ma question soit modérée par R Core et leur réponse. Bien que je sache ce que ce sera... et ensuite je prendrai ma retraite.
Raison: