Maschinelles Lernen im Handel: Theorie, Modelle, Praxis und Algo-Trading - Seite 205

 
ivanivan_11:

Wahrscheinlich wird Ihnen angeboten, diese Funktionen bei Bedarf selbst zu nutzen https://www.mql5.com/ru/docs/opencl.

Ich habe eine alte Grafikkarte, OpenCL scheint es nicht zu unterstützen. Wenn sie die Unterstützung direkt in die Bibliothek packen, was wird dann passieren?

Ich meinte damit, dass es möglich wäre, die Unterstützung sowohl für die Grafikkarte als auch für die anderen Kerne des Prozessors zu wählen, oder OpenCL überhaupt nicht zu verwenden. Es ist einfach eine echte Gelegenheit für normale Leute zu sehen, wie man OpenCL effektiv einsetzt.

 

Wenn wir zu den schweren Berechnungen kommen, werden wir vielleicht OpenCL verwenden. Aber irgendetwas sagt mir, dass die Verwendung von Multicore-CPUs akzeptable Ergebnisse liefern wird und mehr garantiert.

Von Beschleunigung kann im Moment keine Rede sein. Wir arbeiten an der Grundfunktionalität der Bibliotheken.

 
Dr. Trader:

Nach der Formel in der R-Hilfedatei wird dies mit Hilfe der folgenden Formel berechnet
f(x)= 1/(s^a Gamma(a)) x^(a-1) e^-(x/s)
(shape= a und scale= s,fürx ≥ 0,a > 0 unds > 0)
scale is 1/rate by default

Das Problem ist, dass in diesem Fall x^(a-1) = 0^(1-1) = 0^0 undefiniert ist, d.h. es macht keinen Sinn, die Funktion mit einem solchen Parameter aufzurufen und die Ergebnisse mit anderer Software zu vergleichen. Denn 0^0 kann in verschiedenen Programmen unterschiedlich sein, je nach Religion der Entwickler.
Dies ist im Sinne der Software von 0^0. Im mathematischen Sinne, konkret hier lim(x^0), bei x->0 - und das ist eindeutig eine
 

Dr. Trader:
Der vermeintliche Fehler besteht darin, dass

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

Nach der Formel in der R-Hilfe wird dies nach folgender Formel berechnet
f(x)= 1/(s^a Gamma(a)) x^(a-1) e^-(x/s)
(Form= a und Skala= s,fürx ≥ 0,a > 0 unds > 0)
Skala ist standardmäßig 1/Rate

Das Problem ist, dass in diesem Fall x^(a-1) = 0^(1-1) = 0^0 ist, was undefiniert ist, d.h. es macht keinen Sinn, die Funktion mit einem solchen Parameter aufzurufen, und es macht keinen Sinn, die Ergebnisse mit anderer Software zu vergleichen. Denn 0^0 kann in verschiedenen Programmen unterschiedlich sein, je nach Religion der Entwickler.

Gut. Es stellt sich heraus, dass wir nicht von einer Definition sprechen können, da es Unklarheiten gibt.

Sie können den Graphen aufzeichnen und sicherstellen, dass bei x=0 der Ausdruck bei diesen Parametern gegen 1 tendiert. Dies ist eine normale Zahl, es gibt keine Divergenz an anderen Punkten.

Wir können die gesamte Dichte summieren, das Ergebnis ist eine Zahl (Normalisierungsfaktor), durch die wir dividieren und die Einheitswahrscheinlichkeit erhalten, die über den Definitionsbereich verteilt wird. Die Kurve ist normalisiert, die Fläche unter der Kurve = 1. In diesem Fall kann man von einer Wahrscheinlichkeitsdichte sprechen.

Bei den Parametern 0,5 und 1 am Punkt x=0 ist die Situation jedoch anders. Der Grenzwert an diesem Punkt ist unendlich. Wenn sie sich 0 nähert, tendiert sie gegen unendlich. Es ist auch möglich, nach diesem Punkt nicht zu integrieren, das Ergebnis wird sich nicht ändern. Wie kann man auf unendlich normalisieren? Mit dieser Normalisierung wird jede Kurve zu einer Linie.

