Estou participando de uma competição no momento. Sei que é meu trabalho fazer isso bem, mas talvez alguém queira discutir meu problema e sua solução aqui, pois isso também pode ser útil para outras pessoas em seu campo.
Treinei um modelo xgboost (um modelo baseado em árvore e um linear e um conjunto dos dois). Como já discutido aqui, o erro médio absoluto (MAE) no conjunto de treinamento (onde eu fiz a validação cruzada) foi pequeno (aprox. 0,3) e, no conjunto de testes, o erro foi de cerca de 2,4. Então a competição começou e o erro foi em torno de 8 (!) E, surpreendentemente, a previsão sempre foi aproximadamente 8-9 acima do valor real !! Veja a região circulada em amarelo na figura:
Devo dizer que o período dos dados de treinamento terminou em outubro de 15 e a competição começou agora (abril de 16 com um período de teste de aproximadamente 2 semanas em março).
Hoje, apenas subtraí os valores constantes de 9 da minha previsão e o erro caiu para 2 e consegui o número 3 na tabela de classificação (neste dia). ;) Esta é a parte direita da linha amarela.
Então, o que eu gostaria de discutir:
- Como o xgboost reage ao adicionar um termo de interceptação à equação do modelo? Isso pode levar a um viés se o sistema mudar muito (como aconteceu no meu caso de 15 de outubro a 16 de abril)?
- Um modelo xgboost sem interceptação poderia ser mais robusto para mudanças paralelas no valor alvo?
Vou continuar subtraindo meu viés de 9 e, se alguém estiver interessado, eu poderia mostrar o resultado. Seria mais interessante obter mais informações aqui.