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, mas a pergunta que fica é: 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, e como modelo complexo utilizaremos XGBoost, tanto para regressão quanto classificação.

Problema de Classificação

Para o estudo na base de Pokemons do Kaggle os modelos criados foram feitos sem optimizaçã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                     Regressão Logística

AUC: 98,07                                                  AUC: 96,62
Acurácia: 97,08                                          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, e esse é justamente o principal ponto positivo dos modelos de Boosting: ao combinar uma série de classificadores mais fracos, os modelos de Boosting conseguem chegar a resultados melhores.

Sendo assim, porque 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 o modelo 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 do modelo. 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 Pokemon é lendário ou nã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)

Problema de Regressão

Da mesma forma que o modelo 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                                          Regressão Linear

MAE: 1,95                                                               MAE: 3,16
R²: 89,11                                                                R²: 71,12

Podemos perceber novamente o modelo de Boosting com resultados melhores que o modelo 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 dos modelos, abrimos mão de melhores resultados nas métricas de avaliação dos modelos.

E 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!

O que é 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.


Nesse exemplo podemos ver que a variável Total é a mais influente nessa 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 conhecer mais sobre o SHAP e sobre interpretação de modelos de machine learning complexos? Clique aqui para ler mais detalhes sobre interpretação de modelos de machine learning complexos.