Wenn wir aber davon ausgehen, dass der Ausdruck nur funktioniert, wenn x>0 ist, dann kann der Ausdruck als Definition der Funktion angesehen werden, da es bei x=0 keine Unsicherheiten gibt. Alle Werte sind endlich und nichts geht kaputt.

Diese Hypothese erklärt die Ergebnisse, die Mathematica und Matlab liefern: Am Punkt x=0 ist die Dichte=0.

Das war die Frage.

 
Renat Fatkhullin:

Wenn wir zu den schweren Berechnungen kommen, werden wir vielleicht OpenCL verwenden. Aber irgendetwas sagt mir, dass die Verwendung von Multicore-CPUs akzeptable Ergebnisse liefern wird und mehr garantiert.

Von Beschleunigung kann im Moment keine Rede sein. Wir sind damit beschäftigt, an der Grundfunktionalität der Bibliotheken zu basteln.

Ich hab's. Ich werde die Entwicklung abwarten.

 
Quantum:

Großartig. Es stellt sich heraus, dass wir nicht von einer Definition sprechen können, da es Unklarheiten gibt.

Sie können den Graphen aufzeichnen und sich vergewissern, dass der Ausdruck am Punkt x=0 gegen 1 tendiert. Dies ist eine normale Zahl, es gibt keine Divergenz an anderen Punkten.

Wir können die gesamte Dichte summieren, das Ergebnis ist eine Zahl (der Normierungsfaktor), durch die wir dividieren und die Einheitswahrscheinlichkeit erhalten, die über den Definitionsbereich verteilt wird. Die Kurve ist normalisiert, die Fläche unter der Kurve = 1. In diesem Fall kann man von einer Wahrscheinlichkeitsdichte sprechen.

Bei den Parametern 0,5 und 1 am Punkt x=0 ist die Situation jedoch anders. Der Grenzwert an diesem Punkt ist unendlich. Wenn sie sich 0 nähert, tendiert sie gegen unendlich. Es ist auch möglich, nach diesem Punkt nicht zu integrieren, das Ergebnis wird sich nicht ändern. Wie kann man auf unendlich normalisieren? Mit dieser Normalisierung wird jede Kurve zu einer Linie.

Wenn wir aber davon ausgehen, dass der Ausdruck nur funktioniert, wenn x>0 ist, dann kann der Ausdruck als Definition der Funktion angesehen werden, da es bei x=0 keine Unsicherheiten gibt. Alle Werte sind endlich und nichts bricht zusammen.

Diese Hypothese erklärt die Ergebnisse, die Mathematica und Matlab liefern: Am Punkt x=0 ist die Dichte=0.

Das war die Frage.

Diese Funktion ist bei (0,inf) definiert. Oder sind Sie damit nicht einverstanden?

Zweitens. Ist es angesichts der Tatsache, dass die Wahrscheinlichkeitsverteilungsfunktion auf dem angegebenen Gebiet perfekt definiert ist, sinnvoll, der Dichtefunktion am Punkt 0 einen beliebigen Wert 0, 1, inf zuzuweisen und einen dieser Werte als Fehler zu bezeichnen?

Nein, ich habe keine Einwände gegen den Wert 0. Werden Sie persönlich, als Autor des Funktionscodes, den Programmierern von R antworten, was Sie über die Fehlerhaftigkeit ihrer Funktion dgamma gesagt haben?
 
Meine Kollegen und ich haben dgamma überprüft, nachdem wir den Artikel gelesen hatten. Ihre Enthüllungen haben keinen Einfluss auf die Ergebnisse der durchgeführten Forschung und können dies auch nicht. Und eine Person, die nicht viel darüber weiß, könnte denken, dass R die Berechnungen fehlerhaft durchführt. Haben Sie es absichtlich zu diesem Zweck getan? Dies gilt nur für dgamma.

