Машинное обучение в трейдинге: теория, модели, практика и алготорговля - страница 1181

 
Maxim Dmitrievsky:

переводите по 1 слову, через гугл переводчик плагин для chrome. Без аннгл. никак. Даже если через 1-2 слова будете читать то смысл будет понятен в целом. Сам пользую когда слова забываю. Просто кликаете на слове. Можно обороты\предложения выделять.

Переводить весь текст сразу это конечно тупо, так даже слова никогда не запомнишь и смысл текста не поймешь

Спасибо, надо попробовать по Вашей методике попереводить, может это будет даже продуктивней, чем придумывать свои гипотезы, но у меня слабость с языками...

 
Ivan Negreshniy:

Не понимаю зачем м.б. нужна ручная правка расщеплений и листьев решающих деревьев, да у меня автоматом все ветвления конвертируются в логические операторы, но честно говоря не помню, что бы я их сам когда то корректировал.

Потому что какой смысл использовать листы с вероятностью предсказания менее 50-60%? Это же рандом - лучше модель вообще не будет реагировать на ситуацию, нежели реагировать на угад.


Ivan Negreshniy:

И вообще стоит ли копать код CatBoost, откуда уверенность.

Вот например, я выставлял выше тест на питоне своей нейросети с обучением по таблице умножения на два, а теперь взял его для проверки деревьев и лесов (DecisionTree, RandomForest, CatBoost)

а вот какой результат вышел - явно видно, что не в пользу CatBoost, как дважды два - ноль пять...:)


правда, если взять тысячи деревьев, то результаты улучшаются.

Уверенности у меня нет, что деревья лучше нейросетей, но для деревьев требуется меньше ресурсов на их построение. К примеру сейчас у меня порядка 400 предикторов, а сеть с 400 входными нейронами да и (сколько там слоев) будет считаться слишком долго.

Я могу сбросить свою выборку - может на ней посмотреть, какой метод лучше?

А настройки да - имеют смысл - и я сейчас в них копаюсь и пытаюсь понять их суть.

 
Ivan Negreshniy:

Не понимаю зачем м.б. нужна ручная правка расщеплений и листьев решающих деревьев, да у меня автоматом все ветвления конвертируются в логические операторы, но честно говоря не помню, что бы я их сам когда то корректировал.

И вообще стоит ли копать код CatBoost, откуда уверенность.

Вот например, я выставлял выше тест на питоне своей нейросети с обучением по таблице умножения на два, а теперь взял его для проверки деревьев и лесов (DecisionTree, RandomForest, CatBoost)

а вот какой результат вышел - явно видно, что не в пользу CatBoost, как дважды два - ноль пять...:)


правда, если взять тысячи деревьев, то результаты улучшаются.
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 

чуток подтюнил и добавил градиентный бустинг, он лучше всего работает из коробки

остальные конечно что-то мнда..

 
Maxim Dmitrievsky:
С год назад видел экземпл простенькой НС показывающий оч приличные результаты в таблице умножения. Тогда это меня удивило.
А сейчас то это зачем?
 
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:

А вот слово или абзац - вообще никак.

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

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

там у CatBoost при iterations=100 деревьев а не 10, а GBM красавчег:)

 
Aleksey Vyazmikin:

Потому что какой смысл использовать листы с вероятностью предсказания менее 50-60%? Это же рандом - лучше модель вообще не будет реагировать на ситуацию, нежели реагировать на угад.


Уверенности у меня нет, что деревья лучше нейросетей, но для деревьев требуется меньше ресурсов на их построение. К примеру сейчас у меня порядка 400 предикторов, а сеть с 400 входными нейронами да и (сколько там слоев) будет считаться слишком долго.

Я могу сбросить свою выборку - может на ней посмотреть, какой метод лучше?

А настройки да - имеют смысл - и я сейчас в них копаюсь и пытаюсь понять их суть.

Конечно покопайтесь и выбирайте, как можно тщательнее, пока все это еще в начальной стадии.

Кроме непонятки с дважды два еще попробуйте отключить навязчивое, при каждом запуске, создание CatBoost'ом своих временных каталогов т.к. от этого в защищенной среде он вылетает.

И вообще, эти глюки у него выглядят как-то не очень профессионально, поэтому если не удастся их победить, то лично по моему мнению, дешевле бесплатного - от этого продукта отказаться сразу:)

 
Ivan Negreshniy:

там у CatBoost при iterations=100 деревьев а не 10, а GBM красавчег:)

LGBM ваще не работает, ну как обычно у майкрософт

и XGB до кучи по дефолту

-------- XGB 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=13.99 
 8.00*2.00=15.98 
 9.00*2.00=17.91 

какие еще есть бустинги? :) потом более сложную задачу им подкину всей куче сразу

 

Да, я видел, и уже посмотрел плагины, там таких несколько. Интересно то, что раньше хром это делал сам по себе, без дополнительной установки чего либо.

Причина обращения: