A Regressão Logística é um método estatístico que utilizamos para ajustar um modelo de regressão quando a variável de resposta é binária.
Para avaliar a adequação de um modelo de regressão logística a um conjunto de dados, podemos analisar as duas métricas seguintes:
- Sensibilidade: A probabilidade de o modelo prever um resultado positivo para uma observação quando, de facto, o resultado é positivo. É também designada por "taxa de verdadeiro positivo".
- Especificidade: A probabilidade de o modelo prever um resultado negativo para uma observação quando, de facto, o resultado é negativo. Também designada por "taxa negativa verdadeira".
Uma maneira de visualizar essas duas métricas é criando um Curva ROC que significa "curva caraterística de funcionamento do recetor".
Este é um gráfico que apresenta a sensibilidade ao longo do eixo y e (1 - especificidade) ao longo do eixo x.
Uma forma de quantificar a eficácia do modelo de regressão logística na classificação dos dados é calcular AUC , que significa "área sob a curva".
Quanto mais próximo de 1 for o AUC, melhor é o modelo.
O seguinte exemplo passo-a-passo mostra como calcular a AUC para um modelo de regressão logística em Python.
Passo 1: Importar pacotes
Primeiro, vamos importar os pacotes necessários para efetuar a regressão logística em Python:
import pandas as pd import numpy as np from sklearn. model_selection import train_test_split from sklearn. linear_model import LogisticRegression from sklearn import metrics
Passo 2: Ajustar o modelo de regressão logística
De seguida, vamos importar um conjunto de dados e ajustar-lhe um modelo de regressão logística:
#importar o conjunto de dados de um ficheiro CSV no Github url = "//raw.githubusercontent.com/Statology/Python-Guides/main/default.csv" data = pd. read_csv (url) #definir as variáveis preditoras e a variável de resposta X = data[[[' student ', ' balance ', ' income ']] y = data[' default '] #dividir o conjunto de dados em conjuntos de treino (70%) e teste (30%) X_train,X_test,y_train,y_test = train_test_split(X,y,test_size=0.3 ,random_state= 0 ) #instanciar o modelo log_regression = LogisticRegression() #ajustar o modelo utilizando os dados de treino log_regression. fit (X_train,y_train)
Passo 3: Calcular a AUC
Podemos utilizar o métricas.roc_auc_score() para calcular a AUC do modelo:
#utilizar o modelo para prever a probabilidade de um dado valor de y ser 1 y_pred_proba = log_regression. predict_proba (X_test)[:::, 1 ] #calcular a AUC do modelo auc = metrics. roc_auc_score (y_test, y_pred_proba) #imprimir a pontuação da AUC print (auc) 0.5602104030579559
A AUC (área sob a curva) para este modelo específico é 0.5602 .
Recorde-se que um modelo com uma pontuação AUC de 0.5 não é melhor do que um modelo que efectua adivinhações aleatórias.
Assim, na maioria dos casos, um modelo com uma pontuação AUC de 0.5602 seria considerado fraco na classificação das observações nas classes correctas.