Aprendizaje automático en el trading: teoría, práctica, operaciones y más - página 1181

 

El traductor trabaja. Traduzca la página completa o copie y pegue en el traductor.

Pero una palabra o un párrafo no funcionan en absoluto.

 
Maxim Dmitrievsky:

Hay muchos ajustes, necesitas muchas botellas para entenderlo... :) tal vez la muestra es pequeña ya que los arbolitos están diseñados principalmente para los grandes, hay que retocar algo


Por supuesto, seguro que se puede retocar, incluso supongo que el porcentaje de muestreo va a cada árbol reducido por defecto, pero dos veces dos es un indicador...)

 
Maxim Dmitrievsky:

traduce una palabra a la vez, utilizando el plug-in del traductor de google para chrome. No puedes hacerlo sin el inglés. Incluso si se leen 1-2 palabras, el significado se entenderá en su conjunto. Yo mismo lo uso cuando se me olvidan las palabras. Basta con hacer clic en la palabra. Puede girar / frases para asignar.

Por supuesto, es una estupidez traducir todo el texto de una vez, por lo que nunca recordarás las palabras y no entenderás el significado del texto.

Gracias, intentaré traducir con tu metodología, quizás sea incluso más productivo que inventarme mis propias hipótesis, pero tengo una debilidad con los idiomas...

 
Ivan Negreshniy:

No entiendo por qué es necesario editar manualmente las divisiones y las hojas de los árboles de decisión, sí tengo todas las ramas convertidas automáticamente en operadores lógicos, pero francamente no recuerdo haberlas corregido yo mismo.

Porque, ¿qué sentido tiene utilizar hojas con una probabilidad de predicción inferior al 50-60%? Es aleatorio - mejor que el modelo no reaccione a la situación en absoluto, en lugar de reaccionar a las conjeturas.


Ivan Negreshniy:

¿Y merece la pena indagar en el código de CatBoost?

Por ejemplo he puesto encima de prueba en python mi red neuronal con entrenamiento por tabla de multiplicación por dos, y ahora la he llevado para probar árboles y bosques (DecisionTree, RandomForest, CatBoost)

y aquí está el resultado - claramente no es a favor de CatBoost, como dos veces dos es cero cinco...:)


es cierto que si se toman miles de árboles, los resultados mejoran.

No estoy tan seguro de que los árboles sean mejores que las redes neuronales, pero los árboles requieren menos recursos para construirlos. Por ejemplo ahora mismo tengo unos 400 predictores, y una red con 400 neuronas de entrada y (cuántas capas hay) llevaría demasiado tiempo contar.

Puedo dejar mi muestra - tal vez utilizarla para ver qué método es mejor?

Pero los ajustes sí tienen sentido, y ahora mismo estoy indagando en ellos y tratando de entenderlos.

 
Ivan Negreshniy:

No entiendo por qué es necesaria la edición manual de las divisiones y las hojas de los árboles de decisión, sí tengo todas las ramas convertidas automáticamente en operadores lógicos, pero francamente no recuerdo que las haya corregido yo nunca.

Y en general vale la pena cavar el código de CatBoost, ¿cómo puedo saber con seguridad.

Por ejemplo, arriba puse a prueba en python mi red neuronal con aprendizaje por tabla de multiplicación por dos, y ahora la tomé para probar árboles y bosques (DecisionTree, RandomForest, CatBoost)

y aquí está el resultado - se puede ver, que no es a favor de CatBoost, como dos veces dos es cero cinco ...:)


es cierto, si tomas miles de árboles, los resultados mejoran.
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 

Lo he ajustado un poco y he añadido un poco de refuerzo de gradiente, funciona mejor fuera de la caja

el resto por supuesto algo mnda...

 
Maxim Dmitrievsky:
Hace aproximadamente un año vi una copia de un simple NS que mostraba resultados muy decentes en la tabla de multiplicar. En ese momento me sorprendió.
¿Qué sentido tiene ahora?
 
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:

Pero una palabra o un párrafo... de ninguna manera.

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

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

allí CatBoost en iteraciones = 100 árboles no 10, y GBM es una belleza:)

 
Aleksey Vyazmikin:

Porque, ¿qué sentido tiene utilizar hojas con una probabilidad de predicción inferior al 50-60%? Es aleatorio: es mejor que el modelo no responda en absoluto a que responda con una suposición.


No estoy seguro de que los árboles sean mejores que las redes neuronales, pero los árboles requieren menos recursos para su construcción. Por ejemplo ahora mismo tengo unos 400 predictores, y una red con 400 neuronas de entrada y (cuántas capas hay) llevaría demasiado tiempo contar.

Puedo dejar mi muestra - tal vez utilizarla para ver qué método es mejor?

Y los escenarios sí - tienen sentido - y ahora estoy indagando en ellos y tratando de entender su esencia.

Por supuesto, hay que profundizar y elegir con todo el cuidado que se pueda mientras aún está en su fase inicial.

Además de la falta de comprensión con dos-dos también tratar de desconectar molesto, en cada inicio, la creación por CatBoost sus directorios temporales como de ella en el entorno protegido echa.

Y, en general, estos fallos que se ve de alguna manera no es muy profesional, así que si usted no puede vencer a ellos, entonces, personalmente, en mi opinión, más barato que libre - de este producto a abandonar a la vez:)

Razón de la queja: