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

 

Lembre-se que eu disse que recebi um modelo que vem ganhando desde 01.31.2018 até os dias de hoje, e é assim que este modelo tem sido realizado nestas duas semanas de 03.05.2018 até os dias de hoje. Resultado do teste.

Muito bom para uma velhota treinada em 40 pontos e está no OOS há cerca de 1,5 meses.

E este é o seu OOS completo a partir de 01.31.2018.

E ainda pensas que é um ajuste???? Só para lembrar que as imagens mostram a secção de OOS.

 

Vou dar cálculos que mostram que tudo é conversa fiada:

  • sem uma justificação cuidadosa de que os preditores afectam a variável alvo
  • O sobretreinamento (sobreajustamento) só é determinado em arquivos na HORA fora do tempo de treinamento.

Dados iniciais:

Dois arquivos de tempo consecutivo com 54 preditores e uma variável alvo sobre a inversão de tendência: curto e longo

Os cálculos são feitos em guizo, que o primeiro arquivo R Rat_DF1a divide em três partes: trem, teste, validação. A divisão em partes é feita por amostra, ou seja, é feita uma seleção aleatória de barras do arquivo original.

Resultados do cálculo de RF: 500 árvores, 7 preditores por nó.

Número de observações utilizadas para construir o modelo: 2491

A imputação do valor em falta está activa.


Chamada:

randomForest(fórmula = trainY ~ ,

data = crs$dataset[crs$sample, c(crs$input, crs$target)],

ntree = 500, mtry = 7, importance = TRUE, replace = FALSE, na.action = randomForest::na.roughfix)


Tipo de floresta aleatória: classificação

Número de árvores: 500

Nº de variáveis tentadas em cada divisão: 7


Estimativa OOB da taxa de erro: 1,61%.

Matriz de confusão:

-1 0 1 classe.erro

-1 498 5 2 0.01386139

0 3 1067 17 0.01839926

1 1 12 886 0.01446051

É um resultado maravilhoso! Um graal! Note que a AOB é a parte do arquivo que não foi utilizada no treinamento.

Aqui também olhamos para o erro de treinamento. Vemos que 500 não é necessário, podemos passar com 50 ou 100 árvores.



Vamos verificar na secção de testes.

Matriz de erros para o modelo Random Forest em Rat_DF1a [teste] (conta):


Previsto

Actual -1 0 1 Erro

-1 110 3 0 2.7

0 3 221 2 2.2

1 0 2 194 1.0


Matriz de erros para o modelo Random Forest em Rat_DF1a [teste] (proporções):


Previsto

Actual -1 0 1 Erro

-1 20.6 0.6 0.0 2.7

0 0.6 41.3 0.4 2.2

1 0.0 0.4 36.3 1.0


Erro geral: 1,8%, Erro de classe média: 1,96667%.


Rattle timestamp: 2018-03-14 10:57:23 usuário


O resultado do treinamento é confirmado. Graal!


Vamos verificar de novo na secção de validação.

Matriz de erros do modelo Random Forest em Rat_DF1a [validar] (conta):


Previsto

Actual -1 0 1 Erro

-1 105 1 0 0.9

0 1 218 2 1.4

1 0 1 205 0.5


Matriz de erros do modelo Random Forest em Rat_DF1a [validar] (proporções):


Previsto

Actual -1 0 1 Erro

-1 19.7 0.2 0.0 0.9

0 0.2 40.9 0.4 1.4

1 0.0 0.2 38.5 0.5


Erro geral: 0,9%, Erro de classe média: 0,9333333%.


Rattle timestamp: 2018-03-14 10:59:52 usuário


Graal! Você pode correr para uma empresa de microfinanças e pedir emprestado o máximo de massa que puder!


Mas há uma MAS: a divisão do arquivo foi feita por barras de amostragem aleatórias, e será negociada estritamente pelo aumento do tempo.

Vamos verificar no arquivo onde esta cronologia foi salva - é Rat_DF1b

E aqui está o resultado:

Matriz de erros para o modelo Random Forest em Rat_DF1b (contagens):


Previsto

Actual -1 0 1 Erro

-1 0 324 237 100.0

0 0 633 540 46.0

1 0 152 697 17.9


Matriz de erros para o modelo Random Forest em Rat_DF1b (proporções):


Previsto

Actual -1 0 1 Erro

-1 0 12.5 9.2 100.0

0 0 24.5 20.9 46.0

1 0 5.9 27.0 17.9


Erro geral: 48,5%, Erro de classe média: 54,63333%.


Rattle timestamp: 2018-03-14 11:02:16 usuário


CATASTROPHE! O MODELO É REQUALIFICADO! OS PREDITORES CONTRA A VARIÁVEL ALVO SÃO APENAS RUÍDO, SÓ NO RUÍDO É QUE O MO PODE GERAR RESULTADOS TÃO SURPREENDENTES.


