Diskussion zum Artikel "Metamodelle für maschinelles Lernen und Handel: Ursprünglicher Zeitpunkt der Handelsaufträge" - Seite 13

 
Maxim Dmitrievsky #:
Dabei sind x[0] Wahrscheinlichkeiten für die Nullklasse, während das Modell Wahrscheinlichkeiten für zwei Klassen angibt. Das heißt, wenn die Wahrscheinlichkeit für die Nullklasse kleiner als 0,5 ist, dann wird diese Klasse zuerst vorhergesagt. Also ist Wahr == 1 und umgekehrt. Es liegt also kein Fehler vor.

Hm, von so etwas habe ich noch nie gehört, die Wahrscheinlichkeit kann zwischen 0 und 1 liegen , mehr als 0,5 - "1", ansonsten ist "0" der Standardwert bei der binären Klassifizierung. Obwohl der Übersetzer seltsam übersetzt:
"

  • Ein Objekt ist ein eindimensionales numpy.ndarray mit Wahrscheinlichkeiten für jede Klasse.

"

Aber wie erhält man dann die Wahrscheinlichkeit für die Klasse "1"? Es kann nicht in einem eindimensionalen Array separate Wahrscheinlichkeiten für jede Klasse geben, oder ich verstehe etwas nicht....

 
Maxim Dmitrievsky #:
Vielleicht sind in Ihrem Datensatz die Bezeichnungen verkehrt herum

"1" ist das richtige Geschäft/rentabel/gut. Sollte es andersherum sein?

 
Aleksey Vyazmikin #:

"1" ist das richtige Geschäft/rentabel/gut. Sollte es anders sein?

Nein, ich meine die Käufe und Verkäufe in Ihrem Datensatz, was ist eine Null und was ist eine 1. Kaufen oder verkaufen.
 
Aleksey Vyazmikin #:

Hm, ich habe nicht gehört, über eine solche Wahrscheinlichkeit kann es von 0 bis 1, mehr als 0,5 - "1", sonst "0" standardmäßig in der binären Klassifizierung sein . Obwohl der Übersetzer seltsam übersetzt:
"

  • Ein Objekt ist ein eindimensionales numpy.ndarray mit Wahrscheinlichkeiten für jede Klasse.

"

Aber wie erhält man die Wahrscheinlichkeit für die Klasse "1"? Es kann keine separaten Wahrscheinlichkeiten für jede Klasse in einem eindimensionalen Array geben, oder ich verstehe etwas nicht.....

Wenn die Wahrscheinlichkeit für Klasse 0 < 0,5 ist, dann wird Klasse 1 vorhergesagt. Dieser Code übersetzt die Wahrscheinlichkeiten einfach zurück in Klassenbezeichnungen für den Tester. Dort ist alles in Ordnung.
 
Maxim Dmitrievsky #:
Nein, ich meine Kauf und Verkauf in Ihrem Datensatz, was ist Null und was ist 1. Kaufen oder verkaufen.

Es gibt bereits einen Aufschlag auf das Finanzergebnis. In der Abschluss-Spalte gebe ich das Ergebnis des Handels an. D.h. für das Training ist es nicht wichtig, zu kaufen oder zu verkaufen.

Maxim Dmitrievsky #:
Wenn die Wahrscheinlichkeit für Klasse 0 < 0,5 ist, wird Klasse 1 vorhergesagt. Dieser Code übersetzt die Wahrscheinlichkeiten einfach in Klassenbezeichnungen für den Tester zurück. Dort ist alles in Ordnung.

Ich will ja nicht zwanghaft klingen, aber trotzdem, drei Optionen:
1. Ich habe es die ganze Zeit falsch gemacht und angenommen, dass die Wahrscheinlichkeit der Klasse "1" in CatBoost geschätzt wird.
2. Ich verstehe Ihren Code nicht.
3. Sie liegen falsch in der Annahme, dass eine Wahrscheinlichkeit von weniger als 0,5 als "1" eingestuft werden sollte.

 
Aleksey Vyazmikin #:

Dort basiert der Aufschlag bereits auf dem finanziellen Ergebnis. In die Abschluss-Spalte trage ich das Ergebnis des Geschäfts ein. D.h. für die Ausbildung ist es nicht wichtig, zu kaufen oder zu verkaufen.

