Mudanças versão 2 veja a seção detalhes sobre como usar o conjunto de exploração e a seção sobre o relatório final.
Data de entrega: 10/8 a meia noite, via email.
Objetivos: fazer previsões em series temporais usando as técnicas de aprendizado de maquina vistas.
Leia o arquivo dados4.csv. O arquivo contem a taxa de cambio entre o dólar e o euro, desde 1999-01-04 até 2020-07-24. O atributo data (formato YYYY-MM-DD) não é importante e deve ser removido mas obviamente a sequencia de valores é a coisa importante.
Os dados mais recentes estão no começo do arquivo e os mais antigos ao final.
Separe as 10% das entradas mais recentes. Você reportará sua taxa de acerto nesses 10% e, segundo o que eu discuti na aula de metodologia, você não pode usar a taxa de acerto nesse conjunto para tomar decisões. Vamos chamar este conjunto de conjunto de medida.
Você deve usar as primeiras 90% das medidas para definir que classificadores e regressores você usara, que preprocessamento (se é que você usará algum), que hiperparametros, e que janela de do passado para fazer as previsões (mais sobre isso abaixo).
Eu estou interessado em 2 medidas.
o problema de classificação de prever se a taxa de cambio vai subir ou descer no próximo dia. A medida a ser usada é acurácia
o problema de regressão de prever a taxa de cambio no próximo dia. A medida de erro para esse problema é RMSE.
Reporte essas 2 medidas no conjunto de medida.
Previsão em series temporais, ou usam uma forma de redes neurais recorrentes RNN que não vimos na disciplina (mas que provavelmente será parte dos tópicos a serem tratados na disciplina de deep learning no semestre que vem) ou usam a previsão numa janela fixa do passado.
Nesta segunda alternativa, fixa -se uma janela w, e para fazer a previsão do dado x_i, usa-se a o vetor x_{i-w},x_{i-w+1} \dots x_{i-1}. Ou seja você usa um vetor de tamanho w para prever o próximo valor da serie. Essa técnica é de vez em quanto chamada de rolling ou sliding window
Você tem varias decisões de projeto que você deve explorar. Essas decisões devem ser exploradas - não há nenhuma decisão em aprendizado de maquina que pode ser pensada - tudo precisa ser explorado, algumas coisas dão certo algumas não no problema em específico.
qual a janela de previsão w Essa é com certeza um dos mais importantes parâmetros que você precisa explorar
você vai tratar do problema de classificação como um problema em separado ou como uma simplificação do problema de regressão (se o valor predito pelo do regressor é maior que o do dia anterior reporte subir para o classificador.
que preprocessamento dos dados você vai executar. Um que me parece razoável é prever a mudança do valor da taxa em relação ao ultimo dia, em vez de prever o valor da taxa no próximo dia. Quais outros preprocessamento valem a pena ser feitos.
que algoritmos de regressão e classificação e seus hiperparametros você vai usa?
o seu conjunto de treino é limitado ou não. Uma vez que você selecionou um conjunto de teste (dento dos 90%) todas os dados anteriores podem ser usados para treino (você treina usando as rolling windows - cada tupla de w valores dos dias anteriores associados ao valor do próximo dia). Mas pode ser que valha a pena não “olhar muito para o passado” - pode ser que só vale a pena olhar para um passado limitado para o treino.
Você tem os conjunto de 90% dos dados para tomas essas decisões. Você deve fazer alguma validação cruzada neste conjunto de dados para tomar essas decisões. Eu sugiro uma repetição de 5 vezes de um split de treino e teste, mas se lembre que o correto em series temporais é que o conjunto de teste é sempre no futuro do conjunto de treino.
Por exemplo, para simplificar, vamos dizer que os dados de 2019 e 2020 serão usados para as medidas finais. Assim voce tem os dados de 1999 a 2018 para tomar todas as suas decisoes. Voce deve dividir esses dados em (digamos 5) pares treino/teste. Como o primeiro par, vamos dizer voce usa de 1999 a 2016 como treino e 2017+2018 como teste. Para o segundo par, voce escolhe 1999 a 2014 como treino e 2015+2016 como teste, e assim por diante. Voce mede a acurácia/erro nesses conjuntos de testes tendo treinado do conjunto de treino correspondente, e escolhe a melhor alternativa (melhor média)
Voce também pode diminuir os conjuntos de treino, de forma que eles tenham o mesmo tamanho. Por exemplo o primeiro treino vai de 2006 a 2016, o segundo de 2004 a 2014, e assim por diante.
No final, voce treina a sua melhor alternativa no conjunto dos 90% inteiro (nesse exemplo de 1999 a 2018) e apresenta os resultados finais (RMSE e acurácia sobre a decisão se o cambio vai subir ou não) para o conjunto de medida final 2019+2020.
Previsões em series temporais é um assunto muito antigo, anterior a grande maioria das técnicas de aprendizado de maquina. Essas técnicas mais antigas se preocupam com coisas como trend (direção geral de uma serie por exemplo taxa de cambio real/dolar, que na media sempre sobe) e seasonality (variações periódicas na serie como por exemplo uso de energia, que depende do dia da semana - fim de semana ou não - e do período no ano - inverno vs verão).
Você encontrara várias páginas na internet com discussão desses tópicos. No caso da nossa serie, não acho que trend e seasonality sejam problemas e acho que você não deve se preocupar com isso.
Há técnicas anteriores a aprendizado de maquina que também acho que você não precisa se preocupar, como ARIMA ou ARMA, etc. Há coisas como auto-correlações que são partes destas técnicas que também acho que você não precisa se preocupar. Esse blog, por exemplo https://www.machinelearningplus.com/time-series/time-series-analysis-python/ discute essas técnicas “mais tradicionais”. Este https://machinelearningmastery.com/time-series-forecasting-methods-in-python-cheat-sheet/ também
No relatório final, descreva o algoritmo final, os hiperparametros, o preprocessamento, etc e reporte o RMSE e a acurácia sobre a decisão se a taxa subira ou não (ficar igual é não subir) no conjunto de medida final. Reporte também as medidas que voce obteve usando os conjuntos de testes - eu quero comparar se os valores que voce obteve quando explorando as alternativas é parecido com o valor quando usando o conjunto final de avaliação.
Descreva as alternativas que voce testou e as medidas médias dessas alternativas no conjunto de exploração (os 90%). Nao precisa explicitar todos os valores de hiperparametros que voce testou, apenas os melhores valores. Eu estou interessado em a) a sua criatividade em propor e testar diferentes alternativas, b) seu rigor em ter testados um bom numero de regressores e classificadores (se voce decidir usar classificadores).
O relatório pode ter poucas paginas, desde que ele descreva suficientemente bem a solução final e as mais interessantes alternativas testadas. Eu NAO preciso do notebook Jupyter de todas as alternativas.
vamos supor que os seu dados sao:
1.2 2.1 3.2 4.1 5.4 6.2 7.3 8.1 9.8 || 10.3 11.4 12.2
A barra dupla separa o conjunto de treino e de teste ou seja o conjunto de treino vai do 1.2 ao 9.8 e o de teste do 10.3 ao 12.2
vamos assumir que a sua janela de previsão é 4. Ou seja voce usa dados dos 4 dias anteriores para prever o proximo dia.
Neste caso seu conjunto de treino é:
1.2 2.1 3.2 4.1 | 5.4
2.1 3.2 4.1 5.4 | 6.2
3.2 4.1 5.4 6.2 | 7.3
4.1 5.4 6.2 7.3 | 8.1
5.4 6.2 7.3 8.4 | 9.8
onde a barra vertical separa a entrada (4 valores) da saída.
O conjunto de teste é:
6.2 7.3 8.1 9.8 | 10.3
7.3 8.1 9.8 10.3 | 11.4
8.1 9.8 10.3 11.4 | 12.2
Se a janela é 6 então os conjuntos são:
1.2 2.1 3.2 4.1 5.4 6.2 | 7.3
2.1 3.2 4.1 5.4 6.2 7.3 | 8.1
3.2 4.1 5.4 6.2 7.3 8.1 | 9.8
e o conjunto de treino:
4.1 5.4 6.2 7.3 8.1 9.8 | 10.3
5.4 6.2 7.3 8.1 9.8 10.3 | 11.4
6.2 7.3 8.1 9.8 10.3 11.4 | 12.2