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

 

Der Übersetzer arbeitet. Übersetzen Sie entweder die ganze Seite, oder fügen Sie den Text in den Übersetzer ein.

Aber ein Wort oder ein Absatz funktioniert überhaupt nicht.

 
Maxim Dmitrievsky:

Es gibt viele Einstellungen, man braucht viele Flaschen, um das herauszufinden... :) vielleicht ist die Probe klein, da die baumähnlichen hauptsächlich für große ausgelegt sind, müssen Sie etwas optimieren


natürlich, für sicher können Sie es zwicken, ich vermute sogar, dass die Probenahme Prozentsatz geht an jeden Baum standardmäßig reduziert, aber zwei mal zwei ist ein Indikator ...)

 
Maxim Dmitrievsky:

übersetzen Sie ein Wort nach dem anderen mit dem Google Translator Plug-in für Chrome. Ohne Englisch geht es nicht. Selbst wenn Sie nur 1-2 Wörter lesen, wird der Sinn als Ganzes verstanden. Ich selbst benutze sie, wenn ich die Worte vergesse. Klicken Sie einfach auf das Wort. Sie können Sätze umdrehen / zuordnen.

Natürlich ist es dumm, den gesamten Text auf einmal zu übersetzen, denn dann kann man sich die Wörter nicht merken und versteht den Sinn des Textes nicht.

Danke, ich werde versuchen, nach Ihrer Methode zu übersetzen, vielleicht ist das sogar produktiver als meine eigenen Hypothesen aufzustellen, aber ich habe eine Schwäche für Sprachen...

 
Iwan Negreshniy:

Ich verstehe nicht, warum die manuelle Bearbeitung von Abspaltungen und Blättern von Entscheidungsbäumen erforderlich ist. Ja, ich habe alle Zweige automatisch in logische Operatoren umgewandelt, aber ehrlich gesagt kann ich mich nicht erinnern, dass ich sie jemals selbst korrigiert habe.

Denn was nützt es, Blätter mit einer Vorhersagewahrscheinlichkeit von weniger als 50-60 % zu verwenden? Es ist willkürlich - besser, das Modell reagiert überhaupt nicht auf die Situation, als dass es auf Vermutungen reagiert.


Iwan Negreshniy:

Und lohnt es sich überhaupt, in den CatBoost-Code zu schauen, wie kann man sicher sein?

Zum Beispiel habe ich oben Test auf Python mein neuronales Netz mit Training durch Multiplikationstabelle mit zwei, und jetzt habe ich es für die Prüfung Bäume und Wälder (DecisionTree, RandomForest, CatBoost) genommen

und hier ist das Ergebnis - es fällt eindeutig nicht zugunsten von CatBoost aus, so wie zwei mal zwei null fünf ist...:)


Es stimmt, dass sich die Ergebnisse verbessern, wenn man Tausende von Bäumen nimmt.

Ich bin mir nicht so sicher, ob Bäume besser sind als neuronale Netze, aber Bäume benötigen weniger Ressourcen, um sie zu erstellen. Im Moment habe ich zum Beispiel etwa 400 Prädiktoren, und ein Netzwerk mit 400 Eingangsneuronen und (wie viele Schichten es gibt) würde zu lange dauern, um es zu zählen.

Ich kann meine Probe abgeben - vielleicht verwenden Sie sie, um zu sehen, welche Methode besser ist?

Aber die Einstellungen machen durchaus Sinn - und ich bin gerade dabei, sie zu erforschen.

 
Ivan Negreshniy:

Ich verstehe nicht, warum die manuelle Bearbeitung von Abspaltungen und Blättern von Entscheidungsbäumen notwendig ist. Ja, ich habe alle Zweige automatisch in logische Operatoren umgewandelt, aber ehrlich gesagt kann ich mich nicht erinnern, dass ich sie jemals selbst korrigiert habe.

Und im Allgemeinen lohnt es sich, den CatBoost-Code zu graben, wie kann ich das sicher wissen.

Zum Beispiel habe ich oben Test auf Python mein neuronales Netz mit Lernen durch Multiplikationstabelle mit zwei, und jetzt nahm es für die Prüfung Bäume und Wälder (DecisionTree, RandomForest, CatBoost)

und hier ist das Ergebnis - Sie können sehen, dass es nicht zugunsten von CatBoost ausfällt, wie zwei mal zwei ist null fünf...:)


Es stimmt, wenn man Tausende von Bäumen nimmt, werden die Ergebnisse besser.
import catboost
from sklearn.tree import DecisionTreeRegressor
from sklearn.ensemble import RandomForestRegressor
from catboost import CatBoostRegressor
from sklearn.ensemble import GradientBoostingRegressor

x = [[1,2],[2,2],[3,2],[4,2],[5,2],[6,2],[7,2],[8,2],[9,2]]
y = [2,4,6,8,10,12,14,16,18]

print('-------- 1 DecisionTree')
tree = DecisionTreeRegressor().fit(x,y)
for ix in x: print(' {:2.2f}*{:2.2f}={:2.2f} '.format(ix[0],ix[1],tree.predict([ix])[0]))

print('-------- RandomForest 10 Tree')
regr = RandomForestRegressor(bootstrap=True).fit(x,y)
for ix in x: print(' {:2.2f}*{:2.2f}={:2.2f} '.format(ix[0],ix[1],regr.predict([ix])[0]))

print('-------- CatBoost 10 Tree')
cat = CatBoostRegressor(iterations=100, learning_rate=0.1, depth=2, verbose=False).fit(x,y)
for ix in x: print(' {:2.2f}*{:2.2f}={:2.2f} '.format(ix[0],ix[1],cat.predict([ix])[0]))

print('-------- Gboost 100 Trees')
gboost  = GradientBoostingRegressor(n_estimators=100, verbose = False).fit(x,y)
for ix in x: print(' {:2.2f}*{:2.2f}={:2.2f} '.format(ix[0],ix[1],gboost.predict([ix])[0]))
-------- 1 DecisionTree
 1.00*2.00=2.00 
 2.00*2.00=4.00 
 3.00*2.00=6.00 
 4.00*2.00=8.00 
 5.00*2.00=10.00 
 6.00*2.00=12.00 
 7.00*2.00=14.00 
 8.00*2.00=16.00 
 9.00*2.00=18.00 
-------- RandomForest 10 Tree
 1.00*2.00=3.60 
 2.00*2.00=4.40 
 3.00*2.00=6.00 
 4.00*2.00=8.00 
 5.00*2.00=9.20 
 6.00*2.00=11.80 
 7.00*2.00=13.20 
 8.00*2.00=15.60 
 9.00*2.00=17.40 
-------- CatBoost 10 Tree
 1.00*2.00=2.97 
 2.00*2.00=2.97 
 3.00*2.00=5.78 
 4.00*2.00=8.74 
 5.00*2.00=10.16 
 6.00*2.00=12.88 
 7.00*2.00=14.67 
 8.00*2.00=15.77 
 9.00*2.00=15.77 
-------- Gboost 100 Trees
 1.00*2.00=2.00 
 2.00*2.00=4.00 
 3.00*2.00=6.00 
 4.00*2.00=8.00 
 5.00*2.00=10.00 
 6.00*2.00=12.00 
 7.00*2.00=14.00 
 8.00*2.00=16.00 
 9.00*2.00=18.00 

Ich habe es ein wenig optimiert und ein wenig Gradient Boosting hinzugefügt, es funktioniert am besten ohne die Box

der Rest natürlich etwas mnda...

 
Maxim Dmitrievsky:
Vor etwa einem Jahr sah ich eine Kopie einer einfachen NS, die sehr anständige Ergebnisse in der Multiplikationstabelle zeigte. Damals hat mich das überrascht.
Was soll das jetzt noch bringen?
 
import catboost
import lightgbm as gbm
from sklearn.tree import DecisionTreeRegressor
from sklearn.ensemble import RandomForestRegressor
from catboost import CatBoostRegressor
from sklearn.ensemble import GradientBoostingRegressor

x = [[1,2],[2,2],[3,2],[4,2],[5,2],[6,2],[7,2],[8,2],[9,2]]
y = [2,4,6,8,10,12,14,16,18]

print('-------- 1 DecisionTree')
tree = DecisionTreeRegressor().fit(x,y)
for ix in x: print(' {:2.2f}*{:2.2f}={:2.2f} '.format(ix[0],ix[1],tree.predict([ix])[0]))

print('-------- RandomForest 10 Tree')
regr = RandomForestRegressor(bootstrap=True, n_estimators=100).fit(x,y)
for ix in x: print(' {:2.2f}*{:2.2f}={:2.2f} '.format(ix[0],ix[1],regr.predict([ix])[0]))

print('-------- CatBoost 10 Tree')
cat = CatBoostRegressor(iterations=100, learning_rate=0.1, depth=2, verbose=False).fit(x,y)
for ix in x: print(' {:2.2f}*{:2.2f}={:2.2f} '.format(ix[0],ix[1],cat.predict([ix])[0]))

print('-------- Gboost 100 Trees')
gboost  = GradientBoostingRegressor(n_estimators=100, verbose = False).fit(x,y)
for ix in x: print(' {:2.2f}*{:2.2f}={:2.2f} '.format(ix[0],ix[1],gboost.predict([ix])[0]))

print('-------- LGBM 100 Trees')
gbbm = gbm.LGBMRegressor(n_estimators=100,boosting_type='dart').fit(x,y)
for ix in x: print(' {:2.2f}*{:2.2f}={:2.2f} '.format(ix[0],ix[1],gbbm.predict([ix])[0]))
-------- 1 DecisionTree
 1.00*2.00=2.00 
 2.00*2.00=4.00 
 3.00*2.00=6.00 
 4.00*2.00=8.00 
 5.00*2.00=10.00 
 6.00*2.00=12.00 
 7.00*2.00=14.00 
 8.00*2.00=16.00 
 9.00*2.00=18.00 
-------- RandomForest 10 Tree
 1.00*2.00=2.84 
 2.00*2.00=3.74 
 3.00*2.00=5.46 
 4.00*2.00=7.70 
 5.00*2.00=9.66 
 6.00*2.00=11.44 
 7.00*2.00=13.78 
 8.00*2.00=15.46 
 9.00*2.00=16.98 
-------- CatBoost 10 Tree
 1.00*2.00=2.97 
 2.00*2.00=2.97 
 3.00*2.00=5.78 
 4.00*2.00=8.74 
 5.00*2.00=10.16 
 6.00*2.00=12.88 
 7.00*2.00=14.67 
 8.00*2.00=15.77 
 9.00*2.00=15.77 
-------- Gboost 100 Trees
 1.00*2.00=2.00 
 2.00*2.00=4.00 
 3.00*2.00=6.00 
 4.00*2.00=8.00 
 5.00*2.00=10.00 
 6.00*2.00=12.00 
 7.00*2.00=14.00 
 8.00*2.00=16.00 
 9.00*2.00=18.00 
-------- LGBM 100 Trees
 1.00*2.00=10.00 
 2.00*2.00=10.00 
 3.00*2.00=10.00 
 4.00*2.00=10.00 
 5.00*2.00=10.00 
 6.00*2.00=10.00 
 7.00*2.00=10.00 
 8.00*2.00=10.00 
 9.00*2.00=10.00 
 
Yuriy Asaulenko:

Aber ein Wort oder ein Absatz - das geht gar nicht.

https://www.mql5.com/ru/forum/86386/page1180#comment_9543249

Машинное обучение в трейдинге: теория и практика (торговля и не только)
Машинное обучение в трейдинге: теория и практика (торговля и не только)
  • 2018.11.29
  • www.mql5.com
Добрый день всем, Знаю, что есть на форуме энтузиасты machine learning и статистики...
 
Maxim Dmitrievsky:

es CatBoost bei Iterationen=100 Bäume nicht 10, und GBM ist eine Schönheit:)

 
Aleksey Vyazmikin:

Denn was nützt es, Blätter mit einer Vorhersagewahrscheinlichkeit von weniger als 50-60 % zu verwenden? Es ist zufällig - es ist besser, wenn das Modell überhaupt nicht reagiert, als wenn es nur raten kann.


Ich bin mir nicht sicher, ob Bäume besser sind als neuronale Netze, aber Bäume benötigen weniger Ressourcen zum Aufbau. Im Moment habe ich zum Beispiel etwa 400 Prädiktoren, und ein Netzwerk mit 400 Eingangsneuronen und (wie viele Schichten es gibt) würde zu lange dauern, um es zu zählen.

Ich kann meine Probe abgeben - vielleicht verwenden Sie sie, um zu sehen, welche Methode besser ist?

Und die Einstellungen - ja, die machen Sinn - und ich versuche jetzt, sie zu verstehen und ihre Essenz zu verstehen.

Greifen Sie auf jeden Fall zu und wählen Sie so sorgfältig aus, wie Sie können, solange es noch in den Kinderschuhen steckt.

Neben Unverständnis bei zwei-zwei versuchen auch aufdringlich, bei jedem Start, die Erstellung von temporären Verzeichnissen durch CatBoost zu unterbinden, da es daraus in der geschützten Umgebung rausfliegt.

Und im Allgemeinen, diese Pannen sieht er irgendwie nicht sehr professionell, so dass, wenn Sie nicht schlagen können sie, dann persönlich meiner Meinung nach, billiger als frei - von diesem Produkt auf einmal zu verlassen:)

Grund der Beschwerde: