Comment calculer l’AIC des modèles de régression en Python



Le critère d’information d’Akaike (AIC) est une métrique utilisée pour comparer l’ajustement de différents modèles de régression.

Il est calculé comme suit :

AIC = 2K – 2 ln (L)

où:

  • K : Le nombre de paramètres du modèle. La valeur par défaut de K est 2, donc un modèle avec une seule variable prédictive aura une valeur K de 2+1 = 3.
  • ln (L) : La log-vraisemblance du modèle. Cela nous indique la probabilité du modèle, compte tenu des données.

L’AIC est conçu pour trouver le modèle qui explique le plus de variation dans les données, tout en pénalisant les modèles qui utilisent un nombre excessif de paramètres.

Une fois que vous avez ajusté plusieurs modèles de régression, vous pouvez comparer la valeur AIC de chaque modèle. Le modèle avec l’AIC le plus bas offre le meilleur ajustement.

Pour calculer l’AIC de plusieurs modèles de régression en Python, nous pouvons utiliser la fonction statsmodels.regression.linear_model.OLS() , qui possède une propriété appelée aic qui nous indique la valeur AIC pour un modèle donné.

L’exemple suivant montre comment utiliser cette fonction pour calculer et interpréter l’AIC pour divers modèles de régression en Python.

Exemple : calculer et interpréter l’AIC en Python

Supposons que nous souhaitions ajuster deux modèles de régression linéaire multiple différents en utilisant des variables de l’ensemble de données mtcars .

Tout d’abord, nous allons charger cet ensemble de données :

from sklearn.linear_model import LinearRegression
import statsmodels.api as sm
import pandas as pd

#define URL where dataset is located
url = "https://raw.githubusercontent.com/Statology/Python-Guides/main/mtcars.csv"

#read in data
data = pd.read_csv(url)

#view head of data
data.head()

        model	          mpg	  cyl	disp  hp    drat wt   qsec  vs am gear carb
0	Mazda RX4	  21.0  6     160.0 110  3.90 2.620 16.46   0  1  4	4
1	Mazda RX4 Wag	  21.0  6     160.0 110  3.90 2.875 17.02   0  1  4	4
2	Datsun 710	  22.8  4     108.0 93   3.85 2.320 18.61   1  1  4	1
3	Hornet 4 Drive	  21.4  6     258.0 110  3.08 3.215 19.44   1  0  3	1
4	Hornet Sportabout 18.7	8     360.0 175  3.15 3.440 17.02   0  0  3	2

Voici les variables prédictives que nous utiliserons dans chaque modèle :

  • Variables prédictives dans le modèle 1 : disp, hp, wt, qsec
  • Variables prédictives dans le modèle 2 : disp, qsec

Le code suivant montre comment ajuster le premier modèle et calculer l’AIC :

#define response variable
y = data['mpg']

#define predictor variables
x = data[['disp', 'hp', 'wt', 'qsec']]

#add constant to predictor variables
x = sm.add_constant(x)

#fit regression model
model = sm.OLS(y, x).fit()

#view AIC of model
print(model.aic)

157.06960941462438

L’AIC de ce modèle s’avère être de 157,07 .

Ensuite, nous ajusterons le deuxième modèle et calculerons l’AIC :

#define response variable
y = data['mpg']

#define predictor variables
x = data[['disp', 'qsec']]

#add constant to predictor variables
x = sm.add_constant(x)

#fit regression model
model = sm.OLS(y, x).fit()

#view AIC of model
print(model.aic)

169.84184864154588

L’AIC de ce modèle s’avère être de 169,84 .

Étant donné que le premier modèle a une valeur AIC inférieure, il s’agit du modèle le mieux adapté.

Une fois que nous avons identifié ce modèle comme étant le meilleur, nous pouvons procéder à l’ajustement du modèle et analyser les résultats, y compris la valeur R au carré et les coefficients bêta, pour déterminer la relation exacte entre l’ensemble de variables prédictives et la variable de réponse .

Ressources additionnelles

Un guide complet de la régression linéaire en Python
Comment calculer le R-carré ajusté en Python

Ajouter un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *