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

 

Ich möchte meine Meinung hinzufügen: In den letzten Tagen habe ich auch darüber nachgedacht, die Anzahl der Eingabevariablen zu reduzieren, um den Optimierungsprozess zu beschleunigen. Und ich muss sagen, dass ich in diesen Tagen einige Erfolge beim Aussieben von unnötigem Input erzielt habe.

Frage: Welche Eingabevariablen sollten aus der Trainingsstichprobe entfernt werden, da sie noise???? sind?

Eigentlich ist diese Frage nicht trivial, wenn wir wüssten, welche Eingaben Rauschen sind und welche nicht. Es wäre einfach, ein Modell zu bauen. Aber wenn alle Eingaben auf die eine oder andere Weise mit der Ausgabe verbunden sind. Was dann????? Welche sind zu entfernen?

Für mich ist die Antwort sehr einfach.... Sie brauchen nur die Eingaben beizubehalten, die eine Normalverteilungsregel haben. Wenn ein Histogramm eine Normalverteilung aufweist und der Mittelpunkt in der Mitte des Bereichs liegt. Dies sind die Variablen, die für die Ausbildung nützlich sein können. Ich will damit nicht sagen, dass es bei solchen Variablen einen Output-Alpha gibt. Vielleicht ist sie nicht da. Aber die Suche selbst wird gründlicher sein, und bei solchen Variablen hat der Algorithmus mehr Chancen, sich durchzusetzen und die Zahl der Eingaben zu erhöhen. Hier ist ein Beispiel:

Diese Eingabe wird als gut angesehen. Da es sich um eine Normalverteilung handelt und der zentrale Teil des Histogramms in der Mitte des Bereichs liegt

Diese Daten weisen jedoch eine schiefe Verteilung mit Ausreißern außerhalb des Haupthistogramms auf. Dieses Histogramm zeigt, dass die Daten zu einer Seite hin verzerrt sind, was bei der Erstellung des Modells wahrscheinlich nicht von Nutzen ist

In der Anfangsphase der Auswahl von Inputs können wir die Bedeutung eines Inputs für den Output nicht beurteilen. Denn das ist die Aufgabe des Optimierers. In der Anfangsphase können wir nur die Verteilung der Variablen im Verhältnis zu Null beurteilen. Und wenn diese Verteilung normal ist (die Daten sind gleichmäßig auf einer Seite und auf der anderen in Bezug auf die Null verteilt), dann hat der Optimierer höchstwahrscheinlich mehr Auswahl als bei schrägen Daten in Bezug auf die Null, bei denen die meisten Daten im negativen Bereich liegen oder umgekehrt.

Es geht also so....

 

Es kommt darauf an, für welches Modell man sie auswählt :) Wenn das Modell nach dem Entfernen eines uninformativen Merkmals nicht viel an Genauigkeit verliert, dann braucht man sie nicht. Sie löschen es, trainieren es erneut und sehen, ob es wieder etwas Zusätzliches gibt.

Und wenn Sie ein Regressionsmodell mit einem nicht-stationären Prozess am Ausgang haben, werden Sie mit diesem Ansatz alles ruinieren, weil es auf normalverteiltem Rauschen neu trainiert wird

 
Maxim Dmitrievsky:

Es kommt darauf an, für welches Modell man sie auswählt :) Wenn das Modell nach dem Entfernen eines uninformativen Merkmals nicht viel an Genauigkeit verliert, dann braucht man sie nicht. Sie löschen es, trainieren es erneut und sehen, ob es wieder etwas Zusätzliches gibt.

Und wenn Sie ein Regressionsmodell mit einem nicht-stationären Prozess am Ausgang haben, werden Sie mit diesem Ansatz umgekehrt alles ruinieren, weil es auf normalverteiltes Rauschen umlernen wird


Klassifizierung in Bezug auf Null. Für diese Zwecke ist dieser Ansatz IMHO genau richtig!

 
Mihail Marchukajtes:

Diese Daten hingegen weisen eine schiefe Verteilung mit Ausreißern außerhalb des Haupthistogramms auf. Dieses Histogramm deutet darauf hin, dass die Daten einseitig verzerrt sind, was für die Modellerstellung kaum von Nutzen sein dürfte

In Vladimirs Artikel geht es um das Entfernen von Ausreißern. Wenn die Ausreißer in Ihrer Abbildung 2 entfernt werden, erhalten Sie eine normalere Verteilung.

Und es gibt auch eine Zentrierung der Eingabedaten - das wird die Situation noch verbessern.

 
elibrarius:

In Vladimirs Artikel geht es um das Entfernen von Ausreißern. Wenn die Ausreißer in Ihrer Abbildung 2 entfernt werden, erhalten Sie eine normalere Verteilung.

Und dann gibt es noch die Eingabezentrierung - sie wird die Dinge noch weiter verbessern.


