Comment calculer l’AUC (aire sous courbe) en Python
La régression logistique est une méthode statistique que nous utilisons pour ajuster un modèle de régression lorsque la variable de réponse est binaire.
Pour évaluer dans quelle mesure un modèle de régression logistique s’adapte à un ensemble de données, nous pouvons examiner les deux métriques suivantes :
- Sensibilité : probabilité que le modèle prédise un résultat positif pour une observation alors que le résultat est effectivement positif. C’est ce qu’on appelle également le « taux de vrais positifs ».
- Spécificité : la probabilité que le modèle prédise un résultat négatif pour une observation alors que le résultat est effectivement négatif. C’est ce qu’on appelle également le « vrai taux négatif ».
Une façon de visualiser ces deux mesures consiste à créer une courbe ROC , qui signifie courbe « caractéristique de fonctionnement du récepteur ».
Il s’agit d’un graphique qui affiche la sensibilité le long de l’axe des y et (1 – spécificité) le long de l’axe des x.
Une façon de quantifier l’efficacité du modèle de régression logistique dans la classification des données consiste à calculer l’AUC , qui signifie « aire sous la courbe ».
Plus l’AUC est proche de 1, meilleur est le modèle.
L’exemple étape par étape suivant montre comment calculer l’AUC pour un modèle de régression logistique en Python.
Étape 1 : Importer des packages
Tout d’abord, nous allons importer les packages nécessaires pour effectuer une régression logistique en 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
Étape 2 : Ajuster le modèle de régression logistique
Ensuite, nous allons importer un ensemble de données et y adapter un modèle de régression logistique :
#import dataset from CSV file on Github
url = "https://raw.githubusercontent.com/Statology/Python-Guides/main/default.csv"
data = pd.read_csv(url)
#define the predictor variables and the response variable
X = data[['student', 'balance', 'income']]
y = data['default']
#split the dataset into training (70%) and testing (30%) sets
X_train,X_test,y_train,y_test = train_test_split(X,y,test_size=0.3,random_state=0)
#instantiate the model
log_regression = LogisticRegression()
#fit the model using the training data
log_regression.fit(X_train,y_train)
Étape 3 : Calculez l’ASC
Nous pouvons utiliser la fonction metrics.roc_auc_score() pour calculer l’AUC du modèle :
#use model to predict probability that given y value is 1
y_pred_proba = log_regression.predict_proba(X_test)[::,1]
#calculate AUC of model
auc = metrics.roc_auc_score(y_test, y_pred_proba)
#print AUC score
print(auc)
0.5602104030579559
L’AUC (aire sous courbe) pour ce modèle particulier est de 0,5602 .
Rappelons qu’un modèle avec un score AUC de 0,5 n’est pas meilleur qu’un modèle qui effectue des suppositions aléatoires.
Ainsi, dans la plupart des cas, un modèle avec un score AUC de 0,5602 serait considéré comme médiocre pour classer les observations dans les classes correctes.
Ressources additionnelles
Les didacticiels suivants offrent des informations supplémentaires sur les courbes ROC et les scores AUC :
Comment interpréter une courbe ROC (avec exemples)
Qu’est-ce qui est considéré comme un bon score d’ASC ?