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

 
Mihail Marchukajtes:


É aí que eu estou disposto a apostar. Isto é da prática. É isso que tenho observado enquanto usava o optimizador.


Mas na demonstração do seu site há 5 colunas e um grande número de filas
 
Mihail Marchukajtes:


Aqui é onde eu estou disposto a apostar. Isto é da prática. É o que eu observo enquanto uso o optimizador.

Se houver menos colunas do que linhas, o número de entradas torna-se menor do que o tamanho condicional do polinômio da rede.

Se o número de colunas e linhas for igual, então o número de entradas e o tamanho do polinômio são aproximadamente os mesmos.

Se houver mais colunas do que linhas, o tamanho do polinômio é menor do que o número de entradas.

Em outras palavras, é necessário que o número de colunas e filas seja aproximadamente igual. Então o polinômio é obtido com um número suficiente de entradas, e seu tamanho é aproximadamente igual ao número de entradas.

Em outras palavras. Quanto maior o arquivo, mais multiparamétrico o modelo se torna. O número de entradas e o tamanho do polinômio aumentam, o que indica que o modelo se torna mais inteligente. E assim por diante.

Além disso, ao executar o mesmo arquivo mais de uma vez, o conjunto de parâmetros de entrada é sempre diferente. Isto é devido à partição aleatória da amostra durante a divisão. Mas se rodarmos um e o mesmo arquivo e obtivermos modelos absolutamente diferentes, eles ainda funcionarão de forma idêntica, pelo menos deveriam. Esta é a resposta para a questão de quais peixes estão no arquivo dado. Se for diferente de uma execução para outra, isso significa que os dados não têm nada a ver com a saída. Como esta....

O polinômio é construído apenas para tirar tudo dele e deixar 3 para uma rede e 3 para outra.
 
elibrarius:
O Polynom é construído apenas para tirar tudo dele e deixar 3 para uma rede e 3 para a outra.

Olha para o código com cuidado. Há três estados: 1, 0 e -1. Portanto, este é o resultado de duas grelhas, para os sinais a serem transmitidos para o comércio....
 
Mihail Marchukajtes:


De que coeficientes de acoplamento estás a falar. Aqui está uma lista de inputs usados, mas o que você vê lá antes de cada polinômio há uma normalização, e há 8 inputs descritos, veja abaixo no final do arquivo.

//Variável x0: Del

//Variável x1: Del1

//Variável x2: VDel

//Variável x3: VDel1

//Variável x4: VDel6

//Variável x5: ST5

//Variável x6: VAD11

//Variável x7: VVolum4

Onde estão as três entradas????? Quando há oito deles.
você tem x0...x7 = p0...p7 - da fórmula acima (apenas nome diferente) a fórmula é retirada do artigo de Reshetov descrevendo seu neurônio. E de acordo com a fórmula existem apenas 3 entradas - A,B e C
 
Maxim Dmitrievsky:

Mas a demonstração no seu site tem 5 colunas e um grande número de filas

A questão é que descobri o seu ficheiro de demonstração ..... Há uma coisa que repete dados, imagine que existem 5 colunas e cada uma de suas linhas pode ser registrada apenas um dos três valores 1-1il0. Neste caso haverá filas duplicadas, e agora duplico o meu conjunto de dados. Simplesmente copie linhas e o nível de generalização aumentará significativamente, até 90%, mas infelizmente será um REBUILDAR. Eu sei... Já o testei mais do que uma vez, por isso... 12
 
elibrarius:
você tem x0...x7 = p0...p7 - da fórmula acima (apenas nome diferente) a fórmula é retirada do artigo de Reshetov descrevendo seu neurônio. E de acordo com a fórmula existem apenas 3 entradas - A,B e C

Sim, aquele artigo sobre o RNN não tem nada a ver com esse otimizador é um trabalho completamente diferente, você não entende. Embora dentro do otimizador algo possa ser usado a partir deste artigo, mas eles são trabalhos completamente diferentes se algo.....
 
Mihail Marchukajtes:

A questão é que descobri o ficheiro de demonstração dele..... O problema é que existem alguns dados repetidos, imagine que existem 5 colunas e cada linha pode conter apenas um dos três valores 1-1il0. Neste caso haverá filas duplicadas, e agora duplico o meu conjunto de dados. Basta copiar linhas e o nível de generalização aumentará significativamente, até 90%, mas infelizmente será um REBUILDAR. Eu sei... Já o testei mais do que uma vez, por isso... 12

É uma amostra dividida 50/50, não é? Estou a compará-la com outros modelos agora.
 
Eh, onde posso obter alguma energia.... mais potência :-)
 
Maxim Dmitrievsky:

É uma divisão 50/50? Estou a comparar com outros modelos agora.


Na verdade, dividir um conjunto de treino em duas amostras é muito complicado... Não há conceito de tempo, do passado para o futuro. não é necessário para a classificação, é necessário para a aproximação.

Mas a divisão também acontece de uma forma muito complicada. Aqui está uma dica. É importante que o número de zeros e de zeros na variável de saída seja igual. Então a divisão procede de uma forma clara, se o número não for igual, há uma adição. Em geral, uma forma inteligente de dividir lá se em que...

 
Mihail Marchukajtes:

Olha para o código com cuidado. Há três estados 1, 0 e -1. Então é o resultado de duas grelhas, para transmitir sinais para o comércio.....

Estou descobrindo como cada rede funciona separadamente. E o que obter dos seus produtos é uma questão de gosto)

A propósito, olhando para o código do seu arquivo - há uma fórmula diferente, não como no artigo, ou seja, não

double RNN(double p1,double p2,double p3)
  {
//--- вероятности для правил из базы знаний экспертной системы
   double y0 = x0; // Вероятность правила №0 в процентах
   double y1 = x1; // Вероятность правила №1 в процентах
   double y2 = x2; // Вероятность правила №2 в процентах
   double y3 = x3; // Вероятность правила №3 в процентах
   double y4 = x4; // Вероятность правила №4 в процентах
   double y5 = x5; // Вероятность правила №5 в процентах
   double y6 = x6; // Вероятность правила №6 в процентах
   double y7 = x7; // Вероятность правила №7 в процентах

//--- база знаний, состоящая из набора взаимоисключающих правил
   double probability=
                      (1.0 - p1) * (1.0 - p2) * (1.0 - p3) * y0 + // Правило №0
                      (1.0 - p1) * (1.0 - p2) * p3 * y1 +         // Правило №1
                      (1.0 - p1) * p2 * (1.0 - p3) * y2 +         // Правило №2
                      (1.0 - p1) * p2 * p3 * y3 +                 // Правило №3
                      p1 * (1.0 - p2) * (1.0 - p3) * y4 +         // Правило №4
                      p1 * (1.0 - p2) * p3 * y5 +                 // Правило №5
                      p1 * p2 * (1.0 - p3) * y6 +                 // Правило №6
                      p1 * p2 * p3 * y7;                          // Правило №7

//--- конвертируем проценты в вероятности
   probability=probability/100.0;

//--- возвращаем результат в виде вероятности
   return(probability);
  }

а

double getBinaryClassificator1(double v0, double v1, double v2, double v3, double v4, double v5, double v6, double v7) {
   double x0 = 2.0 * (v0 + 1189.0) / 2047.0 - 1.0;
   double x1 = 2.0 * (v1 + 810.0) / 2247.0 - 1.0;
   double x2 = 2.0 * (v2 + 1636.0) / 2155.0 - 1.0;
   double x3 = 2.0 * (v3 + 558.0) / 1252.0 - 1.0;
   double x4 = 2.0 * (v4 + 139.0) / 494.0 - 1.0;
   double x5 = 2.0 * (v5 + 74.97643) / 144.15451 - 1.0;
   double x6 = 2.0 * (v6 + 1026.56016) / 1938.48639 - 1.0;
   double x7 = 2.0 * (v7 + 4167.0) / 7074.0 - 1.0;
   double decision = 3.162907268170426 * sigmoid(x0)
  -1.0554004772410066 * sigmoid(x1 + x2 + x3)
  + 3.8921930574940347 * sigmoid(x0 + x1 + x4)
  -1.3775531643479957 * sigmoid(x1 + x2 + x3 + x4)
  -0.44704575810784447 * sigmoid(x0 + x5)
  -0.012703915477316044 * sigmoid(x0 + x1 + x5)
  -7.231026668467576 * sigmoid(x2 + x5)
  -0.059339966683175004 * sigmoid(x2 + x4 + x5)
  -2.786314588867378 * sigmoid(x0 + x1 + x2 + x4 + x5)
  + 2.1339726561913768 * sigmoid(x0 + x1 + x6)
  -0.49562529077183975 * sigmoid(x0 + x4 + x6)
  + 5.2147434454399475 * sigmoid(x0 + x3 + x4 + x6)
  -2.890797352663095 * sigmoid(x5 + x6)
  + 0.10933021175693726 * sigmoid(x0 + x5 + x6)
  -1.6844056248405446 * sigmoid(x1 + x2 + x5 + x6)
  -0.18093137034202272 * sigmoid(x1 + x3 + x5 + x6)
  + 0.6607987033451893 * sigmoid(x1 + x7)
  -1.8854921735476415 * sigmoid(x0 + x1 + x3 + x7)
  -1.1169615655906233 * sigmoid(x2 + x5 + x7)
  -0.6844731589452674 * sigmoid(x4 + x6 + x7)
  -0.4231236774571158 * sigmoid(x1 + x2 + x3 + x4 + x6 + x7)
  + 5.763615625891075 * sigmoid(1.0 + x1 + x2 + x3 + x5)
  -0.3138985187519697 * sigmoid(1.0 + x0 + x1 + x4 + x5)
  -1.8910224663455044 * sigmoid(1.0 + x1 + x3 + x4 + x5)
  + 2.1204658352467995 * sigmoid(1.0 + x2 + x3 + x4 + x5)
  + 6.219005597826903 * sigmoid(1.0 + x2 + x3 + x4 + x6)
  -3.740916662914772 * sigmoid(1.0 + x0 + x1 + x3 + x4 + x5 + x6);
   return decision;
}

Aparentemente, o autor modificou a fórmula

Portanto, talvez não 3 entradas (como na fórmula original), mas ainda 8... Eu ainda não entendi a essência da nova fórmula.