Mostrei-te um esquema normal, comum, de nível universitário, para encaixar e validar o modelo. O principal inconveniente: falta qualquer consideração sobre a relação entre os preditores e a variável alvo.

Mas o esquema deve SEMPRE ser pelo menos isso, e ainda NÃO está completo - você ainda precisa de uma execução de teste para confirmar o resultado do teste em um arquivo sequencial comum. Bem, e depois para a empresa de microfinanças.



 
SanSanych Fomenko:

Vou dar cálculos que mostram que tudo é conversa fiada:

  • O sobretreinamento (sobreajustamento) é determinado em arquivos apenas por TEMPO fora do tempo de treinamento.

É estranho, que tenhas tido tão bons resultados no teu teste. Nas minhas experiências e lá foi muito pior. Ao fazer a inicialização diferente do RNG antes de misturar consegui resultados diferentes em teste e validação - muito diferentes em diferentes RNG, tanto por erro como por número de negócios.

Como resultado, cheguei à conclusão de que o teste e a validação não são de todo necessários, e é necessário treinar num local e avaliar no outro (temo-lo como um ficheiro separado). Dessa forma, o factor aleatório de "boa sorte" da mistura será excluído.

 

Rapazes, o graal está pronto?

 
SanSanych Fomenko:

Vou dar cálculos que mostram que tudo é conversa fiada:

  • sem uma justificação cuidadosa de que os preditores afectam a variável alvo
  • O sobretreinamento (sobreajustamento) só é determinado em arquivos na HORA fora do tempo de treinamento.

Dados iniciais:

Dois arquivos de tempo consecutivo com 54 preditores e uma variável alvo sobre a inversão de tendência: curto e longo

Os cálculos são feitos em guizo, que o primeiro arquivo R Rat_DF1a divide em três partes: trem, teste, validação. A divisão em partes é feita por amostra, ou seja, é feita uma seleção aleatória de barras do arquivo fonte.



Mas há um MAS: a divisão do arquivo é feita por seleção aleatória de barras, enquanto que a negociação será feita estritamente pelo aumento do tempo.

Vamos verificar o arquivo onde esta cronologia foi gravada - Rat_DF1b



Erro geral: 48,5%, Erro de classe média: 54,63333%.


Rattle timestamp: 2018-03-14 11:02:16 usuário


CATASTROPHE! O MODELO É REQUALIFICADO! OS PREDITORES CONTRA A VARIÁVEL ALVO SÃO APENAS RUÍDO, SÓ NO RUÍDO É QUE O MO PODE GERAR RESULTADOS TÃO SURPREENDENTES.


Mostrei-te um esquema normal, comum, de nível universitário, para encaixar e validar o modelo. O principal inconveniente: falta qualquer consideração sobre a relação entre os preditores e a variável alvo.

Mas o esquema deve SEMPRE ser assim, e NÃO está completo - você ainda precisa de um teste para confirmar o resultado em um arquivo sequencial comum. Bem, então para a empresa de micro finanças.



Este é um erro básico na divisão em subconjuntos (trem/val/teste). A ordem deve ser a seguinte:

  1. Dividir o conjunto de dados ordenados por tempo em comboio/val/teste.
  2. No treinamento, apenas o conjunto de trem (nunca o conjunto de validação e o conjunto de teste) deve ser embaralhado. Estou a falar da classificação, claro.
  3. Todos os parâmetros de transformação e transformação de preditores são obtidos apenas no conjunto de treinamento. Usamo-los em val/test.
  4. Avaliação, seleção e criação de preditores apenas no conjunto de treinamento.

Boa sorte.

 

Quando se trata de estimar preditores usando modelos, eu acho que o pacote mais avançado é o RandomUniformForest. Trata em grande detalhe a importância dos preditores de diferentes pontos de vista. Eu recomendo dar uma olhada. Em um dos meus artigos eu o descrevi em detalhes.

Recusei-me a usar a selecção de modelos de preditores. Limitado às especificidades do modelo utilizado.

Boa sorte.

 
Vladimir Perervenko:
  1. Quando treinamos, misturamos apenas o conjunto de treinamento (nunca o conjunto de validação e o conjunto de teste). A falar de classificação, claro.

De Nikopenko S., Kadurin A., Arkhangelskaya E. "Deep Learning" p. 139.


Para que os dados de validação sejam da mesma natureza que os dados de treinamento, é necessário misturá-los. Caso contrário, um pedaço aleatório de tendência ou um apartamento pode aparecer lá. Como resultado não vamos avaliar o modelo pela sua capacidade de generalizar, mas sim adequá-lo a um determinado pedaço de história contínua num determinado período de tempo (vamos parar por aí, afinal de contas).

