Aprendizado de máquina no trading: teoria, prática, negociação e não só - página 1260
Você está perdendo oportunidades de negociação:
- Aplicativos de negociação gratuitos
- 8 000+ sinais para cópia
- Notícias econômicas para análise dos mercados financeiros
Registro
Login
Você concorda com a política do site e com os termos de uso
Se você não tem uma conta, por favor registre-se
com katbust - retorna normal, normalmente > 0.5 no teste... como de costume
Você verificou floresta de 1 árvore em katbust? E o katbust dá saída de cross-entropy ou algum outro erro?
Alglib dá 5 erros diferentes: (aqui está o meu exemplo com 1 árvore)
Alerta: Relatório de estimativa de erro do conjunto de treinamento: relclserror=0,267; avgce=184,207; rmserror=0,516; avgerror=0,267; avgrelerror=0,267;
Não, o impulso é construído de forma diferente, aumenta o número de árvores enquanto a entropia diminui, quando começa a crescer durante as iterações, pára, para não complicar demasiado o modelo.
dá entropia e qualquer métrica personalizada, mas baseia-se na entropia.
a versão inglesa do site alglib tem uma floresta nova e mais rápida, a propósito... eu queria reescrevê-la, mas não consigo encontrá-la )
- Taxa de erro de classificação binária. É calculado como (# casos errados) / (# todos os casos).
Por padrão, ele usa o limite de 0,5 para valores previstos para definir instâncias negativas e positivas.
Diferente limiar (por exemplo, 0.) poderia ser especificado como "error@0".
Dei uma vista de olhos nos documentos do xgboost. Não tem uma saída de entropia cruzada, mas
erro - Taxa de erro de classificação binária. É calculado como (# casos errados) / (# todos os casos).
Por padrão, ele usa o limite de 0,5 para valores previstos para definir instâncias negativas e positivas.
Diferente limiar (por exemplo, 0.) poderia ser especificado como "error@0".
Sim, e aqui o erro de classificação é usado por defeito, aparentemente
mas você tem que distinguir, impulsionando usa o erro para parar, enquanto a floresta só dá pós-facto, e árvores de profundidade totalNão, o impulso é construído de forma diferente, aumenta o número de árvores enquanto a entropia diminui, quando começa a crescer durante as iterações, pára, para não complicar demasiado o modelo.
dá entropia e qualquer métrica personalizada, mas baseia-se na entropia.
na versão em inglês do site alglib eu postei uma nova e mais rápida floresta, a propósito... eu queria reescrevê-la, mas não consigo encontrá-la )
Onde está a nova algibeira - posso procurá-la em algum lugar no fórum? É interessante comparar o código desta função
Onde está o novo alliglib - está em algum lugar do fórum para procurar? Interessante para comparar o código desta função
não, está em c++ ou c#
http://www.alglib.net/arcnews.php#date_16_06_2018
Não, está em c++ ou c#
http://www.alglib.net/arcnews.php#date_16_06_2018
Obrigado!
Obrigado!
Se você vai descobrir e comparar, me avise :) você poderia reescrevê-lo dessa maneira, se não for muito incômodo. Os arquivos da floresta atual são muito grandes, seria bom reduzi-los. E a aceleração também é um bónus.
Graças à iniciativa do Maxim, fiquei sem banimento! Obrigado, Maxim.
Já estou na sauna há algum tempo e fiz o meu EA de folhas, aquele sobre o qual escrevi antes do Ano Novo. Até agora o resultado é negativo, mas acho que devo dar-lhe mais tempo, porque o Si está no plano agora depois dos fortes movimentos de Ano Novo, que não aconteceram quando o EA foi iniciado.
Os testes foram feitos com um volume mínimo na conta com um longo histórico e má experiência, por isso não haverá um sinal público, vou postar o relatório mais tarde, quando as estatísticas estarão disponíveis. Faço-o para aqueles que estão interessados, se a minha abordagem é ou não rentável.
Em relação ao CatBoost'a, porque tenho modelos muito pequenos, cerca de 1-30 árvores, então enfrento uma situação em que o teste (em que o modelo de selecção) e o exame (em que teste independente) amostra pode mostrar muito bons resultados financeiros, mas no treinamento amostra resultados são muito fracos. Então agora eu testei o modelo nas três amostras, e se eu estou feliz com ele, eu o seleciono. Portanto, recomendo que se olhe também para a amostra de treinamento, eu não fiz isso porque eu esperava o mesmo efeito que as folhas da árvore (minha abordagem alternativa onde apenas as folhas são selecionadas) ou andaimes, que o modelo definitivamente se comportaria bem na amostra de teste, mas acontece que isso nem sempre é o caso.
Até agora a questão dos critérios de seleção de um modelo está aberta para mim, após testes em uma amostra para treinamento de bons modelos (para uma série de indicadores financeiros e modelos de critérios) de 100k não é mais do que 10-30 peças, o que não é suficiente, é claro. Devemos ou baixar os critérios ou criar mais modelos. O Catbust tem muitos parâmetros diferentes, portanto você pode rebitar muitos modelos.
Por outro lado, eu realmente esperava treinar através de placas gráficas, mas acabou por ser muito pouco útil para 1060 - até agora os experimentos mostram que levou 20 minutos para treinar 200 modelos, enquanto no CPU G3900 (na verdade a escória sob LGA1151) levou apenas 6 minutos! Ao mesmo tempo, o processador está constantemente a carregar 50% a 60%, o que torna impossível utilizar mais de 2 placas de vídeo ao mesmo tempo, enquanto eu tinha grandes esperanças para um equipamento de 6 placas. Não sei porque é que isto acontece quando em teoria tudo deve ser rápido. O maior gargalo nos cálculos da GPU é a transferência do modelo da RAM para a GPU e vice-versa, mas é muito lento para mim, talvez a transferência ocorra após cada iteração e essa é a razão dos atrasos. Alguém mais já tentou executá-lo na GPU?
Se você vai descobrir e comparar, me avise :) você poderia reescrevê-lo dessa maneira, se não for muito incômodo. Os arquivos da floresta atual são muito grandes, seria bom reduzi-los. Sim, e a aceleração também é um bónus.
Eu comparei-o, há o mesmo código não utilizado abaixo: (assinado em 2009, ou seja, não foram feitas edições nesta parte)
Copyright 16.02.2009 by Bochkanov Sergey
*************************************************************************/
public static double dfavgce(decisionforest df,
double[,] xy,
int npoints,
alglib.xparams _params)
{
double result = 0;
double[] x = new double[0];
double[] y = new double[0];
int i = 0;
int j = 0;
int k = 0;
int tmpi = 0;
int i_ = 0;
x = new double[df.nvars-1+1];
y = new double[df.nclasses-1+1];
result = 0;
for(i=0; i<=npoints-1; i++)
{
for(i_=0; i_<=df.nvars-1;i_++)
{
x[i_] = xy[i,i_];
}
dfprocess(df, x, ref y, _params);
if( df.nclasses>1 )
{
//
// classification-specific code
//
k = (int)Math.Round(xy[i,df.nvars]);
tmpi = 0;
for(j=1; j<=df.nclasses-1; j++)
{
if( (double)(y[j])>(double)(y[tmpi]) )
{
tmpi = j;
}
}
if( (double)(y[k])!=(double)(0) )
{
result = result-Math.Log(y[k]);
}
else
{
result = result-Math.Log(math.minrealnumber);
}
}
}
result = result/npoints;
return result;
}