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

 
Isto é, se houver 20 preditores, quem sabe o que Bayes vai descobrir se ele estiver em baixo do comboio.
 
Maxim Dmitrievsky:

Não é bem assim, deveria ser mais claro aqui.

https://habr.com/ru/post/276355/

a gama de aplicações é grande, como exatamente será utilizado é outra questão

Vou lê-lo à noite.

 
Maxim Dmitrievsky:

Tu e eu não temos nada para falar, porque eu posso dizer pelo teu tipo psicótico que ou és uma criança ou apenas... esquece isso.

"Nós" como em ti? Encontre um emprego para começar, é uma pena sentar-se nos ombros dos seus pais com essa idade.

 
Maxim Dmitrievsky:

Não é bem assim, deveria ser mais claro aqui.

https://habr.com/ru/post/276355/

a gama de aplicações é grande, como exatamente será utilizado é outra questão

Resumindo, a partir da parte 2 do artigo:
O dropout pode ser visto como uma versão barata do Bayesianismo, o que é muito simples. A idéia é baseada na mesma analogia com os conjuntos que eu mencionei no final do último post: imagine que você tem uma rede neural. Agora imagine que você pega, rasga alguns neurônios aleatoriamente, e os põe de lado. Após ~1000 operações deste tipo, você obtém um conjunto de mil redes, onde cada uma é ligeiramente diferente da outra ao acaso. Fazemos uma média das suas previsões e obtemos que os desvios aleatórios se compensam uns aos outros em lugares e dão previsões reais. Agora imagine que você tem uma rede Bayesiana, e você tira mil vezes um conjunto de seus pesos da incerteza, e você obtém o mesmo conjunto de redes ligeiramente diferentes.

O que é mais legal sobre a abordagem Bayesiana é que ela permite que você use essa aleatoriedade de forma controlada.

....

Na prática, isso se traduz no fato de que uma rede dimensional dá melhores resultados do que uma rede de desistência, embora não muito.

O que torna as desistências mais frias é que é muito simples, claro.

Ou seja, uma NS profunda com desistência é o equivalente a uma rede Bayesiana. E o abandono está em muitos pacotes, você pode usá-lo primeiro para procurar por peixes em seus preditores/ alvos. E depois tente melhorar os resultados com Bayes. Em artigos de Vladimir Perervenko foi usada a desistência, é possível experimentar com base neles.

Eu experimentei, mas não encontrei nenhum avanço nos meus preditores.
Mas eu não fiz redes tão profundas que tive de largar 1000 neurónios delas. Eu não tentei mais do que N-100-100-100-100-1 (401 neurônios). Isto é, 100 pode ter sido removido, mas não 1000. Para remover 1000, você precisaria de uma rede com 4-10 mil neurônios e provavelmente levaria muito tempo para contar.
É possível que florestas com 1000 árvores tivessem resultados semelhantes e contassem muito mais rápido do que a NS.
 
elibrarius:
Eu não tentei mais que N-100-100-100-1 (401 neurônios).

Não se pode treinar monstros como aquele correctamente. Imho, precisamos de uma NS mais simples. Em algum lugar até 100 neurônios.

 
elibrarius:
Resumindo, a partir da parte 2 do artigo:

Isto é, uma NS profunda com uma desistência é análoga a uma rede Bayesiana. E o abandono está em muitos pacotes, você pode usá-los primeiro para procurar por peixes em seus preditores/ alvos. E depois tente melhorar os resultados com Bayes. Em artigos de Vladimir Perervenko foi usada a desistência, você pode experimentar com base neles.

Eu experimentei, mas não encontrei nenhum avanço nos meus palpiteiros.
Mas eu não fiz redes tão profundas que tive de largar 1000 neurónios delas. Eu não tentei mais do que N-100-100-100-100-1 (401 neurônios). Isto é, 100 pode ter sido removido, mas não 1000. Para remover 1000, você precisaria de uma rede com 4-10 mil neurônios e provavelmente levaria muito tempo para contar.
É possível que florestas com 1000 árvores tivessem resultados semelhantes e contassem muito mais rápido do que a NS.

