Grande parte das empresas que desenvolvem modelos preditivos para auxiliar na tomada de decisão optam por utilizar modelos estatísticos simples, como: regressão logística e árvore de decisão – por ter mais segurança dos pesos das variáveis nas previsões. Para alguns casos isso é fundamental, contudo, as perguntas que ficam são: quando a interpretabilidade não é um requisito, quanto conseguiríamos melhorar nossas métricas de avaliação do modelo caso usássemos modelos mais complexos? Será que o trade-off performance X compreensão do modelo realmente compensa a utilização de modelos com resultados piores?
Para exemplificar o que iremos discutir, utilizaremos duas bases de dados, a base de Pokémon do Kaggle ( https://www.kaggle.com/abcsds/pokemon ) e a base de casas de Boston do pacote Sklearn do Python ( https://scikit-learn.org/stable/modules/generated/sklearn.datasets.load_boston.html# ).
Vamos simular a construção de dois modelos classificadores para calcular a probabilidade de um pokémon ser lendário e dois modelos regressores para calcular o preço das casas. Os modelos tradicionais utilizados serão a regressão linear e a regressão logística. Como modelo complexo utilizaremos XGBoost tanto para regressão quanto classificação.
Problema de Classificação
Para o estudo na base de Pokémons do Kaggle os modelos criados foram feitos sem otimização de hiperparâmetros. A ideia aqui é comparar de maneira rápida os resultados obtidos pelos modelos, focando nos pontos positivos de cada abordagem. Como primeiros resultados para os modelos de classificação, obtivemos:
XGBoost Classificador
AUC: 98,07
Acurácia: 97,08
Regressão Logística
AUC: 96,62
Acurácia: 95,41
Claramente vemos o XGBoost com resultados melhores em ambas as métricas utilizadas para avaliação dos modelos. De maneira geral, esse é o comportamento esperado em comparações entre esses dois modelos. Esse é justamente o principal ponto positivo dos modelos de Boosting: ao combinar uma série de classificadores mais fracos, eles conseguem chegar a resultados melhores.
Sendo assim, por que empresas ainda optam por utilizar modelos mais simples? Modelos de Boosting são difíceis de compreender, principalmente para pessoas que não têm contato direto com a área da Ciência dos Dados. Nos pacotes de Python utilizados para gerar modelos como: sklearn, xgboost e catboost, a análise de importância das variáveis na decisão dos modelos não é profunda. Normalmente, tudo que conseguimos gerar é um gráfico que apresenta, de maneira geral, qual variável é mais utilizada para tentar separar os dados. Como visto abaixo:

Na maioria dos casos, esse tipo de análise não é suficiente para passar segurança aos diretores que aprovarão os modelos para entrar em produção e não é o suficiente para compreendermos o comportamento dos modelos, o que para muitas empresas são pontos muito importantes. É justamente aí que os modelos mais simples ganham força. Na regressão logística, por exemplo, conseguimos saber exatamente o quanto uma variável influencia na decisão final. Cada variável do modelo recebe um coeficiente que funcionará como um balizador para equilibrar sua importância.
Por exemplo: podemos extrair a seguinte equação do nosso modelo que prevê se um Pokémon é lendário ou não:
Problema de Regressão

Onde g(x) = (-7,01859 + Total * 0,00853 + HP * -0,00457 + Attack * -0,00169 + Defense * -0,00610 + Sp. Atk * 0,01161 + Sp. Def * 0,00770 + Speed * 0,00158 + Generation * -0,02100)
Da mesma forma que o anterior, criamos dois modelos para tentar prever os preços das casas na base de Boston do SKlearn. É importante ressaltar que os valores dessa base foram normalizados.
Os resultados obtidos são os seguintes:
XGBoost Regressor
MAE: 1,95
R²: 89,11
Regressão Linear
MAE: 3,16
R²: 71,12
Podemos perceber, novamente, o modelo de Boosting com resultados melhores que o mais simples, mesmo mudando o tipo de problema para regressão. Abaixo, temos a importância das variáveis para as decisões do modelo de regressão:

Em contrapartida, para a regressão linear, temos a seguinte equação:
Valor do imóvel = (31,63108 + CRIM * -1,3347e-01 + ZN * 3,5808e-02 + INDUS * 4,9522e-02 + CHAS * 3,1198e+00 + NOX * -1,5417e+01 + RM * 4,0571e+00 + AGE * -1,0820e-02 + DIS * -1,3859e+00 + RAD * 2,4272e-01 + TAX * -8,7022e-03 + PTRATIO * -9,1068e-01 + B * 1,1794e-02 + LSTAT * -5,4711e-01)
Esse é o trade-off padrão entre os modelos simples e complexos. Quando optamos por obter os melhores resultados, temos uma maior dificuldade na interpretação dos modelos e quando escolhemos priorizar a interpretação deles, abrimos mão de melhores resultados nas suas métricas de avaliação.
O que é o SHAP?
Como nós da Datarisk lidamos com essa escolha? Muitas vezes dependemos da decisão de nossos clientes, mas o nosso segredo está em outra biblioteca do Python: o SHAP!
SHAP (SHapley Additive exPlanations) é um método criado por Lundberg e Lee no ano de 2016, concebido com a finalidade de explicar previsões individuais de modelos de boosting. Para isso, o SHAP busca calcular a contribuição de cada variável do modelo para o resultado final da previsão. De forma simples, além de analisar a importância das variáveis para cada instância da nossa base, verificamos também se a influência da variável no resultado é positiva ou negativa.
Dentro do SHAP temos duas principais visões que ajudam bastante na interpretação dos modelos. A primeira representa o impacto de cada variável na previsão relacionada a um registro da base.

Neste exemplo, podemos ver que a variável “Total” é a mais influente da previsão, empurrando positivamente a decisão.
Na segunda visão (que temos abaixo) vemos de forma geral a importância das variáveis, mas, além disso, também podemos verificar se a influência da variável é negativa ou positiva sob a decisão. Se olharmos para a variável “Total”, quanto maior seu valor, maior será o impacto positivo na saída do modelo.

Não é tão simples quanto uma equação, mas as visões acima deixam muito mais claro como o modelo está usando as variáveis para chegar nos valores de suas previsões, e, de forma geral, oferecem maior segurança aos nossos clientes quando optam por utilizar modelos complexos.
Quer saber mais sobre o assunto ou descobrir como a Datarisk pode te ajudar nessas questões? Acesse o nosso site e não deixe de conferir nossos outros artigos.
Até a próxima.

Cientista de dados