S29L02 – ROC, AUC – Avaliando o melhor modelo

Avaliando Modelos de Aprendizado de Máquina com Curvas ROC e AUC: Um Guia Abrangente

No campo do aprendizado de máquina, selecionar o modelo certo para o seu conjunto de dados é crucial para alcançar previsões precisas e confiáveis. Uma das maneiras mais eficazes de avaliar e comparar modelos é através da Curva Característica de Operação do Receptor (ROC) e da Área Sob a Curva (AUC). Este guia aprofunda-se na compreensão das curvas ROC, no cálculo da AUC e na utilização dessas métricas para escolher o modelo com melhor desempenho para suas tarefas de classificação binária. Vamos acompanhar um exemplo prático usando um Jupyter Notebook, demonstrando como implementar esses conceitos utilizando vários algoritmos de aprendizado de máquina.


Índice

  1. Introdução à Curva ROC e AUC
  2. Por que AUC em vez de Precisão?
  3. Visão Geral do Conjunto de Dados
  4. Pré-processamento de Dados
  5. Treinamento e Avaliação do Modelo
    1. K-Nearest Neighbors (KNN)
    2. Regressão Logística
    3. Gaussian Naive Bayes
    4. Máquina de Vetores de Suporte (SVM)
    5. Árvore de Decisão
    6. Random Forest
    7. AdaBoost
    8. XGBoost
  6. Escolhendo o Melhor Modelo
  7. Conclusão
  8. Recursos

Introdução à Curva ROC e AUC

O que é uma Curva ROC?

Uma Curva Característica de Operação do Receptor (ROC) é uma representação gráfica que ilustra a capacidade diagnóstica de um sistema de classificador binário à medida que seu limiar de discriminação varia. A curva ROC plota dois parâmetros:

  • Taxa de Verdadeiros Positivos (TPR): Também conhecida como sensibilidade ou recall, mede a proporção de positivos reais corretamente identificados.
  • Taxa de Falsos Positivos (FPR): Mede a proporção de negativos reais que foram incorretamente identificados como positivos.

A curva ROC permite a visualização do trade-off entre sensibilidade e especificidade (1 – FPR) em diferentes configurações de limiar.

Compreendendo a AUC

Área Sob a Curva (AUC) quantifica a capacidade geral do modelo de discriminar entre classes positivas e negativas. O valor da AUC varia de 0 a 1:

  • AUC = 1: Classificador perfeito.
  • AUC = 0.5: Sem discriminação (equivalente a um palpite aleatório).
  • AUC < 0.5: Predição inversamente correlacionada (pior do que o aleatório).

Uma AUC mais alta indica um modelo com melhor desempenho.


Por que AUC em vez de Precisão?

Enquanto a precisão mede a proporção de previsões corretas em relação a todas as previsões feitas, ela pode ser enganosa, especialmente em casos de desbalanceamento de classes. Por exemplo, se 95% dos dados pertencem a uma classe, um modelo que prediz apenas essa classe alcançará 95% de precisão, mas não conseguirá capturar a classe minoritária.

AUC, por outro lado, fornece uma avaliação mais detalhada ao considerar o desempenho do modelo em todos os limiares de classificação, tornando-a uma métrica mais confiável para conjuntos de dados desbalanceados.


Visão Geral do Conjunto de Dados

Para nossa análise, utilizaremos o Conjunto de Dados de Tempo do Kaggle. Este conjunto de dados contém vários atributos relacionados ao tempo registrados diariamente em diferentes localidades australianas.

Objetivo: Prever se irá chover amanhã (RainTomorrow) com base nas condições climáticas de hoje.

Tipo: Classificação Binária (Yes/No).


Pré-processamento de Dados

O pré-processamento eficaz de dados é a base para a construção de modelos robustos de aprendizado de máquina. Aqui está uma divisão passo a passo:

1. Importando Bibliotecas e Dados

2. Separando Características e Alvo

3. Tratamento de Dados Ausentes

a. Características Numéricas

b. Características Categóricas

4. Codificação de Variáveis Categóricas

a. Codificação de Rótulos para Alvo

b. Codificação de Características

5. Seleção de Características

Para reduzir a complexidade do modelo e melhorar o desempenho, selecionaremos as 10 principais características usando o teste Qui-Quadrado (Chi2).

6. Dividindo o Conjunto de Dados

7. Escalonamento de Características

Padronizar as características garante que cada uma contribua igualmente para o resultado.


Treinamento e Avaliação do Modelo

Vamos treinar vários modelos de classificação e avaliar seu desempenho usando tanto Precisão quanto AUC.

K-Nearest Neighbors (KNN)

Saída:

KNN ROC Curve

Regressão Logística

Saída:

Logistic Regression ROC Curve

Nota: Se você encontrar um aviso de convergência, considere aumentar max_iter ou padronizar seus dados.

Gaussian Naive Bayes

Saída:

Gaussian Naive Bayes ROC Curve

Máquina de Vetores de Suporte (SVM)

Saída:

SVM ROC Curve

Árvore de Decisão

Saída:

Decision Tree ROC Curve

Random Forest

Saída:

Random Forest ROC Curve

AdaBoost

Saída:

AdaBoost ROC Curve

XGBoost

Saída:

XGBoost ROC Curve

Escolhendo o Melhor Modelo

Após avaliar todos os modelos, observamos as seguintes precisões:

Modelo Precisão AUC
K-Nearest Neighbors 0.82 0.80
Regressão Logística 0.84 0.86
Gaussian Naive Bayes 0.81 0.81
SVM 0.84 0.86
Árvore de Decisão 0.78 0.89
Random Forest 0.84 0.85
AdaBoost 0.84 0.86
XGBoost 0.85 0.87

Observações Principais:

  1. XGBoost surge como o principal desempenho com a maior precisão (85%) e uma AUC forte (0.87).
  2. Regressão Logística, SVM e AdaBoost também demonstram desempenho digno com precisões em torno de 84% e AUCs de 0.86.
  3. Árvore de Decisão apresenta a menor precisão (78%) mas tem uma AUC relativamente alta (0.89), indicando potencial para distinguir classes apesar da menor precisão na predição.

Conclusão: Enquanto a precisão fornece uma métrica direta, a AUC oferece uma visão mais aprofundada sobre o desempenho do modelo em vários limiares. Neste cenário, XGBoost se destaca como o modelo mais confiável, equilibrando alta precisão e forte capacidade discriminativa.


Conclusão

Avaliando modelos de aprendizado de máquina requer uma abordagem multifacetada. Confiar apenas na precisão pode ser enganoso, especialmente em conjuntos de dados com desbalanceamento de classes. Curvas ROC e AUC fornecem uma avaliação mais abrangente do desempenho de um modelo, destacando sua capacidade de distinguir efetivamente entre classes.

Neste guia, exploramos como pré-processar dados, treinar múltiplos modelos de classificação e avaliá-los usando curvas ROC e AUC. A implementação prática utilizando um Jupyter Notebook demonstrou os pontos fortes de cada modelo, demonstrando, por fim, que XGBoost foi a escolha superior para prever a chuva com base no conjunto de dados fornecido.


Recursos


Compreendendo e utilizando curvas ROC e AUC, cientistas de dados e profissionais de aprendizado de máquina podem tomar decisões mais informadas ao selecionar modelos, garantindo maior desempenho e confiabilidade em suas tarefas preditivas.

Partilhe o seu amor