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

 
Mihail Marchukajtes:

Ein Fehler ist nicht einfach ein Fehler. Ein kleiner Fehler kann eine große Wirkung haben.

Und die NS wird nicht gebeten, sich wiederholende Daten zu erfassen. Sie wird aufgefordert, verborgene Muster zu erkennen, um in Ermangelung von sich wiederholenden Daten das richtige Ergebnis zu erhalten. Verallgemeinerung verstehen. Wenn wir einen endlichen Bereich von Daten haben, aber nur 50 % dieser Daten haben. Das Netzwerk lernt, und wenn es ein Muster erkennt, kann es den Rest der Daten, die es nicht gesehen hat, aufbauen. Es ist, als würde man altes Videomaterial mit fehlenden Pixeln rekonstruieren, das das Netz selbst wiederherstellt.

Es ist also ein statistischer Ansatz! Ich habe zum Beispiel 20 Fotos von verschiedenen Dreiecken. Bei der 21. fehlt dem Dreieck die Hypotenuse. Anhand der gesammelten Statistiken kann ich leicht feststellen, dass es sich um ein nicht gezeichnetes Dreieck handelt (auf jedem Foto ist ein Dreieck zu sehen). Das heißt, ein Fehler bei der Zeichnung des Dreiecks ist nicht kritisch, weil ich die Statistik bereits als Ganzes habe. Gilt dieses Prinzip nicht auch für NS?
 
Tag Konow:
Nun, das ist ein statistischer Ansatz! Ich habe zum Beispiel 20 Bilder von verschiedenen Dreiecken. Bei der 21. fehlt dem Dreieck die Hypotenuse. Anhand der gesammelten Statistiken kann ich leicht feststellen, dass es sich um ein nicht gezeichnetes Dreieck handelt - auf jedem Foto ist ein Dreieck abgebildet. Das heißt, ein Fehler in der Dreieckszeichnung ist für mich nicht kritisch, denn ich habe bereits Statistiken im Allgemeinen. Gilt dieses Prinzip nicht auch für NS?
Na ja, ungefähr, wenn man nicht bedenkt, dass auf 21 Fotos nur eine Ecke eingezeichnet ist und das Dreieck dort nicht in Frage kommt...
 
Mihail Marchukajtes:
Nun ja, grob gesagt, es sei denn, man zählt, dass auf den 21 Bildern nur eine Ecke eingezeichnet ist und von einem Dreieck nicht die Rede ist...
So funktioniert eine Vorhersage auf der Grundlage von Statistiken. Ich sage voraus, dass es sich um ein ungezeichnetes Dreieck handelt, das auf dem nächsten Foto hohl sein wird.
 
Ich sage Ihnen Folgendes. Alles kommt mit der Erfahrung, und im Verteidigungsministerium gibt es zwei Arten von Erfahrung, theoretische und praktische, und sie sind sehr unterschiedlich, glauben Sie mir. Je mehr man praktiziert, desto mehr beginnt man die Philosophie des Fachs zu verstehen. Das war's, Kartoffeln in der Selbstisolation zu suchen, sieht nach einer Aufgabe aus :-)(
 

Um das Wesen und die theoretischen Grundlagen neuronaler Netze zu verstehen, ist die Kenntnis der Kolmogorow-, Arnold- und Hecht-Nielson-Theorie unerlässlich.

Für die Praxis ist dieses Wissen nicht unbedingt erforderlich, aber ein allgemeines Verständnis kann nicht schaden.

 
elibrarius:

Ich habe Ihnen einen Link gegeben, über den Sie die Aufteilung der JOT-Daten einsehen können. Dort wird das vollständige Modell in eine Datei hochgeladen. Dann werden die Splits daraus gelesen.

Sicherlich können bereits asymmetrische Bäume entladen werden?


elibrarius:

Beim Boosten sind per Definition alle Bäume wichtig. Jeder nachfolgende Baum verfeinert alle vorherigen. Wenn man einen Baum in der Mitte verwirft, dann arbeiten alle folgenden mit falschen Daten - sie müssen neu trainiert werden, ohne den verworfenen Baum zu berücksichtigen. Der erste Baum wird dem verworfenen Baum sehr nahe kommen.

Nein, das ist nicht ganz richtig. Wenn das Modell fertig ist, befindet sich darin ein Haufen Baumblätter, was eine Wahrscheinlichkeit von nahezu 0,5 ergibt - was im Grunde genommen Unsinn ist.


elibrarius:

Ja. Die einzelnen Blätter im Binning sind unvollständig, da sie durch Antworten von Blättern aus anderen Veredelungsbäumen ergänzt werden. Und nur die kumulierten Antworten von z.B. 100 Bäumen ergeben die richtige Antwort.

Der Versuch, aus einem einzigen Blatt des Boosting-Modells etwas Zuverlässiges zu erhalten, ist unmöglich.
Beim Boosten werden alle 100 Antworten von 100 Bäumen addiert, wobei jede Antwort z. B. insgesamt 0,01 = 1 ergibt. Der Wert von 1 Blatt = 0,01 - was wollen Sie damit erreichen? Es ist nichts drin. Nur die Summe der 100 Blätter ergibt die richtige Antwort.
In der Tat ist der 1. Baum stark und ergibt z. B. 0,7, die übrigen bringen die Summe näher an 1. Wenn nur die Blätter des ersten Baumes separat betrachtet werden, sind sie meines Erachtens jedoch schwächer als jeder Baum aus dem Zufallswald, da sie weniger tief sind.
Der Zufallswald hat einen Durchschnitt, z.B. jedes Blatt von 100 Bäumen = 1, der Durchschnitt auch = 1. In ihm sind die Füchse vollständig, aber mit zufälligen Abweichungen. Aber eine Menge von 100 Antworten ergibt den Durchschnitt als einigermaßen genaue Antwort.

Es ist möglich, nützliche Informationen aus einem einzigen Baum zu gewinnen, aber das ist selten.

Selbst der erste Baum wird nicht der beste sein.

Boosting ist schnell, aber man muss die Modelle sorgfältig auswählen, und das erfordert eine große Stichprobe, was ein Problem darstellt.

 
Aleksey Nikolayev:

Um das Wesen und die theoretischen Grundlagen neuronaler Netze zu verstehen, ist die Kenntnis der Kolmogorow-, Arnold- und Hecht-Nielson-Theorie unerlässlich.

Für die Praxis ist dieses Wissen nicht unbedingt erforderlich, aber ein allgemeines Verständnis kann nicht schaden.

Spc.

Das Fehlen einer strengen Theorie zu diesen neuronalen Netzmodellen hindert nicht daran, die Möglichkeiten ihrer Anwendung auf praktische Probleme zu erforschen.

 
Aleksey Vyazmikin:

Sicherlich können bereits asymmetrische Bäume entladen werden?

Ich habe ein Beispiel ausprobiert und grow_policy='Lossguide' hinzugefügt.
Hier ist ein Stück Modell, das Spaltungen enthält:

'split': {'border': 16.049999237060547, 'float_feature_index': 1, 'split_index': 0, 'split_type': 'FloatFeature'}}, 'right': {'left': {'value': 0.05454545454545454, 'weight': 153}, 'right': {'value': 0.8265895953757225, 'weight': 161}, 'split': {'border': 5.999999046325684, 'ctr_target_border_idx': 0, 'split_index': 4, 'split_type': 'OnlineCtr'}}, 
'split': {'cat_feature_index': 1, 'split_index': 1, 'split_type': 'OneHotFeature', 'value': -845129958}}, {'left': {'left': {'value': -0.43103007753084105, 'weight': 444}, 'right': {'value': -0.10906568919445614, 'weight': 133}, 'split': {'border': 6.999999046325684, 'ctr_target_border_idx': 0, 'split_index': 2, 'split_type': 'OnlineCtr'}}, 'right': {'left': {'value': 0.02835585997337218, 'weight': 163}, 'right': {'value': 0.5713236394502054, 'weight': 151},
'split': {'border': 5.999999046325684, 'ctr_target_border_idx': 0, 'split_index': 3, 'split_type': 'OnlineCtr'}}, 
'split': {'cat_feature_index': 1, 'split_index': 1, 'split_type': 'OneHotFeature', 'value': -845129958}

Auch bei Depthwise gibt es Spaltungen. Aber das ist in Python, ich habe noch keine Möglichkeit gesehen, ein Modell in R zu entladen. Aber ich denke, es ist möglich, das Modell in R im internen Format zu speichern, es in Python zu öffnen und es in JSON zu entladen. Und davon brauchen Sie nur noch

 
Kolleginnen und Kollegen. Das Thema ist interessant, aber ich verstehe den Unterschied zwischen maschinellem Lernen und einfacher Parameteroptimierung in einem Prüfgerät nicht? Schließlich wird das Ziel in etwa dasselbe sein - eine Entscheidung zum Einstieg (Ausstieg) in den Markt zu treffen, wenn die Einstiegs- (Ausstiegs-) Parameter übereinstimmen. Beide Methoden funktionieren nicht mehr, wenn sich der Markt stark verändert. Sie müssen neu geschult und optimiert werden. Kurz und bündig und ohne Philosophie.
 
Yan Barmin:
Kolleginnen und Kollegen. Das Thema ist interessant, aber ich verstehe den Unterschied zwischen maschinellem Lernen und einfacher Parameteroptimierung in einem Tester nicht? Denn der Zweck ist in etwa derselbe - die Entscheidung, in den Markt einzusteigen (auszusteigen), wenn die Einstiegs- (Ausstiegs-) Parameter übereinstimmen. Beide Methoden funktionieren nicht mehr, wenn sich der Markt stark verändert. Sie müssen neu geschult und optimiert werden. Kurz und bündig und ohne Philosophie.

Der Unterschied liegt in der Flexibilität des Werkzeugs. Das neuronale Netz kann sich an jede Serie anpassen. Betrachten Sie das folgende Polynom. Sowohl die Breite der Koeffizienten als auch ihre Anzahl können völlig unterschiedlich sein.

double getBinaryClassificator1(double v0, double v1, double v2, double v3, double v4, double v5, double v6, double v7, double v8, double v9, double v10) {
   double x0 = 2.0 * (v0 + 2.6721302849319) / 5.70376880500565 - 1.0;
   double x1 = 2.0 * (v1 + 0.862195874260524) / 4.318953971518134 - 1.0;
   double x2 = 2.0 * (v2 + 0.636958350251177) / 2.893126110958697 - 1.0;
   double x3 = 2.0 * (v3 + 1.28131145039971) / 4.47439455086403 - 1.0;
   double x4 = 2.0 * (v4 + 1.40655622673661) / 3.84454848827483 - 1.0;
   double x5 = 2.0 * (v5 + 1.05792133319783) / 4.0361119526354905 - 1.0;
   double x6 = 2.0 * (v6 + 0.960632890559664) / 2.810809591513934 - 1.0;
   double x7 = 2.0 * (v7 + 2.50474545671368) / 4.50657217846072 - 1.0;
   double x8 = 2.0 * (v8 + 3.37124943164126) / 5.00153555828254 - 1.0;
   double x9 = 2.0 * (v9 + 1.01434366581359) / 3.81959911946484 - 1.0;
   double x10 = 2.0 * (v10 + 0.997401251919643) / 2.959840023725593 - 1.0;
   double decision = 0.0455519244734931 * sigmoid(x0 + x5 + x8)
  + 0.01733841684822077 * sigmoid(x5 + x7 + x8)
  + 0.21269063180827888 * sigmoid(x0 + x5 + x7 + x8)
  + 0.02875816993464052 * sigmoid(x0 + x8 + x9)
  -0.025853304284676835 * sigmoid(x0 + x4 + x8 + x9)
  + 0.021169208424110384 * sigmoid(x0 + x7 + x10)
  + 0.07184095860566449 * sigmoid(x0 + x8 + x10)
  + 0.03769063180827887 * sigmoid(1.0 + x0 + x3 + x5 + x8)
  -0.03179012345679012 * sigmoid(1.0 + x3 + x6 + x9)
  + 0.02750544662309368 * sigmoid(1.0 + x0 + x5 + x7 + x9)
  + 0.1463507625272331 * sigmoid(1.0 + x1 + x2 + x8 + x9)
  + 0.012799564270152506 * sigmoid(1.0 + x0 + x2 + x10)
  + 0.1864560639070443 * sigmoid(1.0 + x0 + x1 + x5 + x8 + x10)
  + 0.07494553376906318 * sigmoid(1.0 + x0 + x2 + x5 + x8 + x10)
  + 0.014669571532316631 * sigmoid(1.0 + x2 + x5 + x6 + x8 + x10)
  + 0.05266884531590414 * sigmoid(1.0 + x0 + x1 + x7 + x8 + x10)
  + 0.04566085693536674 * sigmoid(1.0 + x0 + x1 + x2 + x8 + x9 + x10)
  + 0.061546840958605666 * sigmoid(1.0 + x0 + x2 + x4 + x8 + x9 + x10);
   return decision;
}

Stellen Sie sich die Anzahl der Varianten vor, kein Multi-Parameter-Expert Advisor kann mit einer solchen Flexibilität aufwarten. Man sagt ihnen auch nach, dass sie zur Verallgemeinerung fähig sind, aber das ist nicht sicher :-)