Überprüft und Gerüst - viel schneller als NS (4 min.), und das Ergebnis ist etwa die gleiche. Interessant ist auch, dass die lineare Regression sogar noch schneller zu den gleichen Ergebnissen führt. Wie jemand hier schrieb - es geht nur um Funktionen.
Nun, das ist die Hauptsache, und das Spiel mit verschiedenen Modellen und Taschen wird nicht eine große Steigerung geben :)
Soweit ich verstanden habe, kann man dort 1-2 Epochen einstellen, weil es fast immer beim ersten Mal konvergiert... vielleicht war das eine Auslassung? obwohl ich es schon lange nicht mehr benutzt habe, könnte ich verwirrt sein.
elibrarius: Ich habe nirgendwo eine Grenze in Epochen gesehen
mlptrainlm-Funktion
/************************************************************************* Training neuronaler Netze mit modifiziertem Levenberg-Marquardt mit exakter Hessian-Berechnung und Regularisierung. Das Unterprogramm trainiert das neuronale Netz mit Neustarts aus zufälligen Positionen. Der Algorithmus eignet sich gut für kleine und mittlere Probleme (Hunderte von Gewichten). EINGABEPARAMETER: Netz - neuronales Netz mit initialisierter Geometrie XY - Trainingsmenge NPunkte - Größe der Trainingsmenge Decay - Gewichtsabnahmekonstante, >=0.001 Abklingterm 'Abkling*|||Gewichte||^2' wird zur Fehlerfunktion hinzugefügt. Wenn Sie nicht wissen, welchen Abklingterm Sie wählen sollen, verwenden Sie 0,001. Neustarts - Anzahl der Neustarts von der Zufallsposition, >0. Wenn Sie nicht wissen, welchen Neustart Sie wählen sollen, verwenden Sie 2.
Dies ist nur ein empfohlener Wert, niemand wird mindestens 1000 aufhalten, aber es wird lange dauern... Ich habe im Code nachgesehen - es gibt nur eine Schleife über die Anzahl der Epochen (ich habe übrigens auch 2 verwendet).
elibrarius: Ich denke, der Vorteil von NS ist es, nicht-lineare Abhängigkeiten zu finden und sie zu nutzen. Der letzte Artikel von Vladimir enthält 2 davon.
Die lineare Regression hingegen wird durch sie verschlechtert.
Scaffolding wird auch ausschließlich für nichtlineare Muster verwendet, es funktioniert nicht bei linearen Mustern
elibrarius: Dies ist nur ein empfohlener Wert, niemand hält Sie davon ab, 1000 zu setzen, aber es wird lange dauern... Ich habe im Code nachgesehen - es gibt nur eine Schleife über die Anzahl der Epochen (ich habe übrigens auch 2 verwendet).
Ich habe es bis zu 1500 auf einem 6-lagigen Reifen geschafft. Ja, lang - etwa 32 Stunden, aber erstens übertrifft das Ergebnis die Erwartungen. Zweitens ist es gar nicht so lang, wenn man es mit der Hand projiziert ). Und mit MLP - Standard-Struktur, und lehren, was Sie wollen.))
Scaffolding wird auch ausschließlich für nichtlineare Muster verwendet, es funktioniert nicht bei linearen Mustern
Vielleicht ist das der Grund, warum Forest auf dem Validierungsplot um 0,4 % besser ist als die lineare Regression))). Die Lernzeit beträgt 36 bzw. 3 Minuten (bei 265 Eingaben). Die lineare Regression beginnt mir zu gefallen.
Wenn jemand herumspielen möchte, lernt das Gerüst aus den Inkrementen und gibt eine Vorhersage von 1 Takt voraus. In den Einstellungen legen Sie die Lerntiefe, die Verzögerung für die Inkremente und die Anzahl der Einträge fest (jeder neue Eintrag ist eine Verschiebung um 1 Takt nach hinten). Dann wird der prognostizierte Wert von den aktuellen Preisen abgezogen. Das Histogramm wird nur für jeden neuen Balken gezeichnet, ich habe es im Visualizer gesehen.
//+------------------------------------------------------------------+//| NonLinearPredictor.mql5 |//| Dmitrievsky Max |//| https://www.mql5.com/ru/users/dmitrievsky |//+------------------------------------------------------------------+#property copyright"Dmitrievsky Max."#property link"https://www.mql5.com/ru/users/dmitrievsky"#property version"1.00"#property indicator_separate_window#property indicator_buffers2#property indicator_plots1//--- plot Label1#property indicator_label1"Tensor non-linear predictor"#property indicator_type1DRAW_COLOR_HISTOGRAM#property indicator_color1clrOrangeRed,clrOrange#property indicator_style1STYLE_SOLID#property indicator_width11//--- подключим библиотеку Alglib#include <Math\Alglib\alglib.mqh>
//RDF system. Here we create all RF objects.
CDecisionForest RDF; //Random forest object
CDFReport RDF_report; //RF return errors in this object, then we can check itdouble RFout[1], vector[]; //Arrays for calculate result of RF
CMatrixDouble RMmatrix;
int retcode=0;
//--- input parametersinputint last_bars=500;
inputint lag=5;
inputint bars_seria = 100;
//--- indicator buffersdouble SpreadBuffer[];
double ColorsBuffer[];
//--- время открытия предыдущего бараstaticdatetime last_time=0;
int needToLearn=0;
//+------------------------------------------------------------------+//| Custom indicator initialization function |//+------------------------------------------------------------------+intOnInit()
{
//--- indicator buffers mappingSetIndexBuffer(0,SpreadBuffer,INDICATOR_DATA);
SetIndexBuffer(1,ColorsBuffer,INDICATOR_COLOR_INDEX);
//--- установим индексацию как в таймсерии - от настоящего в прошлоеArraySetAsSeries(SpreadBuffer,true);
ArraySetAsSeries(ColorsBuffer,true);
RMmatrix.Resize(last_bars,bars_seria);
ArrayResize(vector,bars_seria-1);
//---IndicatorSetString(INDICATOR_SHORTNAME,StringFormat("Non-linear predictor (%s, %s, %s)",_Symbol,(string)last_bars, (string)lag));
IndicatorSetInteger(INDICATOR_DIGITS,5);
return(INIT_SUCCEEDED);
}
intOnCalculate(constint rates_total,
constint prev_calculated,
constdatetime &time[],
constdouble &open[],
constdouble &high[],
constdouble &low[],
constdouble &close[],
constlong &tick_volume[],
constlong &volume[],
constint &spread[])
{
//---ArraySetAsSeries(close,true);
if(prev_calculated==0 || needToLearn>last_bars/5)
{
for(int i=0;i<last_bars;i++)
{
for(int l=0;l<ArraySize(vector);l++)
{
RMmatrix[i].Set(l,MathLog(close[i+1+l]/close[i+lag+1+l]));
}
RMmatrix[i].Set(bars_seria-1,MathLog(close[i]/close[i+lag]));
}
CDForest::DFBuildRandomDecisionForest(RMmatrix,last_bars,bars_seria-1,1,100,0.95,retcode,RDF,RDF_report);
needToLearn=0;
}
if(isNewBar())
{
if(retcode==1)
{
for(int i=0;i<ArraySize(vector);i++)
{
vector[i]=MathLog(close[i]/close[i+lag]);
}
CDForest::DFProcess(RDF,vector,RFout);
SpreadBuffer[0]=MathLog(close[0]/close[0+lag])-RFout[0];
ColorsBuffer[0]=(SpreadBuffer[0]>0?0:1);
}
needToLearn++;
}
return(rates_total);
}
//+------------------------------------------------------------------+//| возвращает true при появлении нового бара |//+------------------------------------------------------------------+bool isNewBar()
{
datetime lastbar_time=datetime(SeriesInfoInteger(Symbol(),_Period,SERIES_LASTBAR_DATE));
if(last_time==0)
{
last_time=lastbar_time;
return(false);
}
if(last_time!=lastbar_time)
{
last_time=lastbar_time;
return(true);
}
return(false);
}
elibrarius: Vielleicht ist das der Grund, warum der Wald im Validierungsplot um 0,4 % besser ist als die lineare Regression). Lernzeit 36 bzw. 3 Minuten (bei 265 Eingaben). Die lineare Regression beginnt mir zu gefallen.
Ich habe auch verglichen - ich habe BP Autoregression und ich habe das gleiche durch den Wald - die Unterschiede sind minimal :) Im Wesentlichen bedeutet dies, dass es dort kein normales Muster gibt.
Wenn Sie kein Benutzerkonto haben, registrieren Sie sich
Erlauben Sie die Verwendung von Cookies, um sich auf der Website MQL5.com anzumelden.
Bitte aktivieren Sie die notwendige Einstellung in Ihrem Browser, da Sie sich sonst nicht einloggen können.
Sie sind angemeldet. Die Zwei-Faktor-Authentifizierung wurde deaktiviert. Richten Sie sie erneut ein und scannen Sie einen neuen QR-Code oder fahren Sie mit deaktivierter Zwei-Faktor-Authentifizierung fort.
Überprüft und Gerüst - viel schneller als NS (4 min.), und das Ergebnis ist etwa die gleiche. Interessant ist auch, dass die lineare Regression sogar noch schneller zu den gleichen Ergebnissen führt.
Wie jemand hier schrieb - es geht nur um Funktionen.
Nun, das ist die Hauptsache, und das Spiel mit verschiedenen Modellen und Taschen wird nicht eine große Steigerung geben :)
Soweit ich verstanden habe, kann man dort 1-2 Epochen einstellen, weil es fast immer beim ersten Mal konvergiert... vielleicht war das eine Auslassung? obwohl ich es schon lange nicht mehr benutzt habe, könnte ich verwirrt sein.
Ich habe nirgendwo eine Grenze in Epochen gesehen
mlptrainlm-Funktion
Nun, das ist die Hauptsache, und das Spielen mit verschiedenen Modellen und Taschen wird dir keinen großen Auftrieb geben :)
In Vladimirs letztem Artikel gibt es 2 davon.
Bei linearer Regression werden sie sich im Gegenteil verschlechtern.
mlptrainlm-Funktion
Ich denke, der Vorteil von NS ist es, nicht-lineare Abhängigkeiten zu finden und sie zu nutzen.
Der letzte Artikel von Vladimir enthält 2 davon.
Die lineare Regression hingegen wird durch sie verschlechtert.
Scaffolding wird auch ausschließlich für nichtlineare Muster verwendet, es funktioniert nicht bei linearen Mustern
Dies ist nur ein empfohlener Wert, niemand hält Sie davon ab, 1000 zu setzen, aber es wird lange dauern... Ich habe im Code nachgesehen - es gibt nur eine Schleife über die Anzahl der Epochen (ich habe übrigens auch 2 verwendet).
Scaffolding wird auch ausschließlich für nichtlineare Muster verwendet, es funktioniert nicht bei linearen Mustern
Wenn jemand herumspielen möchte, lernt das Gerüst aus den Inkrementen und gibt eine Vorhersage von 1 Takt voraus. In den Einstellungen legen Sie die Lerntiefe, die Verzögerung für die Inkremente und die Anzahl der Einträge fest (jeder neue Eintrag ist eine Verschiebung um 1 Takt nach hinten). Dann wird der prognostizierte Wert von den aktuellen Preisen abgezogen. Das Histogramm wird nur für jeden neuen Balken gezeichnet, ich habe es im Visualizer gesehen.
Vielleicht ist das der Grund, warum der Wald im Validierungsplot um 0,4 % besser ist als die lineare Regression). Lernzeit 36 bzw. 3 Minuten (bei 265 Eingaben). Die lineare Regression beginnt mir zu gefallen.
Ich habe auch verglichen - ich habe BP Autoregression und ich habe das gleiche durch den Wald - die Unterschiede sind minimal :) Im Wesentlichen bedeutet dies, dass es dort kein normales Muster gibt.