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

 
Andrey Khatimlianskii:

Neste tópico, um posto de hóspedes. Só passei por cá para partilhar um artigo.

Nummerai caiu no slogan "Proletários de todos os países se unem!" de Karl Marx, como interpretado por Geoffrey Hinton:)
 
Maxim Dmitrievsky:

Isto, a propósito, é exacto.

Considerando o número de idiotas no fórum (incluindo o seu mudo mágico favorito...) eu não acho que seja mais necessário apoiar este tópico, porque eu não recebi quase nenhum benefício para mim

Maxim, você está errado! Há um benefício para você, um benefício na própria formulação e apresentação das tarefas. No entanto, não estou a tentar persuadir-te.

 
Yuriy Asaulenko:

Maxim, você está errado! Há um benefício para si, um benefício na própria redacção e apresentação das tarefas. No entanto, não estou a persuadir.

Você pode ver que alguns idiotas clínicos vivem aqui, estes não são máscaras de fórum, mas casos reais, você lhes diz uma palavra e eles lhe dizem duas palavras após cada post.

 
elibrarius:

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 de entropia cruzada - o código está correto, ou algo está errado?

De acordo com a wikipedia , deveria ser



O valor em geral pode ser até ao infinito quando se calcula a perda logarítmica se se prevê que a classe correcta tenha probabilidade zero, porque a fórmula inclui todas as outras classes excepto com coeficiente zero, e parece haver alguma tentativa de resolver esta falha - em tmpi no laço encontre a classe que tem o valor de probabilidade mais alto na amostra, talvez quisesse adicionar à fórmula, mas provavelmente não pensou bem nisso:)
 
Ivan Negreshniy:
O valor em geral até ao infinito pode ser no cálculo da perda logarítmica se a probabilidade zero for prevista para a classe correcta, porque a fórmula inclui todas as outras classes excepto com coeficiente zero, e parece ter tentado resolver de alguma forma esta falha - em tmpi no laço encontra a classe que numa determinada amostra tem o valor de probabilidade mais alto, talvez quisesse adicionar à fórmula, mas aparentemente não a pensou bem:)
tmpi é usado apenas em 1 das 5 funções de erro. Aparentemente foi usado como um boneco para outras funções, mas em outras funções esqueceram-se de o remover.
No total, 1 tmpi está presente e em uso, mais 2 estão presentes mas não são utilizadas.
No conjunto, não afecta a operação.
 
elibrarius:
tmpi só é usado em 1 das 5 funções de erro. Aparentemente foi usado como um boneco para outras funções, mas esqueceu-se de o remover em outras.
No total, 1 tmpi está presente e em uso, mais 2 estão presentes mas não são usados.
Em geral, não afecta o funcionamento.

O que quero dizer é que uma boa fórmula para o cálculo de erros poderia levar em conta a distribuição de probabilidade em todas as classes, em vez de apenas uma correta.

Dito isto, se uma das amostras tem probabilidade zero de uma classe correta, então tudo voa para o infinito.

Aparentemente, é por isso que prefiro a regressão com um erro quadrático:)

 
Ivan Negreshniy:
Estou basicamente dizendo que uma boa fórmula de cálculo de erro poderia levar em conta a distribuição de probabilidade em todas as classes, não apenas uma correta.
Existem 5 funções de erro. Esta é um pouco estranha, mas as outras 4, como devem mudar de 0 para 1. Então há uma escolha)
 
Agora deixe Kesha (neto de SanSanych) e o investidor Aliosha, qualificado como investidor, dirigir a filial. Isso seria justo.
 
Alexander_K2:
Agora deixe Kesha (neto de SanSanYch) e Alyosha, que foi castigada pelos investidores, liderarem este fio condutor. Será justo.

Faz mais sentido abandonar este tópico e começar um novo, mais adequado, com outros temas relacionados.

A propósito, eu encontrei uma distribuição normal nos preços. Já escrevi na Dica que toda a anormalidade é do processamento de dados "incorrecto" - nós próprios o fazemos).

Um dia destes ou mais cedo, afixá-lo-ei no fio do Python.

 
Yuriy Asaulenko:

Faz mais sentido abandonar este tópico e iniciar um novo, mais adequado, com outros temas relacionados.

A propósito, eu encontrei uma distribuição normal nos preços. Já escrevi na Dica que toda a anormalidade é do processamento de dados "incorrecto" - nós próprios o fazemos).

Um dia destes ou mais cedo, afixá-lo-ei no fio Python.

Infelizmente, tendo em conta a falta de pessoas do nível de Matemat, Northwind e Prival no fórum, todos estes tópicos não têm futuro. IMHO.