Nächste.

Ich habe eine Frage an Sie persönlich. Dirac-Funktion. Delta-Funktion. Ist im Punkt 0 gleich unendlich und in den anderen Punkten gleich Null. Sein Integral über den Bereich -inf bis +inf = 1. Warum sollte es ein Problem mit dem Integral der Gammafunktion in ihrem Bereich geben, wenn die Dichte bei Null gleich unendlich ist?
 
Alexey Burnakov:

Ich habe eine Frage an Sie persönlich. Dirac-Funktion. Delta-Funktion. Sie ist im Punkt 0 gleich unendlich und in den anderen Punkten gleich Null. Sein Integral über den Bereich -inf bis +inf = 1. Warum sollte es ein Problem mit dem Integral der Gammafunktion in ihrem Bereich geben, wenn die Dichte bei Null gleich unendlich ist?

Heißt das, dass eine solche Transformation in die Dirac-Delta-Funktion in Ordnung ist? Warum alles andere?

Sagen Sie mir, was bei pgamma am Punkt x=0 mit der Unendlichkeit passiert, wenn die "richtige" Antwort, wie Sie sagen, in dgamma(0,0.5,1)=+inf gegeben wird.

Zeigen Sie die Funktion und die Integrationsbereiche bei der Berechnung von pgamma grafisch an.

 

Interessante Tatsache

Die Definitionen der Dichtewerte der Gamma-Verteilung in der russischen Übersetzung von

Johnson N.L., Kotz S., Balakrishnan N. Univariate kontinuierliche Verteilungen. Teil 1 und die frühere englische Version sind unterschiedlich:



aber die englische Version hat einen vermuteten Tippfehler aufgrund unterschiedlicher Vorzeichen.

 
Quantum:

Heißt das, dass diese Art der Umwandlung in eine Dirac-Delta-Funktion in Ordnung ist? Was ist dann der Sinn von allem anderen?

Sagen Sie mir, was mit der Unendlichkeit im pgamma-Prozess bei x=0 passiert, wenn die "richtige", wie Sie sagen, Antwort in dgamma(0,0.5,1)=+inf gegeben wurde.
Ich habe die Pgamma-Dokumentation gelesen. So wie ich es verstehe, ist es nicht mit dgamma verwandt.

Nein, ich werde Ihnen nicht sagen, was ich nicht mit Sicherheit weiß.
... Ich habe ein Beispiel gegeben, bei dem für Dichte = unendlich das Integral = 1 ist. Da der Rest der Region mit Nullen belegt ist ...

Und noch eine Frage an Sie.

Ich habe Excel genommen. Dort gibt es auch eine gamma.race Funktion. Sie zählt die Dichte, wenn cumulative = false. Für x = 0 gibt die Funktion einen Wert von #number! Aus der Hilfe:In Excel tritt dieser Fehler auf, wenn eine Formel oder Funktion einen ungültigen numerischen Wert enthält.

Tritt der Fehler auch in Excel auf? Ihrer Logik folgend. Vielleicht können Sie sich auch mit ihnen messen, wenn Sie witzig sind.

Und fügen Sie Ihrem Artikel den Hinweis hinzu, dass die stat-Funktion für die Gamma-Verteilung in Python ähnliche R-Werte liefert, und rufen Sie das Feuilleton wie folgt auf: Es gibt viele Programme, die Ihre Forschung mit Fehlern verderben, und in MT haben wir alle Ihre Fehler gelöst.

Und übrigens: Fügen Sie einen Abschnitt über die in MT5 verwendeten Konventionen für nicht berechenbare Werte hinzu.

Und ich warte darauf, dass meine Frage von R Core moderiert wird und dass sie beantwortet wird. Obwohl ich weiß, was es sein wird... und dann werde ich in den Ruhestand gehen.
Grund der Beschwerde: