Aprendizado de máquina no trading: teoria, prática, negociação e não só - página 1181

 

O tradutor funciona. Traduza a página inteira ou copie cola para o tradutor.

Mas uma palavra ou parágrafo não funciona de todo.

 
Maxim Dmitrievsky:

Há muitas configurações, é preciso muitas garrafas para descobrir... :) talvez a amostra seja pequena, uma vez que as de árvore são desenhadas principalmente para as grandes, você precisa afinar algo


claro, com certeza você pode ajustá-lo, eu até acho que a porcentagem de amostragem vai para cada árvore reduzida por padrão, mas duas vezes dois é um indicador...)

 
Maxim Dmitrievsky:

traduzir uma palavra de cada vez, usando o plug-in do tradutor google para cromo. Não o podes fazer sem o inglês. Mesmo se você ler 1-2 palavras, o significado será entendido como um todo. Eu próprio uso quando me esqueço das palavras. Basta clicar sobre a palavra. Você pode destacar cláusulas/sentenças.

É claro que traduzir o texto inteiro de uma só vez é estúpido, por isso mesmo as palavras que você nunca vai lembrar e você não vai entender o significado do texto.

Obrigado, vou tentar traduzir usando a sua metodologia, talvez seja ainda mais produtivo do que inventar as minhas próprias hipóteses, mas tenho uma fraqueza com as línguas...

 
Ivan Negreshniy:

Eu não entendo por que é necessária a edição manual de rachaduras e folhas de árvores de decisão, sim eu tenho todos os galhos convertidos automaticamente em operadores lógicos, mas francamente eu não lembro que eu mesmo já os corrigi.

Porque para que serve usar folhas com menos de 50-60% de probabilidade de predição? É aleatório - um modelo melhor não reage de forma alguma à situação, em vez de reagir a adivinhações.


Ivan Negreshniy:

E vale mesmo a pena pesquisar o código CatBoost, como pode ter a certeza.

Por exemplo, eu coloquei acima o teste em python minha rede neural com treinamento por tabela de multiplicação por dois, e agora eu o tomei para testar árvores e florestas (DecisionTree, RandomForest, CatBoost)

e aqui está o resultado que saiu - claramente não é a favor do CatBoost, como duas vezes dois é zero cinco...:)


é verdade que se você pegar milhares de árvores, os resultados melhoram.

Não tenho tanta certeza de que as árvores sejam melhores do que as redes neurais, mas as árvores requerem menos recursos para construí-las. Por exemplo, neste momento tenho cerca de 400 preditores, e uma rede com 400 neurónios de entrada e (quantas camadas existem) demoraria demasiado tempo a contar.

Posso largar a minha amostra - talvez usá-la para ver que método é melhor?

Mas os cenários fazem sentido - e eu estou a pesquisar sobre eles agora mesmo e a tentar descobri-los.

 
Ivan Negreshniy:

Não entendo por que é necessária a edição manual de rachaduras e folhas de árvores de decisão, sim, tenho todos os ramos convertidos automaticamente em operadores lógicos, mas francamente não me lembro de ter sido eu mesmo a corrigi-los.

E em geral vale a pena escavar o código CatBoost, como é que eu sei ao certo.

Por exemplo, eu coloquei acima o teste em python minha rede neural com aprendizado por tabela de multiplicação por dois, e agora o levei para testar árvores e florestas (DecisionTree, RandomForest, CatBoost)

e aqui está o resultado - pode ver, que não é a favor do CatBoost, como duas vezes dois é zero cinco...:)


é verdade, se você pegar milhares de árvores, os resultados melhoram.
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 

afinou-o um pouco e acrescentou um pouco de reforço de gradiente, funciona melhor fora da caixa

o resto, claro, algo mnda...

 
Maxim Dmitrievsky:
Há cerca de um ano vi uma cópia de uma simples NS mostrando resultados muito decentes na tabela de multiplicação. Naquela altura surpreendeu-me.
Qual é o objectivo agora?
 
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:

Mas uma palavra ou um parágrafo - de jeito nenhum.

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

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

there CatBoost at iterations=100 árvores não 10, e GBM é uma beleza:)

 
Aleksey Vyazmikin:

Porque para que serve usar folhas com menos de 50-60% de probabilidade de predição? É aleatório - é melhor para o modelo não responder de todo do que responder com um palpite.


Não tenho a certeza se as árvores são melhores do que as redes neurais, mas as árvores requerem menos recursos para construir. Por exemplo, neste momento tenho cerca de 400 preditores, e uma rede com 400 neurónios de entrada e (quantas camadas existem) demoraria demasiado tempo a contar.

Posso largar a minha amostra - talvez usá-la para ver que método é melhor?

E os cenários sim - fazem sentido - e eu estou me aprofundando neles agora e tentando entender sua essência.

Por todos os meios, escave e escolha o mais cuidadosamente possível enquanto ainda está na sua fase inicial.

Além da falta de entendimento com dois-dois também tentam desconectar ousadamente, a cada início, a criação pelo CatBoost de seus diretórios temporários como a partir dele no ambiente protegido que ele expulsa.

E em geral, essas falhas ele parece de alguma forma não muito profissional, então se você não pode vencê-las, então pessoalmente na minha opinião, mais barato do que livre - deste produto para abandonar de uma vez:)