Diskussion zum Artikel "Die Kreuzvalidierung und die Grundlagen der kausalen Inferenz in CatBoost-Modellen, Export ins ONNX-Format"

 

Neuer Artikel Die Kreuzvalidierung und die Grundlagen der kausalen Inferenz in CatBoost-Modellen, Export ins ONNX-Format :

In dem Artikel wird eine Methode zur Erstellung von Bots durch maschinelles Lernen vorgeschlagen.

Genauso wie unsere Schlussfolgerungen oft falsch sind und überprüft werden müssen, sollten auch die Ergebnisse der Vorhersagen von Modellen des maschinellen Lernens doppelt überprüft werden. Wenn wir den Prozess der doppelten Kontrolle auf uns selbst anwenden, erhalten wir Selbstkontrolle. Die Selbstkontrolle eines maschinellen Lernmodells besteht darin, seine Vorhersagen in verschiedenen, aber ähnlichen Situationen mehrmals auf Fehler zu überprüfen. Wenn das Modell im Durchschnitt nur wenige Fehler macht, bedeutet dies, dass es nicht übertrainiert ist, aber wenn es häufig Fehler macht, dann stimmt etwas nicht.

Wenn wir das Modell einmal mit ausgewählten Daten trainieren, kann es keine Selbstkontrolle durchführen. Wenn wir ein Modell viele Male auf zufälligen Teilstichproben trainieren und dann die Qualität der Vorhersage auf jeder Teilstichprobe überprüfen und alle Fehler addieren, erhalten wir ein relativ zuverlässiges Bild von den Fällen, in denen es sich tatsächlich als falsch erweist, und den Fällen, in denen es häufig richtig liegt. Diese Fälle können in zwei Gruppen unterteilt und voneinander getrennt werden. Dies ist vergleichbar mit der Durchführung einer Walk-Forward-Validierung oder Kreuzvalidierung, jedoch mit zusätzlichen Elementen. Nur so lässt sich Selbstkontrolle erreichen und ein robusteres Modell erstellen.

Daher ist es notwendig, eine Kreuzvalidierung des Trainingsdatensatzes durchzuführen, die Modellvorhersagen mit den Trainingsmarkierungen zu vergleichen und die Ergebnisse über alle Faltungen (folds) zu mitteln. Die Beispiele, die im Durchschnitt falsch vorhergesagt wurden, sollten als fehlerhaft aus der endgültigen Trainingsmenge entfernt werden. Wir sollten auch ein zweites Modell mit allen Daten trainieren, das gut vorhersagbare Fälle von schlecht vorhersagbaren unterscheidet und es uns ermöglicht, alle möglichen Ergebnisse vollständiger zu erfassen. 

Autor: Maxim Dmitrievsky

 
Если модель в среднем мало ошибается, значит она не переобучена, если же ошибается часто, значит с ней что-то не так.
Allerdings hat dieser Vorschlag einen Haken! Wenn die Modelle nach der Fehlerquote geordnet werden und daraus die besten Modelle genommen werden, ist das wieder Übertraining.
 
Поэтому необходимо провести кросс-валидацию на тренировочном датасете, сравнить предсказания модели с обучающими метками и усреднить результаты по всем фолдам. Те примеры, которые в среднем были предсказаны неверно, следует удалить из финальной обучающей выборки как ошибочные. Еще следует обучить вторую модель уже на всех данных, которая отличает хорошо предсказуемые случаи от плохо предсказуемых, позволяя наиболее полно охватить все возможные исходы. 
Das erste Modell handelt, das zweite Modell klassifiziert (und prognostiziert) schwache Handelsplätze. Richtig?
[Gelöscht]  
fxsaber #:
Das erste Modell handelt, das zweite Modell klassifiziert (und prognostiziert) schwache Handelsplätze. Richtig?
Ja
[Gelöscht]  
fxsaber #:
Allerdings hat dieser Vorschlag einen Haken! Wenn die Modelle nach Fehlerquote geordnet werden und die besten daraus genommen werden, ist das wieder ein Übertraining.
Nun, es sollte immer eine Wahlmöglichkeit geben :)
Die Hauptsache ist, dass alle Modelle +- OOS bestehen.
Dies ist einer von Dutzenden von Algorithmen, der am einfachsten zu verstehen ist. Denn aus dem Feedback der vergangenen Artikel schien es, dass die Leser einfach nicht verstehen, was vor sich geht. Was ist dann der Sinn des Schreibens.
[Gelöscht]  
Interessante Diskussion speziell über statistische Methoden im Verteidigungsministerium, falls jemand etwas dazu zu sagen/zu ergänzen hat.
 