Mas, como escrevi acima, após experimentar uma inicialização diferente do FSM, na qual foram obtidos conjuntos válidos diferentes pelo sucesso, - cheguei à conclusão, que o lote válido provavelmente não é necessário. Além disso, é possível utilizar outros métodos de regularização. No entanto, estas experiências foram feitas com uma pequena quantidade de dados (5 dias), e se o número de exemplos aumentar 10 vezes, talvez a mistura seja mais uniforme e os dados sobre estas secções sejam homogéneos (ou seja, da mesma natureza) - nesse caso, os dados válidos podem ser úteis.

Atualização: No caso de haver muitos dados e várias inversões e tendências em ambas as direções estiverem incluídas na trama válida, a mistura com o conjunto de treinamento pode não ser necessária.
 
Vladimir Perervenko:

Quando se trata de estimar preditores usando modelos, eu acho que o pacote mais avançado é o RandomUniformForest. Trata em grande detalhe a importância dos preditores de diferentes pontos de vista. Eu recomendo dar uma olhada. Em um dos meus artigos eu o descrevi em detalhes.

Recusei-me a usar a selecção de modelos de preditores. Limitado às especificidades do modelo utilizado.

Boa sorte.

E eu acho que o mais avançado é um produto completamente diferente ;-).... Em que é implementado de uma forma ligeiramente diferente.

Duas redes, onde a amostra é dividida em 2 subamostras trem e teste, onde para a rede B (o segundo polinômio), o trainômio é o teste e o teste é o trainômio. Isto conta exclusivamente a amostra de teste, onde metade é trabalhada por um polinómio, a outra metade por outro. E as aulas são divididas igualmente. Ou seja, uns são divididos igualmente em bandeja e teste, e zeros também são divididos igualmente. Infelizmente, não há tempo lá. O ficheiro pode ser definido em qualquer ordem de vectores. Talvez esta seja a chave para baixar o excesso.


A verdade que eu não entendo bem, pode estar falando da seção de validação é o traço da seção no meu otimizador favorito?

E no seu caso a secção de testes é um controlo, quando deixamos a rede funcionar durante algum tempo... Estou confuso com os conceitos...

 

Em qualquer caso, acredito que a seção de testes não pode influenciar de forma alguma a seção de treinamento e deve ser formada da forma mais aleatória possível para tarefas de classificação, onde a seção de testes, mesmo que ordenada pelo tempo, não dependerá desse mesmo tempo. Porquê? Porque ao misturar todos os dados estamos a tentar tirar o verdadeiro potencial deste conjunto, e não uma feliz coincidência de circunstâncias sob a forma de ordenação. Então, quando embaralhas os teus dados, vês realmente o que pode fazer... Como esta....

Com múltiplas otimizações, o resultado deve saltar dentro de 10-20% é o mesmo por causa da encomenda dos dados, uma vez bem ordenados, a outra um pouco pior, etc etc.... IMHO!!!

 
elibrarius:

De Nikopenko S., Kadurin A., Arkhangelskaya E. "Deep Learning" p. 139.


Para que os dados de validação sejam da mesma natureza que os dados de treinamento - você precisa embaralhá-los juntos. Caso contrário, pode haver um pedaço aleatório de tendência ou plano. Como resultado, não vamos avaliar o modelo pela sua capacidade de generalizar, mas sim adequá-lo a uma determinada peça de história contínua num determinado período de tempo (afinal de contas, vamos parar por aí).

Mas, como escrevi acima, após experimentar uma inicialização diferente do FSM, na qual foram obtidos conjuntos válidos diferentes pelo sucesso, - cheguei à conclusão, que o lote válido provavelmente não é necessário. Além disso, é possível utilizar outros métodos de regularização. No entanto, estas experiências foram feitas com uma pequena quantidade de dados (5 dias), e se o número de exemplos aumentar 10 vezes, talvez a mistura seja mais uniforme e os dados nestas parcelas sejam mais homogêneos (ou seja, da mesma natureza).

Atualização: Se houver muitos dados e a trama válida incluir várias flautas e tendências em ambas as direções, então a mistura com o conjunto de treinamento pode não ser necessária neste caso.

O espírito juvenil da contradição é indomável :)

Estava a falar da classificação das séries cronológicas. Por exemplo, para M15 duas semanas para treinar aproximadamente 1000 barras. A próxima semana para validação é de 500 barras. Durante o treinamento misturamos o conjunto de treinamento, mas não o de validação.

A mistura de todo o conjunto antes da separação é necessária em dois casos: conjuntos estratificados e validação cruzada. Também neste caso, a amostragem deve ser feita sem substituição para evitar a inclusão dos mesmos exemplos em ambos os conjuntos.

Dado que não temos limite para o número de exemplos e que estes são séries temporais, é melhor dividir antes de misturar. IMHO