Oh não sei, com qualquer número de árvores/madeira os akurasi deixam de crescer e ficam ali deitados no lastro, não melhorando nada. Deixá-los cair ou não deixá-los cair é um presente de morte.

Comparação grosseira entre Bayesian e desistentes na minha opinião, mas ainda não tenho muito conhecimento sobre o assunto, então não vou discutir, talvez sim

 
Maxim Dmitrievsky:

Uma comparação grosseira entre Bayes e desistentes na minha opinião, mas ainda não estou muito informado sobre o assunto e não vou discutir, talvez

Foi o autor deste artigo que fez a comparação, não eu. Ele escreveu seu artigo de outro, maior, que ele usou para suas experiências. Ou seja, esta comparação aparentemente vem dos desenvolvedores do método.

 
Maxim Dmitrievsky:

Oh não sei, com qualquer número de árvores/madeira os akurasi deixam de crescer e ficam ali deitados no lastro, não melhorando nada. Larguem-nos ou não, são um lenço morto.

se você vai construir uma floresta com 1000 árvores, provavelmente você deve fornecer 1% dos dados para cada floresta, ou seja, r=0,01, e não 0,1 ... 0,6 como recomendado para florestas com 100 árvores recomendadas.
 

Encontrei um código obscuro na floresta de Alglib. Código completo da função de cálculo de retropia a partir do dataanalysis.mqh:

//+------------------------------------------------------------------+
//| Average cross-entropy (in bits per element) on the test set      |
//| INPUT PARAMETERS:                                                |
//|     DF      -   decision forest model                            |
//|     XY      -   test set                                         |
//|     NPoints -   test set size                                    |
//| RESULT:                                                          |
//|     CrossEntropy/(NPoints*LN(2)).                                |
//|     Zero if model solves regression task.                        |
//+------------------------------------------------------------------+
static double CDForest::DFAvgCE(CDecisionForest &df,CMatrixDouble &xy,
                                const int npoints)
  {
//--- create variables
   double result=0;
   int    i=0;
   int    j=0;
   int    k=0;
   int    tmpi=0;
   int    i_=0;
//--- creating arrays
   double x[];
   double y[];
//--- allocation
   ArrayResizeAL(x,df.m_nvars);
   ArrayResizeAL(y,df.m_nclasses);
//--- initialization
   result=0;
   for(i=0;i<=npoints-1;i++)
     {
      for(i_=0;i_<=df.m_nvars-1;i_++)
         x[i_]=xy[i][i_];
      //--- function call
      DFProcess(df,x,y);
      //--- check
      if(df.m_nclasses>1)
        {
         //--- classification-specific code
         k=(int)MathRound(xy[i][df.m_nvars]);
         tmpi=0;
         for(j=1;j<=df.m_nclasses-1;j++)
           {
            //--- check
            if(y[j]>(double)(y[tmpi]))
               tmpi=j;
           }

         //--- check
         if(y[k]!=0.0)
            result=result-MathLog(y[k]);
         else
            result=result-MathLog(CMath::m_minrealnumber);
        }
     }
//--- return result
   return(result/npoints);
  }

O fragmento de código marcado em vermelho considera algo(tmpi) que não é usado de forma alguma. Então porque é que está incluído?
Ou falta alguma coisa ou o código não está completamente limpo.
Em geral, eu comecei a entrar nesta função porque queria procurar 1 árvore. E quando eu coloco número de árvores na floresta = 1, eu vi que todos os erros estão entre 0 e 1, e este de 100 a 300 + acontece.
Alguém entende a entropia cruzada - o código está correto ou algo está desfeito?

De acordo com a wikipedia , deveria ser



 

Eu comparei com o catbust - ele retorna bem, normalmente > 0,5 no teste... bem, como sempre

Vou ver o cálculo amanhã, talvez o código de depuração ainda esteja lá.

em geral esta métrica não tem utilidade aqui, pois não é usada para uma pausa prematura ou qualquer coisa... e não é informativa como resultado. É tomado um erro de classificação e pronto.