Maschinelles Lernen im Handel: Theorie, Modelle, Praxis und Algo-Trading - Seite 1266
![MQL5 - Sprache von Handelsstrategien, eingebaut ins Kundenterminal MetaTrader 5](https://c.mql5.com/i/registerlandings/logo-2.png)
Sie verpassen Handelsmöglichkeiten:
- Freie Handelsapplikationen
- Über 8.000 Signale zum Kopieren
- Wirtschaftsnachrichten für die Lage an den Finanzmärkte
Registrierung
Einloggen
Sie stimmen der Website-Richtlinie und den Nutzungsbedingungen zu.
Wenn Sie kein Benutzerkonto haben, registrieren Sie sich
In diesem Thema, ein Gastbeitrag. Ich bin nur vorbeigekommen, um einen Artikel zu teilen
Dies ist übrigens richtig.
In Anbetracht der Anzahl der Schwachköpfe im Forum (einschließlich deines Lieblingsmagiers Mudo ...) halte ich es nicht mehr für nötig, dieses Thema zu unterstützen, da ich fast keinen Nutzen für mich selbst erhalten habe
Maxim, du irrst dich! Es gibt einen Nutzen für Sie, einen Nutzen in der Formulierung und Darstellung der Aufgaben selbst. Aber ich versuche nicht, Sie zu überzeugen.
Maxim, du irrst dich! Es gibt einen Vorteil für Sie, einen Vorteil, der schon in der Formulierung und der Präsentation der Aufgaben liegt. Aber ich bin nicht überzeugend.
Man kann sehen, dass hier einige klinische Idioten leben, das sind keine Forenmasken, sondern echte Fälle, man sagt ihnen ein Wort und sie sagen dir zwei Worte nach jedem Beitrag.
Ich habe einen obskuren Code im Alglib-Wald gefunden. Vollständiger Code der Funktion zur Berechnung der Kreuz-Etropie aus dataanalysis.mqh:
//+------------------------------------------------------------------+
//| Average cross-entropy (in bits per element) on the test set |
//| INPUT PARAMETERS: |
//| DF - decision forest model |
//| XY - test set |
//| NPoints - test set size |
//| RESULT: |
//| CrossEntropy/(NPoints*LN(2)). |
//| Zero if model solves regression task. |
//+------------------------------------------------------------------+
static double CDForest::DFAvgCE(CDecisionForest &df,CMatrixDouble &xy,
const int npoints)
{
//--- create variables
double result=0;
int i=0;
int j=0;
int k=0;
int tmpi=0;
int i_=0;
//--- creating arrays
double x[];
double y[];
//--- allocation
ArrayResizeAL(x,df.m_nvars);
ArrayResizeAL(y,df.m_nclasses);
//--- initialization
result=0;
for(i=0;i<=npoints-1;i++)
{
for(i_=0;i_<=df.m_nvars-1;i_++)
x[i_]=xy[i][i_];
//--- function call
DFProcess(df,x,y);
//--- check
if(df.m_nclasses>1)
{
//--- classification-specific code
k=(int)MathRound(xy[i][df.m_nvars]);
tmpi=0;
for(j=1;j<=df.m_nclasses-1;j++)
{
//--- check
if(y[j]>(double)(y[tmpi]))
tmpi=j;
}
//--- check
if(y[k]!=0.0)
result=result-MathLog(y[k]);
else
result=result-MathLog(CMath::m_minrealnumber);
}
}
//--- return result
return(result/npoints);
}
Das rot markierte Codefragment berücksichtigt etwas(tmpi), das in keiner Weise verwendet wird. Warum ist sie dann enthalten?
Laut wikipedia sollte es lautenEntweder fehlt etwas oder der Code ist nicht vollständig bereinigt.
Im Allgemeinen begann ich, mich mit dieser Funktion zu beschäftigen, weil ich 1 Baum suchen wollte. Und wenn ich die Anzahl der Bäume im Wald = 1 einstelle, sehe ich, dass alle Fehler zwischen 0 und 1 liegen, und dieser Fehler von 100 bis 300 + auftritt.
Versteht jemand etwas von Kreuzentropie - ist der Code überhaupt korrekt, oder wird etwas rückgängig gemacht?
Der Wert im Allgemeinen auf Unendlichkeit kann bei der Berechnung logloss, wenn Null-Wahrscheinlichkeit für die richtige Klasse vorhergesagt wird, weil alle anderen Klassen außer es die Formel mit Null-Koeffizient eingeben, und es scheint ein Versuch, diese Panne zu beheben - in tmpi in der Schleife finden Sie die Klasse, die in einer bestimmten Probe hat die höchste Wahrscheinlichkeit Wert, vielleicht wollte, um die Formel hinzufügen, aber offenbar nicht durchdacht:)
Insgesamt ist 1 tmpi vorhanden und wird verwendet, 2 weitere sind vorhanden, werden aber nicht verwendet.
Im Großen und Ganzen beeinträchtigt sie den Betrieb nicht.
tmpi wird nur in 1 der 5 Fehlerfunktionen verwendet. Offenbar wurde sie als Attrappe für andere Funktionen verwendet, aber vergessen, sie bei anderen zu entfernen.
Insgesamt ist 1 tmpi vorhanden und in Gebrauch, 2 weitere sind vorhanden, werden aber nicht benutzt.
Im Allgemeinen wird der Betrieb dadurch nicht beeinträchtigt.
Was ich meine, ist, dass eine gute Formel für die Fehlerberechnung die Wahrscheinlichkeitsverteilung über alle Klassen berücksichtigen könnte, anstatt nur eine korrekte Klasse.
Wenn jedoch eine der Stichproben eine Wahrscheinlichkeit von Null für eine korrekte Klasse hat, dann fliegt alles ins Unendliche.
Offenbar bevorzuge ich deshalb die Regression mit einem quadratischen Fehler:)
Ich will damit sagen, dass eine gute Fehlerberechnungsformel die Wahrscheinlichkeitsverteilung über alle Klassen berücksichtigen könnte, nicht nur über eine richtige Klasse.
Nun sollen Kesha (Enkel von SanSanYch) und Alyosha, der von den Investoren bestraft wurde, diesen Thread führen. Es wird fair sein.
Es ist sinnvoller, dieses Thema aufzugeben und ein neues, angemesseneres Thema mit anderen verwandten Themen zu beginnen.
Übrigens habe ich bei den Preisen eine Normalverteilung festgestellt. Ich habe bereits in Tip geschrieben, dass alle Anomalien auf eine "falsche" Datenverarbeitung zurückzuführen sind - wir machen das selbst).
Ich werde es in den nächsten Tagen oder früher in Pythons Thread posten.
Es ist sinnvoller, dieses Thema aufzugeben und ein neues, angemesseneres Thema mit anderen verwandten Themen zu beginnen.
Übrigens habe ich bei den Preisen eine Normalverteilung festgestellt. Ich habe bereits in Tip geschrieben, dass alle Anomalien auf eine "falsche" Datenverarbeitung zurückzuführen sind - wir machen das selbst).
Ich werde es in den nächsten Tagen oder früher in den Python-Thread stellen.
Leider gibt es in diesem Forum nicht genügend Leute auf dem Niveau von Matemat, Northwind und Prival, so dass all diese Themen keine Zukunft haben. IMHO.