Ich will mich nicht aufdrängen, aber trotzdem drei Möglichkeiten:
1. Ich habe es die ganze Zeit falsch gemacht und angenommen, dass die Wahrscheinlichkeit der CatBoost-Klasse "1" ausgewertet wird.
2. Ich verstehe Ihren Code nicht.
3. Sie gehen fälschlicherweise davon aus, dass eine Wahrscheinlichkeit von weniger als 0,5 als "1" eingestuft werden sollte.

Ich verstehe nichts, die Spalte Close sollte die Schlusskurse sein.

Die Gesamtwahrscheinlichkeit ist immer gleich eins. Wenn die Wahrscheinlichkeit einer Klasse kleiner als 0,5 ist, dann wird eine andere Klasse vorhergesagt.

 
Maxim Dmitrievsky #:

Ich verstehe das nicht, die Spalte Close sollte die Schlusskurse enthalten.

Schauen Sie sich den Code an, den ich beigefügt habe. Vielleicht ist es dort klarer. Ich habe nicht für jeden Balken eine Klassifizierung.

Maxim Dmitrievsky #:

Die Gesamtwahrscheinlichkeit ist immer gleich eins. Wenn die Wahrscheinlichkeit für eine der Klassen kleiner als 0,5 ist, wird eine andere Klasse vorhergesagt.

Wenn im Code die Wahrscheinlichkeit 0,4 beträgt, erhalten Sie die Klasse "1". Und warum?

 
Aleksey Vyazmikin #:

Werfen Sie einen Blick auf den beigefügten Code. Es könnte klarer sein. Ich habe nicht für jeden Balken eine Klassifizierung.

In dem Code ergibt eine Wahrscheinlichkeit von 0,4 die Klasse "1". Und warum?

Kann ich einen gezippten Datensatz bekommen? Ich habe kein rar.

weil die Klasse-1-Wahrscheinlichkeit 0,6 beträgt.

Im Allgemeinen sollte dieser Algorithmus die Daten genau so akzeptieren, wie es dort gemacht wird.
 
Maxim Dmitrievsky #:

Kann ich einen gezippten Datensatz bekommen? Ich habe kein rar.

Ich kann sie herunterladen. Obwohl es Befehlszeilenunterstützung für mac.... gibt.

Maxim Dmitrievsky #:
weil die Wahrscheinlichkeit der Klasse 1 0,6 ist.
predict_proba p
[[0.74864123 0.25135877]
 [0.81097595 0.18902405]
 [0.81477042 0.18522958]
 ...
 [0.83347862 0.16652138]
 [0.84273186 0.15726814]
 [0.84617344 0.15382656]]

Ich konnte es nicht verstehen, bis ich es ausgedruckt habe - es gibt einen Unterschied in der Konsolenversion in dieser Hinsicht.

Dann macht alles Sinn, und ich kommentierte den Code des Flip aus, so dass die Logik der Markup.

#//-------Wiederherstellung von zuvor rückgängig gemachten Markierungen 
            #if  pred_meta>0.5:pred_meta=0
            #else :pred_meta=1
            #if  pred>0.5:pred=0
            #else :pred=1

#//-------Die Neuaufteilung vornehmen und den Saldo zählen
            if pred_meta==1:#Мета  модель детектировала примеры как класс "1"
                if pred < 0.5 and Target_100<0.0:
                    meta_labels[i] = 1 
                if pred < 0.5 and Target_100>0.0:
                    meta_labels[i] = 0 
                if pred >= 0.5 and Target_100>0.0:
                    meta_labels[i] = 1
                    report.append(report[-1]+Target_100)
                if pred >= 0.5 and Target_100<0.0:
                    meta_labels[i] = 0
                    report.append(report[-1]+Target_100)
            if pred_meta==0:#Мета  модель детектировала примеры как класс "0"
                if pred < 0.5 and Target_100<0.0:
                    meta_labels[i] = 1 
                if pred < 0.5 and Target_100>0.0:
                    meta_labels[i] = 0 
                if pred >= 0.5 and Target_100>0.0:
                    meta_labels[i] = 1                    
                if pred >= 0.5 and Target_100<0.0:
                    meta_labels[i] = 0
 
Maxim Dmitrievsky #:
Kann ein gezippter Datensatz bereitgestellt werden?

Link