Eu tenho usado o pacote de intercalação no R para criar modelos preditivos para classificação e regressão. O Caret fornece uma interface unificada para ajustar os hiper-parâmetros do modelo por validação cruzada ou correias de inicialização. Por exemplo, se você está construindo um modelo simples de 'vizinhos mais próximos' para classificação, quantos vizinhos você deve usar? 2? 10? 100? O Caret ajuda você a responder a essa pergunta re-amostrando seus dados, tentando parâmetros diferentes e, em seguida, agregando os resultados para decidir qual produz a melhor precisão preditiva.
Eu gosto dessa abordagem porque ela fornece uma metodologia robusta para a escolha de hiperparâmetros do modelo e, depois de escolher os hiperparâmetros finais, ele fornece uma estimativa validada cruzada de quão "bom" é o modelo, usando a precisão para modelos de classificação e RMSE para modelos de regressão.
Agora eu tenho alguns dados de séries temporais para os quais desejo criar um modelo de regressão, provavelmente usando uma floresta aleatória. Qual é uma boa técnica para avaliar a precisão preditiva do meu modelo, dada a natureza dos dados? Se florestas aleatórias não se aplicam realmente a dados de séries temporais, qual é a melhor maneira de criar um modelo de conjunto preciso para análise de séries temporais?
Respostas:
A técnica "clássica" de validação cruzada de tempos k baseia-se no fato de que cada amostra no conjunto de dados disponível é usada (k-1) - vezes para treinar um modelo e 1 tempo para testá-lo. Como é muito importante validar modelos de séries temporais em dados "futuros", essa abordagem não contribuirá para a estabilidade do modelo.
Uma propriedade importante de muitas séries temporais (a maioria?) É a correlação entre os valores adjacentes. Conforme apontado pelo IrishStat, se você usar leituras anteriores como variáveis independentes do seu candidato a modelo, essa correlação (ou falta de independência) desempenha um papel significativo e é outra razão pela qual a validação cruzada k-times não é uma boa idéia.
Uma maneira de superar esse problema é "exagerar" os dados e correlacioná-los. Se o processo de correlação for bem-sucedido, o uso da validação cruzada em séries temporais se tornará menos problemático. No entanto, não resolverá a questão da validação do modelo usando dados futuros
Esclarecimentos
validando o modelo em dados futuros, quero dizer construindo o modelo, aguardando novos dados que não estavam disponíveis durante a construção do modelo, testes, ajustes finos etc. e validando-os nesses novos dados.
Ao superexaminar os dados, quero dizer coletar dados de séries temporais com uma frequência muito maior do que o praticamente necessário. Por exemplo: faça uma amostragem dos preços das ações a cada 5 segundos, quando você estiver realmente interessado em alterações horárias. Aqui, quando digo "amostragem", não quero dizer "interpolar", "estimar" etc. Se os dados não puderem ser medidos com maior frequência, essa técnica não fará sentido.
fonte
http://robjhyndman.com/researchtips/crossvalidation/ contém uma dica rápida para validação cruzada de séries temporais. Em relação ao uso de floresta aleatória para dados de séries temporais ... não tenho certeza, embora pareça uma escolha estranha, pois o modelo é ajustado usando amostras de autoinicialização. É claro que existem métodos clássicos de séries temporais (por exemplo, ARIMA) que podem ser usados, assim como técnicas de ML como redes neurais (exemplo exemplo pdf ). Talvez alguns especialistas em séries temporais possam comentar como as técnicas de ML funcionam em comparação com algoritmos específicos de séries temporais.
fonte
Aqui está um exemplo de código para validação cruzada de modelos de séries temporais. Eu expandi esse código no meu blog , incorporando o pacote foreach para acelerar as coisas e permitindo um possível termo xreg na validação cruzada.
Aqui está uma cópia do código do blog de Rob Hyndman:
fonte
Se você tiver dados de séries temporais, poderá ter um "problema de graus de liberdade". Por exemplo, se você tiver 4 observações feitas em intervalos de hora em hora e decidir usar 241 observações em intervalos de 1 minuto, você terá 241 observações, mas elas não são necessariamente independentes. Quando você envia esses 241 valores / medições para um pacote analítico, o pacote pode esperar que sejam 241 valores independentes à medida que prossegue para executar sua mágica específica. Se você possui dados de séries temporais, pode ser necessário atualizar suas análises. Eu não conheço o programa que você se refere, mas é um palpite razoável da minha parte (eu posso estar errado!) Que seus testes (testes F / testes T ... etc) provavelmente não se aplicam ao seu conjunto de problemas.
fonte
Eu posso recomendar a você 2 artigos interessantes para ler que estão on-line 1. Aprendizagem em fluxo contínuo: SVMs de uma passagem, de Piyush Rai, Hal Daum´e III, Suresh Venkatasubramanian 2. Aproximação de k-meios de transmissão, de Nir Ailon
Espero que esclareça um pouco suas idéias
fonte