Abaixo seguem as perguntas a serem respondidas no desafio:
Inicialmente, os modelo estavam com um
A função de custo pode ser definida com metrics no LGBMRegressor. No caso escolhi a métrica de Mean abolute error. Apesar de ser uma métrica que não faz diferença entre pequena e grande diferenças em termos de punição, é fácil explicar para algum cliente o que a mesma significa. Pois se entende que o erro médio absoluto é um valor para mais ou menos da previsão feita.
Como comentei no item a, o LighGBM foi o único modelo que consegui fazer o teste de alguns parâmetros sem que isso tomasse muito custo computacional. Além do que, em relação à Random Forest por exemplo, conseguiu um
Para validação do modelo fiz uma separação em dados de teste e treino. Em seguida, implementei um K-fold cross validation sobre os dados de treino, de modo que pudesse obter métricas que independessem do do split em treino e teste realizado. Depois fiz a predição do modelo para a base de treino e teste, e vi que o
Pois separa bem a análise entre treino e teste, além de mostrar com clareza se houve overfit, e se o modelo será bom ao ser aplicado em dados da vida real, ou seja, quando colocado em produção.
Como discuti acima, todo um trabalho foi feito para selecionar as melhores variáveis, eliminar outliers, evidenciar correlações, escolher um modelo que suportasse optimização e que pudesse ser leve o suficiente para ser posto em produção, uma validação adequada foi realizada, tanto em separação da base em treino e teste, quanto na validação via cross validation sobre a base de treino. Com base nisso, estou satisfeito com o modelo, pois está performando sem overfit e apenas sobre dados de dois meses. Modelos com dados do ano, por exemplo, tem performado muito melhor, mas quando aplicado sobre os dados que trabalhei, performam muito mal. Assim, acredito que o modelo atual, ao encontrar dados anuais, pode ser ajustado para fornecer excelentes métricas.
Além do que foi feito, um Randomized Search ou Gri Search seria ideal para melhorar o modelo, mas a necessidade computacional elevou muito o tempo de processamento, e por conta disso mantive o modelo, apenas aumentando no número de árvores para 3000.