Não vejo nenhuma prova de que a NS tenha lidado com alguma coisa.
O excesso de aprendizagem é um mal mundial na ciência e na construção de modelos, em particular.
Portanto, é necessário um erro para três conjuntos:
conjuntos de aprendizagem. A forma como o guizo o entende (OOB, teste, validação) vai funcionar muito bem.
um conjunto que está fora, em termos de datas, do conjunto de treino.
Outro conjunto que está fora, no sentido das datas, do conjunto de treino.
Os dois últimos conjuntos são desembaciados quando chegam ao terminal, bases atrás da barra.
Deve haver aproximadamente o mesmo erro em todos os três conjuntos. Ao fazer isso, você terá que consertar o conjunto de preditores que você toma ao treinar o modelo.
No início não considerei a hipótese de me reciclar nesta tarefa, não havia necessidade. A primeira vez que um neurônio foi com apenas um neurônio na camada interna. Verifiquei agora, o erro no treino longo é de cerca de 45%, e não vai mais baixo. A rede dá essas entradas 1,3,5,7,9,11 pesos mais altos quando se treina, mas não pode realmente treinar devido à falta de neurónios. Esta foi a idéia de espremer o máximo resultado correto para fora dele, em condições muito limitadas, e ver quais insumos ele dará mais peso.
Agora com o ficheiro de validação, posso trabalhar mais a sério. Agora eu dividi o arquivo fonte em 2 partes (85% e 15%), treinei na primeira parte, às vezes parei de treinar e medi erros em ambas as partes. Esses exemplos do arquivo de 15% não chegaram ao treinamento, mas o erro neles diminuiu aproximadamente o mesmo que na parte do treinamento. Quando o erro se tornou 0% em ambas as partes do arquivo, eu parei de treinar e testei os neurônios no segundo arquivo, o erro apareceu lá em ~0%. Acontece que para esta tarefa o sobretreinamento nem sequer foi alcançado, é engraçado.
Mas a neurônica no forex é pior do que neste problema. No início o erro cai tanto nas amostras de treinamento como nas de validação. Então o erro continua a cair na amostra de treinamento, mas começa a crescer na amostra de teste, neste momento é hora de parar o treinamento. Em seguida, eu geralmente testei o resultado no histórico pré-amostra e novamente no histórico pós-amostra. Para mim, são três conjuntos de dados, como o teu. Mas o erro em todos os três conjuntos é diferente até agora (e grande fora do período de treinamento).
Eu tinha idéias diferentes de como melhorar os resultados, por exemplo para suavizar os resultados ou adicionar um filtro (<0.1 - vender, >0.9 - comprar, e tudo no meio - período sem troca). Você pode melhorar os resultados adicionando filtro à saída neural e otimizando-a também, mas para testes iniciais não ajudou em nada. Outra boa idéia foi que se o neurônio foi treinado em algum período da história, então você pode otimizar o filtro no histórico anterior a esse período. Para um erro antes do período de optimização está provavelmente associado a um erro após o período de optimização. Mas não funcionou - se existem três períodos de história - "antes do neurônio" - "aprendendo neurônio" - "depois do neurônio", então todos os três terão seus filtros ideais que não estão conectados de forma alguma.
Até agora concluí que o modelo deve ter um pequeno erro (<10%) para o treinamento e as amostras de teste. Não aplicar filtros aos resultados dos modelos, e nenhum trabalho de adivinhação como "inverter o resultado a cada quarta semana". Não cair em períodos menores que M15. Tento novas ideias diferentes e é bom que pelo menos uma em cada dez melhore o resultado. E de alguma forma isso deve resultar em um modelo lucrativo.
No início não considerei a possibilidade de me reciclar nesta tarefa, não havia necessidade. A primeira vez foi com apenas um neurónio na camada interior. Verifiquei agora, o erro durante o longo treinamento é de cerca de 45%, e não vai mais baixo. A rede dá essas entradas 1,3,5,7,9,11 pesos mais altos quando se treina, mas não pode realmente treinar devido à falta de neurónios. Esta foi a idéia de espremer o máximo resultado correto para fora dele, em condições muito limitadas, e ver quais insumos ele dará mais peso.
Agora com o ficheiro de validação, posso trabalhar mais a sério. Agora eu tenho arquivo fonte dividido em 2 partes (85% e 15%), treinado na primeira parte, às vezes parei de treinar e medi erros em ambas as partes. Esses exemplos do arquivo de 15% não chegaram ao treinamento, mas o erro neles diminuiu aproximadamente o mesmo que na parte do treinamento. Quando se tornou 0% em ambas as partes do arquivo, eu parei de treinar e testei a neurônica no segundo arquivo, o erro ali era de ~0%. Acontece que para esta tarefa o sobretreinamento nem sequer foi alcançado, é engraçado.
Mas a neurônica no forex é pior do que neste problema. No início o erro cai tanto nas amostras de treinamento como nas de validação. Então o erro continua a cair na amostra de treinamento, mas começa a crescer na amostra de teste, neste momento é hora de parar o treinamento. Em seguida, eu geralmente testei o resultado no histórico pré-amostra e novamente no histórico pós-amostra. Para mim, são três conjuntos de dados, como o teu. Mas o erro em todos os três conjuntos é diferente até agora (e grande fora do período de treinamento).
Eu tinha idéias diferentes de como melhorar os resultados, por exemplo para suavizar os resultados ou adicionar um filtro (<0.1 - vender, >0.9 - comprar, e tudo no meio - período sem troca). Você pode melhorar os resultados adicionando filtro à saída neural e otimizando-a também, mas para testes iniciais não ajudou em nada. Outra boa idéia foi que se o neurônio foi treinado em algum período da história, então você pode otimizar o filtro no histórico anterior a esse período. Para um erro antes do período de otimização está provavelmente associado a um erro após o período de otimização. Mas não funcionou - se existem três períodos de história - "antes do neurônio" - "aprendendo neurônio" - "depois do neurônio", então todos os três terão seus filtros ideais que não estão conectados de forma alguma.
Até agora concluí que o modelo deve ter um pequeno erro (<10%) para o treinamento e as amostras de teste. Nenhum filtro deve ser aplicado ao resultado do modelo, e nenhuma suposição como "inverter o resultado a cada quarta semana". Não cair em períodos menores que M15. Tento novas ideias diferentes e é bom que pelo menos uma em cada dez melhore o resultado. E de alguma forma isso deve resultar em um modelo lucrativo.
Está tudo nos dados )
Os dados em todos os conjuntos devem conter observações mutuamente independentes. Mas mesmo neste caso, a validação dará o pior resultado.
Eu tentei modelos diferentes do Rattle, a floresta também deu bons resultados.
Passo 1 - a floresta aprendeu algo, e nas entradas das estatísticas 1,3,5,7,9,11 parecem de alguma forma separadas. Erro no arquivo de treinamento 0%, no arquivo de validação 46%
Etapa 2 - deixou apenas as entradas 1,3,5,7,9,11 no arquivo e o resultado. Treinou a floresta novamente no novo arquivo, agora o erro é 0% tanto nos arquivos de treinamento quanto nos de validação, tudo é legal. A única nuance foi que Rattle para o segundo passo definiu o parâmetro "Número de variáveis" para 2, provavelmente porque o arquivo é menor em tamanho. Mudei-o para 4, como no primeiro passo.
É bom ver um irmão em mente baseado em chocalhos. Pelo menos podemos comparar resultados.
Assim como a minha própria experiência.
Tiramos o chocalho e os modelos dele.
No modelo de aba aprendemos, obtendo o valor da AOB, e na aba Avaliar avaliamos sobre os conjuntos de Validação e Teste. Temos três números.
Argumento que os resultados obtidos, se o conjunto de preditores não foi previamente limpo de preditores de ruído - estes resultados são sobre nada, muito provavelmente apenas um conjunto de números.
Na aba Avaliar, além de obter os resultados listados, o conjunto deve ser colocado na janela Dataset R. É muito importante que este conjunto seja obtido dividindo mecanicamente o arquivo original, ou seja, o primeiro arquivo para os três dígitos, por exemplo, de 1 de janeiro de 2014 a 1 de janeiro de 2015, mas o arquivo no
R Dataset necessariamente após 1 de janeiro de 2015 sem qualquer amostragem aleatória e outros truques utilizados em R. É apenas rombo, mecânico.
Eu não reconheço nenhuma outra forma de avaliar o sucesso de separar os preditores significativos dos ruidosos, porque o meu método proposto imita a negociação real.
Poderia publicar os quatro números, por favor? Incluindo o resultado no arquivo da janela do R Dataset?
Eu tentei modelos diferentes do Rattle, a floresta também deu bons resultados.
Passo 1 - a floresta treinou algo, e nas entradas das estatísticas 1,3,5,7,9,11 parecem de alguma forma separadas. O erro no ficheiro de formação é 0%, no ficheiro de validação é de 46%.
Etapa 2 - deixou apenas as entradas 1,3,5,7,9,11 no arquivo e o resultado. Treinou a floresta novamente no novo arquivo, agora o erro é 0% tanto nos arquivos de treinamento quanto nos de validação, tudo é legal. A única nuance foi que Rattle para o segundo passo definiu o parâmetro "Número de variáveis" para 2, provavelmente porque o arquivo é menor em tamanho. Mudei-o para 4, como no primeiro passo.
Interessante... A profundidade tem de ser definida para 6 variáveis, a fim de captar todas as variáveis relevantes.
Eu tentei modelos diferentes do Rattle, a floresta também deu bons resultados.
Passo 1 - a floresta treinou algo, e nas entradas das estatísticas 1,3,5,7,9,11 parecem de alguma forma separadas. O erro no ficheiro de formação é 0%, no ficheiro de validação é de 46%.
Etapa 2 - deixou apenas as entradas 1,3,5,7,9,11 no arquivo e o resultado. Treinou a floresta novamente no novo arquivo, agora o erro é 0% tanto nos arquivos de treinamento quanto nos de validação, tudo é legal. A única nuance foi que Rattle para o segundo passo definiu o parâmetro "Número de variáveis" para 2, provavelmente porque o arquivo é menor em tamanho. Mudei-o para 4, como no primeiro passo.
No primeiro, a floresta usou ruídos para o treinamento, o que não é bom.
Poderia publicar os quatro números, por favor? Incluindo o resultado em ficheiro da janela do R Dataset?
Fez isso com neuronka - dummy_set_features.csv é dividido em 3 partes 70%/15%/15%; dummy_set_validation.csv usado na aba de avaliação como "arquivo csv" (é essencialmente o mesmo que R Dataset, apenas um formato de arquivo diferente).
Tirei o registro do Rattle, removi essas duas limitações da chamada neurônica, sobre a qual escrevi anteriormente, executei-o em R, mas o modelo ainda está subtreinado (erro de 35% na amostra de treinamento). Então acontece, se você reduzir a amostra de treinamento, então o resultado do treinamento é pior. Mas você pode aumentar o número de neurônios na camada interna, isso deve melhorar a aprendizagem.
Mudei o número de neurónios de 10 para 20, voltei a correr o treino, agora o erro no treino tornou-se 0%. Erro na amostra de validação é de 0,6%, erro na amostra de teste é de 0,1%. Erro no arquivo dummy_set_validation.csv é 0,3%. Tudo bem, R na aplicação.
Interessante, acontece que os problemas de treinamento dos neurônios são muito diferentes dos problemas das árvores. Para mim o problema com nn é pegar o número certo de neurônios internos e suspender a aprendizagem antes que a rede comece a se reciclar. Basicamente, quanto mais neurônios, melhor, mas isso afeta muito a RAM necessária e o tempo de treinamento. Os preditores supérfluos não são um grande obstáculo para a aprendizagem, a neurônica geralmente aprende tão bem com eles, mas eles aumentam o tempo de treinamento, e é melhor se livrar deles para torná-lo mais rápido.
Uma vez que eu usei a rede mt4 auto-escrita, um EA poderia aprender e negociar imediatamente. Havia problemas com a velocidade de aprendizagem, inicialização de pesos, algoritmos de aprendizagem. Havia demasiados pequenos problemas, era difícil conseguir bons resultados mesmo com uma amostra de treino, por isso finalmente desisti e agora trabalho em R. O pacote nnet pode ser treinado pelo algoritmo bfgs, ele remove todos aqueles pequenos problemas. Mas o pacote tem um limite de apenas 1 camada interior. Eu quero ter pelo menos 3 camadas internas, mas com o algoritmo bfgs, caso contrário haverá muitos problemas com a aprendizagem novamente.
Fez isso com neurônio - dummy_set_features.csv é dividido em 3 partes 70%/15%/15% como padrão; dummy_set_validation.csv usado na aba de avaliação como "arquivo csv" (este é essencialmente o mesmo que R Dataset, apenas um formato de arquivo diferente).
Não, não é a mesma coisa.
Surpreendente, eu discuto este assunto com muitas pessoas e NENHUMA o faz da forma como escrevo. E sei o que estou escrevendo, porque passei meio ano em exercícios como o seu, e fora do chocalho(). O que não coloco no testador, recebo um erro completamente diferente. Então eu fiz o que descrevi acima e o erro no testador praticamente coincidiu com o erro no arquivo R Dataset.
Eu dei ao Alexey três arquivos, que são obtidos dividindo mecanicamente um grande arquivo em três partes. Na primeira parte exercitamos, aprendemos, avaliamos... E nos outros dois, verificamos os números que temos no primeiro. Se os três arquivos tiverem erros superiores a 20%(!), ou mais precisamente, mais perto de 40%, o modelo não é retrabalhado e você pode trabalhar com ele.
Os 3 arquivos acima têm 27 preditores e 6 variáveis alvo. Os 27 preditores foram selecionados entre 170 preditores pelos meus próprios algoritmos. A partir de hoje, estes 27 preditores não conduzem a modelos demasiado treinados. Mas os restantes 143 preditores do meu conjunto são ruído e sobre este ruído pode facilmente obter um erro comparável ao seu, mas o modelo está sobre-treinado e não é adequado para uso posterior.
Por que há menos erros nos preditores de ruído do que nos preditores significativos?
Do meu ponto de vista, como o algoritmo de ajuste do modelo tende a reduzir o erro de ajuste, ele é sempre capaz de encontrar algo entre os valores ruidosos e aleatórios que é melhor que os preditores significativos. Como resultado, quanto menor o erro, menos preditores significativos estão envolvidos na construção do modelo!
PS
A julgar pelo erro, ou a NS está 100% sobretreinada, ou a olhar para o futuro.
O "ficheiro CSV" e o "conjunto de dados R" no separador de avaliação são simplesmente formas diferentes de especificar a fonte de dados. Se você alimentar os mesmos dados com eles, você obterá o mesmo resultado ao testar o modelo.
então este conjunto de dados_validate estará agora disponível no separador avaliar como conjunto de dados R. Mas o resultado da verificação do modelo acabará sendo o mesmo que se você apenas selecionar a opção de arquivo csv e especificar o arquivo C:/dummy_set_validation.csv, os dados para o teste serão idênticos em ambos os casos.
O treinamento em si foi em um arquivo diferente, dummy_set_features.csv, então é impossível olhar para o futuro aqui, porque os dados em ambos os arquivos são diferentes, e não dependentes do tempo (mas dependentes da fórmula). Eu acho que a neurônica fez um ótimo trabalho e encontrou 6 inputs que determinam o resultado, reduziram a influência de outros inputs, e com alguma lógica neural descreveu a fórmula desejada.
Só para o caso de ter verificado os dois ficheiros para encontrar cordas duplicadas, se houver alguma. Aqui está o código em R:
#читаем данные из файлов для обучения и валидации
dataset_train <- read.csv("file:///C:/dummy_set_features.csv", na.strings=c(".", "NA", "", "?"), strip.white=TRUE, encoding="UTF-8")
dataset_validate <- read.csv("file:///C:/dummy_set_validation.csv", na.strings=c(".", "NA", "", "?"), strip.white=TRUE, encoding="UTF-8")
anyDuplicated(dataset_train) #количество повторных строк в первом файле - 567
anyDuplicated(dataset_validate) #количество повторных строк во втором файле - 202# это покачто просто повторные строки в обоих файла по отдельности. Это не вредит, но и ничего не улучшает, лучше их убрать.
dataset_train <- unique(dataset_train)
dataset_validate <- unique(dataset_validate)
#Теперь можно узнать сколько строк из dataset_train повторяются в dataset_validate
dataset_combined <- rbind(dataset_train, dataset_validate) #Объединяем оба файла в один
nrow(dataset_combined) - nrow(dataset_combined[!duplicated(dataset_combined), ]) #количество повторенных строк - 23. Таких повторов быть не должно, их надо удалить.
#Удаление повторенных строк из dataset_validate
dataset_validate <- dataset_validate[!(tail(duplicated(dataset_combined), nrow(dataset_validate))), ]
#Удаление из памяти объединённого файла, он больше не нужен
rm(dataset_combined)
Se isto for feito antes de chocalhar, então ambas as tabelasdataet_train edataet_validate estão disponíveis para treinamento e verificação do modelo, e não haverá duplicatas. Glory R.
o arquivo de validação do modelo continha 23 repetições da amostra de treinamento, mas além disso tem mais 3000 filas únicas, de modo que a avaliação do modelo não poderia ser significativamente afetada.
É assim que deve ser. O arquivo é gerado por números aleatórios.
Em geral, eu sobrestimei a complexidade da tarefa. Na verdade, já está resolvido pela floresta. Você pode se perguntar como isso é possível à luz da forma como a floresta funciona.
Não vejo nenhuma prova de que a NS tenha lidado com alguma coisa.
O excesso de aprendizagem é um mal mundial na ciência e na construção de modelos, em particular.
Portanto, é necessário um erro para três conjuntos:
Os dois últimos conjuntos são desembaciados quando chegam ao terminal, bases atrás da barra.
Deve haver aproximadamente o mesmo erro em todos os três conjuntos. Ao fazer isso, você terá que consertar o conjunto de preditores que você toma ao treinar o modelo.
No início não considerei a hipótese de me reciclar nesta tarefa, não havia necessidade. A primeira vez que um neurônio foi com apenas um neurônio na camada interna. Verifiquei agora, o erro no treino longo é de cerca de 45%, e não vai mais baixo. A rede dá essas entradas 1,3,5,7,9,11 pesos mais altos quando se treina, mas não pode realmente treinar devido à falta de neurónios. Esta foi a idéia de espremer o máximo resultado correto para fora dele, em condições muito limitadas, e ver quais insumos ele dará mais peso.
Agora com o ficheiro de validação, posso trabalhar mais a sério. Agora eu dividi o arquivo fonte em 2 partes (85% e 15%), treinei na primeira parte, às vezes parei de treinar e medi erros em ambas as partes. Esses exemplos do arquivo de 15% não chegaram ao treinamento, mas o erro neles diminuiu aproximadamente o mesmo que na parte do treinamento. Quando o erro se tornou 0% em ambas as partes do arquivo, eu parei de treinar e testei os neurônios no segundo arquivo, o erro apareceu lá em ~0%. Acontece que para esta tarefa o sobretreinamento nem sequer foi alcançado, é engraçado.
Mas a neurônica no forex é pior do que neste problema. No início o erro cai tanto nas amostras de treinamento como nas de validação. Então o erro continua a cair na amostra de treinamento, mas começa a crescer na amostra de teste, neste momento é hora de parar o treinamento. Em seguida, eu geralmente testei o resultado no histórico pré-amostra e novamente no histórico pós-amostra. Para mim, são três conjuntos de dados, como o teu. Mas o erro em todos os três conjuntos é diferente até agora (e grande fora do período de treinamento).
Eu tinha idéias diferentes de como melhorar os resultados, por exemplo para suavizar os resultados ou adicionar um filtro (<0.1 - vender, >0.9 - comprar, e tudo no meio - período sem troca). Você pode melhorar os resultados adicionando filtro à saída neural e otimizando-a também, mas para testes iniciais não ajudou em nada. Outra boa idéia foi que se o neurônio foi treinado em algum período da história, então você pode otimizar o filtro no histórico anterior a esse período. Para um erro antes do período de optimização está provavelmente associado a um erro após o período de optimização. Mas não funcionou - se existem três períodos de história - "antes do neurônio" - "aprendendo neurônio" - "depois do neurônio", então todos os três terão seus filtros ideais que não estão conectados de forma alguma.
Até agora concluí que o modelo deve ter um pequeno erro (<10%) para o treinamento e as amostras de teste. Não aplicar filtros aos resultados dos modelos, e nenhum trabalho de adivinhação como "inverter o resultado a cada quarta semana". Não cair em períodos menores que M15. Tento novas ideias diferentes e é bom que pelo menos uma em cada dez melhore o resultado. E de alguma forma isso deve resultar em um modelo lucrativo.
No início não considerei a possibilidade de me reciclar nesta tarefa, não havia necessidade. A primeira vez foi com apenas um neurónio na camada interior. Verifiquei agora, o erro durante o longo treinamento é de cerca de 45%, e não vai mais baixo. A rede dá essas entradas 1,3,5,7,9,11 pesos mais altos quando se treina, mas não pode realmente treinar devido à falta de neurónios. Esta foi a idéia de espremer o máximo resultado correto para fora dele, em condições muito limitadas, e ver quais insumos ele dará mais peso.
Agora com o ficheiro de validação, posso trabalhar mais a sério. Agora eu tenho arquivo fonte dividido em 2 partes (85% e 15%), treinado na primeira parte, às vezes parei de treinar e medi erros em ambas as partes. Esses exemplos do arquivo de 15% não chegaram ao treinamento, mas o erro neles diminuiu aproximadamente o mesmo que na parte do treinamento. Quando se tornou 0% em ambas as partes do arquivo, eu parei de treinar e testei a neurônica no segundo arquivo, o erro ali era de ~0%. Acontece que para esta tarefa o sobretreinamento nem sequer foi alcançado, é engraçado.
Mas a neurônica no forex é pior do que neste problema. No início o erro cai tanto nas amostras de treinamento como nas de validação. Então o erro continua a cair na amostra de treinamento, mas começa a crescer na amostra de teste, neste momento é hora de parar o treinamento. Em seguida, eu geralmente testei o resultado no histórico pré-amostra e novamente no histórico pós-amostra. Para mim, são três conjuntos de dados, como o teu. Mas o erro em todos os três conjuntos é diferente até agora (e grande fora do período de treinamento).
Eu tinha idéias diferentes de como melhorar os resultados, por exemplo para suavizar os resultados ou adicionar um filtro (<0.1 - vender, >0.9 - comprar, e tudo no meio - período sem troca). Você pode melhorar os resultados adicionando filtro à saída neural e otimizando-a também, mas para testes iniciais não ajudou em nada. Outra boa idéia foi que se o neurônio foi treinado em algum período da história, então você pode otimizar o filtro no histórico anterior a esse período. Para um erro antes do período de otimização está provavelmente associado a um erro após o período de otimização. Mas não funcionou - se existem três períodos de história - "antes do neurônio" - "aprendendo neurônio" - "depois do neurônio", então todos os três terão seus filtros ideais que não estão conectados de forma alguma.
Até agora concluí que o modelo deve ter um pequeno erro (<10%) para o treinamento e as amostras de teste. Nenhum filtro deve ser aplicado ao resultado do modelo, e nenhuma suposição como "inverter o resultado a cada quarta semana". Não cair em períodos menores que M15. Tento novas ideias diferentes e é bom que pelo menos uma em cada dez melhore o resultado. E de alguma forma isso deve resultar em um modelo lucrativo.
Eu tentei modelos diferentes do Rattle, a floresta também deu bons resultados.
Passo 1 - a floresta aprendeu algo, e nas entradas das estatísticas 1,3,5,7,9,11 parecem de alguma forma separadas. Erro no arquivo de treinamento 0%, no arquivo de validação 46%
Etapa 2 - deixou apenas as entradas 1,3,5,7,9,11 no arquivo e o resultado. Treinou a floresta novamente no novo arquivo, agora o erro é 0% tanto nos arquivos de treinamento quanto nos de validação, tudo é legal. A única nuance foi que Rattle para o segundo passo definiu o parâmetro "Número de variáveis" para 2, provavelmente porque o arquivo é menor em tamanho. Mudei-o para 4, como no primeiro passo.
Dr.Trader
É bom ver um irmão em mente baseado em chocalhos. Pelo menos podemos comparar resultados.
Assim como a minha própria experiência.
Tiramos o chocalho e os modelos dele.
No modelo de aba aprendemos, obtendo o valor da AOB, e na aba Avaliar avaliamos sobre os conjuntos de Validação e Teste. Temos três números.
Argumento que os resultados obtidos, se o conjunto de preditores não foi previamente limpo de preditores de ruído - estes resultados são sobre nada, muito provavelmente apenas um conjunto de números.
Na aba Avaliar, além de obter os resultados listados, o conjunto deve ser colocado na janela Dataset R. É muito importante que este conjunto seja obtido dividindo mecanicamente o arquivo original, ou seja, o primeiro arquivo para os três dígitos, por exemplo, de 1 de janeiro de 2014 a 1 de janeiro de 2015, mas o arquivo no
R Dataset necessariamente após 1 de janeiro de 2015 sem qualquer amostragem aleatória e outros truques utilizados em R. É apenas rombo, mecânico.
Eu não reconheço nenhuma outra forma de avaliar o sucesso de separar os preditores significativos dos ruidosos, porque o meu método proposto imita a negociação real.
Poderia publicar os quatro números, por favor? Incluindo o resultado no arquivo da janela do R Dataset?
Eu tentei modelos diferentes do Rattle, a floresta também deu bons resultados.
Passo 1 - a floresta treinou algo, e nas entradas das estatísticas 1,3,5,7,9,11 parecem de alguma forma separadas. O erro no ficheiro de formação é 0%, no ficheiro de validação é de 46%.
Etapa 2 - deixou apenas as entradas 1,3,5,7,9,11 no arquivo e o resultado. Treinou a floresta novamente no novo arquivo, agora o erro é 0% tanto nos arquivos de treinamento quanto nos de validação, tudo é legal. A única nuance foi que Rattle para o segundo passo definiu o parâmetro "Número de variáveis" para 2, provavelmente porque o arquivo é menor em tamanho. Mudei-o para 4, como no primeiro passo.
Eu tentei modelos diferentes do Rattle, a floresta também deu bons resultados.
Passo 1 - a floresta treinou algo, e nas entradas das estatísticas 1,3,5,7,9,11 parecem de alguma forma separadas. O erro no ficheiro de formação é 0%, no ficheiro de validação é de 46%.
Etapa 2 - deixou apenas as entradas 1,3,5,7,9,11 no arquivo e o resultado. Treinou a floresta novamente no novo arquivo, agora o erro é 0% tanto nos arquivos de treinamento quanto nos de validação, tudo é legal. A única nuance foi que Rattle para o segundo passo definiu o parâmetro "Número de variáveis" para 2, provavelmente porque o arquivo é menor em tamanho. Mudei-o para 4, como no primeiro passo.
Poderia publicar os quatro números, por favor? Incluindo o resultado em ficheiro da janela do R Dataset?
Fez isso com neuronka - dummy_set_features.csv é dividido em 3 partes 70%/15%/15%; dummy_set_validation.csv usado na aba de avaliação como "arquivo csv" (é essencialmente o mesmo que R Dataset, apenas um formato de arquivo diferente).
Tirei o registro do Rattle, removi essas duas limitações da chamada neurônica, sobre a qual escrevi anteriormente, executei-o em R, mas o modelo ainda está subtreinado (erro de 35% na amostra de treinamento). Então acontece, se você reduzir a amostra de treinamento, então o resultado do treinamento é pior. Mas você pode aumentar o número de neurônios na camada interna, isso deve melhorar a aprendizagem.
Mudei o número de neurónios de 10 para 20, voltei a correr o treino, agora o erro no treino tornou-se 0%. Erro na amostra de validação é de 0,6%, erro na amostra de teste é de 0,1%. Erro no arquivo dummy_set_validation.csv é 0,3%. Tudo bem, R na aplicação.
Interessante, acontece que os problemas de treinamento dos neurônios são muito diferentes dos problemas das árvores. Para mim o problema com nn é pegar o número certo de neurônios internos e suspender a aprendizagem antes que a rede comece a se reciclar. Basicamente, quanto mais neurônios, melhor, mas isso afeta muito a RAM necessária e o tempo de treinamento. Os preditores supérfluos não são um grande obstáculo para a aprendizagem, a neurônica geralmente aprende tão bem com eles, mas eles aumentam o tempo de treinamento, e é melhor se livrar deles para torná-lo mais rápido.
Uma vez que eu usei a rede mt4 auto-escrita, um EA poderia aprender e negociar imediatamente. Havia problemas com a velocidade de aprendizagem, inicialização de pesos, algoritmos de aprendizagem. Havia demasiados pequenos problemas, era difícil conseguir bons resultados mesmo com uma amostra de treino, por isso finalmente desisti e agora trabalho em R. O pacote nnet pode ser treinado pelo algoritmo bfgs, ele remove todos aqueles pequenos problemas. Mas o pacote tem um limite de apenas 1 camada interior. Eu quero ter pelo menos 3 camadas internas, mas com o algoritmo bfgs, caso contrário haverá muitos problemas com a aprendizagem novamente.
Fez isso com neurônio - dummy_set_features.csv é dividido em 3 partes 70%/15%/15% como padrão; dummy_set_validation.csv usado na aba de avaliação como "arquivo csv" (este é essencialmente o mesmo que R Dataset, apenas um formato de arquivo diferente).
Não, não é a mesma coisa.
Surpreendente, eu discuto este assunto com muitas pessoas e NENHUMA o faz da forma como escrevo. E sei o que estou escrevendo, porque passei meio ano em exercícios como o seu, e fora do chocalho(). O que não coloco no testador, recebo um erro completamente diferente. Então eu fiz o que descrevi acima e o erro no testador praticamente coincidiu com o erro no arquivo R Dataset.
Eu dei ao Alexey três arquivos, que são obtidos dividindo mecanicamente um grande arquivo em três partes. Na primeira parte exercitamos, aprendemos, avaliamos... E nos outros dois, verificamos os números que temos no primeiro. Se os três arquivos tiverem erros superiores a 20%(!), ou mais precisamente, mais perto de 40%, o modelo não é retrabalhado e você pode trabalhar com ele.
Os 3 arquivos acima têm 27 preditores e 6 variáveis alvo. Os 27 preditores foram selecionados entre 170 preditores pelos meus próprios algoritmos. A partir de hoje, estes 27 preditores não conduzem a modelos demasiado treinados. Mas os restantes 143 preditores do meu conjunto são ruído e sobre este ruído pode facilmente obter um erro comparável ao seu, mas o modelo está sobre-treinado e não é adequado para uso posterior.
Por que há menos erros nos preditores de ruído do que nos preditores significativos?
Do meu ponto de vista, como o algoritmo de ajuste do modelo tende a reduzir o erro de ajuste, ele é sempre capaz de encontrar algo entre os valores ruidosos e aleatórios que é melhor que os preditores significativos. Como resultado, quanto menor o erro, menos preditores significativos estão envolvidos na construção do modelo!
PS
A julgar pelo erro, ou a NS está 100% sobretreinada, ou a olhar para o futuro.
O "ficheiro CSV" e o "conjunto de dados R" no separador de avaliação são simplesmente formas diferentes de especificar a fonte de dados. Se você alimentar os mesmos dados com eles, você obterá o mesmo resultado ao testar o modelo.
Se antes do guizo executar
então este conjunto de dados_validate estará agora disponível no separador avaliar como conjunto de dados R. Mas o resultado da verificação do modelo acabará sendo o mesmo que se você apenas selecionar a opção de arquivo csv e especificar o arquivo C:/dummy_set_validation.csv, os dados para o teste serão idênticos em ambos os casos.
O treinamento em si foi em um arquivo diferente, dummy_set_features.csv, então é impossível olhar para o futuro aqui, porque os dados em ambos os arquivos são diferentes, e não dependentes do tempo (mas dependentes da fórmula). Eu acho que a neurônica fez um ótimo trabalho e encontrou 6 inputs que determinam o resultado, reduziram a influência de outros inputs, e com alguma lógica neural descreveu a fórmula desejada.
Só para o caso de ter verificado os dois ficheiros para encontrar cordas duplicadas, se houver alguma. Aqui está o código em R:
Se isto for feito antes de chocalhar, então ambas as tabelasdataet_train edataet_validate estão disponíveis para treinamento e verificação do modelo, e não haverá duplicatas. Glory R.
o arquivo de validação do modelo continha 23 repetições da amostra de treinamento, mas além disso tem mais 3000 filas únicas, de modo que a avaliação do modelo não poderia ser significativamente afetada.