Was tun wir, wenn dieser Ausreißer in den neuen Daten auftaucht? Wie interpretiert das Modell sie?

Das Entfernen eines Ausreißers aus den Daten bedeutet, dass der gesamte Eingabevektor bei einem bestimmten Ausreißer entfernt werden muss, und was ist, wenn es in diesem Vektor wichtige Daten bei anderen Eingaben gibt? Wenn die Art der Eingabe für solche Ausreißer anfällig ist, ist es besser, diese Eingabe überhaupt nicht zu berücksichtigen. IMHO.

 
Mihail Marchukajtes:

Einstufung relativ zu Null. Für diese Zwecke ist dieser Ansatz IMHO genau richtig!


Ja, wenn die Ausgaben ungefähr nach dem gleichen Gesetz verteilt sind, wenn nicht - die gleiche Umschulung

 
elibrarius:

In Vladimirs Artikel geht es um das Entfernen von Ausreißern. Wenn die Ausreißer in Ihrer Abbildung 2 entfernt werden, erhalten Sie eine normalere Verteilung.

Und dann ist da noch die Zentrierung der Eingabedaten - sie wird die Dinge noch weiter verbessern.


Das Entfernen von Ausreißern ist eine statistische Maßnahme oder eine Krücke (wie der Wunsch, alles stationär zu machen), die die Vorhersagen auf dem Devisenmarkt erheblich verschlechtern und das gesamte System zum Scheitern bringen kann (funktioniert nur, wenn der Markt normal verteilt ist).

Sie müssen verstehen, wo NS verwendet wird und zu welchem Zweck... und nicht einfach tun, was Sie aus einem Buch wollen :)

Vladimir hat keinen Beweis für die Robustheit seiner Modelle... nur sehr grobe Tests von Modellen im gleichen R

Ich weiß also nicht, was ich in diesem Leben glauben soll... alles muss doppelt geprüft werden.

 
Maxim Dmitrievsky:

Ja, wenn die Ausgaben in etwa nach dem gleichen Gesetz verteilt sind, wenn nicht, ist es das gleiche Übertraining


Nun, ich bilanziere die Ausgabe immer für eine gleiche Anzahl von Klassen "0" und "1". Das heißt, ich habe den Ausgang symmetrisch und nehme Eingänge mit einer Normalverteilung relativ zu Null. Der Optimierer muss mehrmals laufen, aber in der Regel ist seine Leistung umso besser, je mehr Eingaben im Modell verwendet werden. Daher wähle ich das Modell mit den besten Parametern und den besten Ergebnissen auf der Teststrecke. Als Nächstes werde ich Boosting und anderes Zeug verwenden...

 
Mihail Marchukajtes:

Was ist zu tun, wenn dieser Ausreißer in den neuen Daten auftaucht? Wie interpretiert das Modell sie?

Das Entfernen des Ausreißers aus den Daten bedeutet, dass der gesamte Eingabevektor für einen bestimmten Ausreißer entfernt wird, für den Fall, dass in diesem Vektor wichtige Daten für andere Eingaben enthalten sind. Wenn die Art der Eingabe für solche Ausreißer anfällig ist, ist es besser, diese Eingabe überhaupt nicht zu berücksichtigen. IMHO.

Bei neuen Daten werden auch Ausreißer entfernt, und zwar um den beim Training ermittelten Bereich. Angenommen, Sie haben während des Trainings von -100 auf +100 entfernt, sich daran erinnert - und bei den neuen Daten um dieselben Stufen entfernt. Ohne Ausreißer zu entfernen, verschob sich der Mittelpunkt der gelöschten Daten ständig und wurde mit sich selbst eine Woche zuvor nicht mehr vergleichbar.

Und Ausreißer treten nur im Moment von Neuigkeiten oder außergewöhnlichen Ereignissen auf, aber jedes Mal ist die Stärke dieser Ausreißer anders. Ich habe für mich selbst entschieden, dass es besser ist, sie zu verwerfen, und Vladimir, ich bin nicht selbst darauf gekommen, anscheinend wurde es von vielen Leuten durch ihre Forschung bestätigt.

 
Mihail Marchukajtes:


Nun, ich bilanziere die Ausgabe immer für eine gleiche Anzahl von Klassen "0" und "1". Das heißt, ich bilanziere den Output und nehme Inputs mit einer Normalverteilung relativ zu Null. Der Optimierer muss mehrmals laufen, aber in der Regel ist seine Leistung umso besser, je mehr Eingaben im Modell verwendet werden. Daher wähle ich das Modell, das am besten parametrisiert ist und das beste Ergebnis auf der Teststrecke erzielt. Im weiteren Verlauf werden wir einige Bohrungen und andere Optimierungen vornehmen...


Es ist also doch nicht jPredictor? :)