O perigo de se basear cegamente em métricas
Entenda quando a melhor performance pode não ser sua melhor opção
Não me leve a mal, se basear em números para tomada de decisão é sim eficiente e fundamental. Porém não é suficiente.
Indo às compras
Imagine que seja de seu interesse fazer um suco de abacaxi, mas quem irá escolher o melhor abacaxi será um robô. Que instruções você passaria?
- Procure pelo cheiro doce
- Evite folhas amareladas
- Prefira os mais pesados
Podemos utilizar essas três ordens para criar uma pontuação numérica em que quão menor seja este valor, melhor será o abacaxi! E por meio desse score o seu robô será capaz de talvez selecionar um abacaxi com a suculência desejada.
E se eu não especificar o que é um abacaxi?
Então o seu robô poderia muito bem escolher uma melancia que foi cortada ao meio!
Embora não faça sentido para nós (verificar as folhas de uma melancia), o seu robô irá respeitar os três requisitos solicitados:
- Sentirá cheiro doce
- Não encontrará folhas amareladas
- Notará um peso considerável
E assim teremos uma incrível melancia que não satisfaz o desejo de quem tomará o suco, mas satisfez as ordens dadas.
O mesmo acontece com a ciência de dados
Quando queremos produzir um modelo para explicar nossos dados é indiscutível que a etapa de escolha do melhor modelo o computador fará de forma mais rápida e eficiente que nós humanos.
Porém o computador não pensa, ele obedece! Se quem o programou der ordens incompletas, o algoritmo não fará milagres.
Assim, ainda é nosso trabalho definir quais modelos fazem sentido serem ajustados para a realidade do nosso conjunto de dados antes do computador fazer o operacional de escolha do melhor modelo baseado em uma métrica dada.
Mão na massa
Para exemplificar iremos aplicar um ajuste de regressão para explicar uma dada variável Y por outra X.
Seguindo o fluxo:
- Gerar dados
- Retirar uma amostra desses dados
- Produzir dois modelos distintos para essa amostra
- Comparar ambos modelos com a métrica RMSE
- Replicar o cálculo RMSE para os dados deixados de fora da amostra
Caso queira conferir o código na íntegra, está disponível no meu GitHub: https://github.com/andrealvesambrosio/Variados/blob/master/Overfit_RMSE.R
Vamos lá!
Iremos gerar dados com comportamento semelhante à de uma distribuição Exponencial, com alguns ruídos. (Y condicionada à X)
Nossa população será composta por 101 observações. Porém, iremos fingir que não temos acesso à nossa população, que é o que acontece na prática.
Assim, pegaremos apenas 40 observações para modelar o comportamento de nossa população.
Temos a seguinte disposição de nossos dados e amostra:
Percebe-se que nossa amostra mantém o comportamento da população, embora tenha menos da metade de suas observações.
Agora, iremos ajustar dois modelos distintos:
- Regressão Polinomial de Grau 2
- Regressão Gama com função de ligação log (Modelo Linear Generalizado)
E, para comparar qual modelo se ajustou melhor, daremos a seguinte ordem:
Quem obtiver o menor RMSE (Root-mean-square deviation) será o nosso melhor modelo
Essa métrica é calculada a partir dos resíduos gerados pelo modelo ajustado da seguinte maneira:
A priori, parece fazer sentido. Pois estamos minimizando o erro associado à curva ajustada.
Quem obtiver o menor RMSE possui a curva mais próxima dos pontos.
Logo abaixo podemos verificar o comportamento dos modelos para os dados amostrados.
Aparentemente, a curva de cor azul (Modelo Quadrático) está mais fiel aos dados, certo? Vamos verificar o RMSE:
- RMSE Gama = 124.1
- RMSE Quadrático = 118.4
De acordo com essa métrica, temos que o melhor modelo é o quadrático.
E qual é o problema por trás disso?
Bem, enquanto um Modelo Linear Generalizado (Regressão Gama) utiliza uma distribuição para ajustar os dados estimando seus parâmetros e então inferindo sobre sua população, um modelo de regressão polinomial apenas ajusta a melhor curva sob grau desejado (no caso 2) que minimize o erro associado.
Deste modo, o modelo quadrático fica super ajustado (overfit) aos dados estudados, e não tem como premissa entender a distribuição da população original.
Podemos verificar isso ao comparar ambos modelos ajustados com as 61 observações restantes (aquelas que foram deixadas de lado na modelagem).
Percebe-se que a Regressão Gama mantém comportamento semelhante aos dados anteriores (aqueles que foram amostrados), enquanto o modelo quadrático se comporta de maneira visivelmente pior.
Seus respectivos RMSE agora são:
- RMSE Gama = 118.7
- RMSE Quadrático = 132.3
O que podemos concluir sobre isto?
Bem, evidenciamos o risco de se ajustar qualquer espécie de modelo para explicar seus dados e se basear em algum tipo de métrica.
Antes de comparar modelos, é preciso escolher a dedo os modelos que façam sentido para a realidade do seu conjunto de dados. O computador sempre irá executar as contas necessárias, mas quem precisa definir quais modelos serão ajustados é você!
Se a regressão Polinomial não faz sentido, por quê a outra faz?
Como nosso conjunto de dados possui comportamento semelhante à de uma Exponencial escolhemos a distribuição Gama, pois a Exponencial é um caso específico da distribuição Gama.
Em que uma Exp(k) é igual a uma Gama (1, k). E utilizamos a função de ligação log pois é a função inversa da função exp.
Ainda assim teríamos que realizar uma análise de resíduos, também chamada de análise de diagnóstico e verificar outras suposições. Porém o foco deste artigo não é ensinar a modelar passo a passo, então não entraremos em muitos detalhes técnicos.
E aí, curtiu?
Caso tenha alguma sugestão ou crítica, deixa aí nos comentários o que achou. E se quiser fazer contato, me manda alguma mensagem lá no Linkedin.
Abraço!
Leituras semelhantes:
Correlação e Causalidade: https://towardsdatascience.com/why-correlation-does-not-imply-causation-5b99790df07e
Trade-off de vício e variância na modelagem: https://medium.com/datadriveninvestor/bias-and-variance-in-machine-learning-51fdd38d1f86