Aprendizado de máquina no trading: teoria, prática, negociação e não só - página 742
![MQL5 - Linguagem para estratégias de negociação inseridas no terminal do cliente MetaTrader 5](https://c.mql5.com/i/registerlandings/logo-2.png)
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
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:
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.
Vou dar cálculos que mostram que tudo é conversa fiada:
É 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?
Vou dar cálculos que mostram que tudo é conversa fiada:
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:
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.
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.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!!!
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