1) Ich würde gerne die Leistung des Modells bei der dritten Probe sehen, die weder eine Spur noch ein Test war und in keiner Weise an der Erstellung und Auswahl des Modells beteiligt war.

2) Die Erkennung von Rauschen und die Neuetikettierung oder Metaetikettierung wurde von Vladimir in seinem Artikel aus dem Jahr 2017 beschrieben, in dem er das NoiseFiltersR-Paket für diesen Zweck verwendete.

Глубокие нейросети (Часть III). Выбор примеров и уменьшение размерности
Глубокие нейросети (Часть III). Выбор примеров и уменьшение размерности
  • www.mql5.com
Эта статья продолжает серию публикаций о глубоких нейросетях. Рассматривается выбор примеров (удаление шумовых), уменьшение размерности входных данных и разделение набора на train/val/test в процессе подготовки данных для обучения.
[Gelöscht]  
mytarmailS #:

1) Ich würde gerne die Leistung des Modells bei der dritten Stichprobe sehen, die weder ein t-Train noch ein Test war und in keiner Weise in die Erstellung und Auswahl des Modells einbezogen wurde.

2) Die Erkennung von Rauschen und die Neuetikettierung oder Metaetikettierung wurde von Vladimir in seinem Artikel aus dem Jahr 2017 beschrieben, in dem er das NoiseFiltersR-Paket für diesen Zweck verwendete.

Der Bot ist dem Artikel beigefügt

Er beschreibt einige von Dutzenden oder Hunderten ähnlicher Methoden, ich habe keine Lust, mich mit jeder einzelnen zu befassen, insbesondere ohne die Ergebnisse zu überprüfen. Ich bin mehr daran interessiert, selbst etwas zu entwerfen und es sofort zu testen. Durch die Umstellung auf ONNX kann dies nun noch schneller geschehen. Der Kernansatz kann leicht hinzugefügt/umgeschrieben werden, ohne den Rest des Codes zu verändern, was ebenfalls sehr cool ist. Dieses Beispiel der Fehlersuche mittels CV hat einen Fehler, der es nicht erlaubt, vollständig über kausale Inferenz zu sprechen, daher ist dies eine Einführung. Ich werde versuchen, es ein anderes Mal zu erklären.

Der Artikel ist auch jetzt schon nützlich, weil er eine fertige Lösung für das Experimentieren mit MO darstellt. Die Funktionen sind optimiert und arbeiten schnell.
 
Toll, ich liebe Ihre Artikel. Ich lernte von ihnen. Ich habe auch ein Material, jetzt auf Test, auf den Export von Random-Forest-Modell in ONNX)Ich werde versuchen, Ihr Modell auch)Ich hoffe, es zu veröffentlichen, ich bin ein Anfänger=).
[Gelöscht]  
Yevgeniy Koshtenko Random-Forest-Modells in ONNX erstellt, das ich jetzt teste. Ich werde auch Ihr Modell ausprobieren und hoffe, dass ich es veröffentlichen kann.)

Mehr MO's sind nur willkommen :) Ich bin auch ein Amateur.

 
So kann man die Reihenfolge nicht umkehren:
.
   int k = ArraySize(Periods) - 1;
   for(int i = 0; i < ArraySize(Periods); i++) {
      f[i] = features[i];
      k--;
   }
Es sollte
f[k] = features[i];
lauten. Warum überhaupt die Reihenfolge umkehren?