Comment utiliser stepAIC dans R pour la sélection des fonctionnalités



Le critère d’information d’Akaike ( AIC ) est une mesure utilisée pour quantifier dans quelle mesure un modèle s’adapte à un ensemble de données.

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. La plupart des logiciels statistiques peuvent calculer automatiquement cette valeur pour vous.

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.

Vous pouvez utiliser la fonction stepAIC() du package MASS dans R pour ajouter et supprimer de manière itérative des variables prédictives d’un modèle de régression jusqu’à ce que vous trouviez l’ensemble de variables prédictives (ou « caractéristiques ») qui produit le modèle avec la valeur AIC la plus basse.

Cette fonction utilise la syntaxe de base suivante :

stepAIC(objet, direction, …)

où:

  • object : Le nom d’un modèle ajusté
  • direction : le type de recherche pas à pas à utiliser (« en arrière », « en avant » ou « les deux »)

L’exemple suivant montre comment utiliser cette fonction dans la pratique.

Exemple : utilisation de stepAIC() pour la sélection de fonctionnalités dans R

Pour cet exemple, nous utiliserons l’ensemble de données mtcars intégré dans R, qui contient des mesures sur 11 attributs différents pour 32 voitures différentes :

#view first six rows of mtcars dataset
head(mtcars)

                   mpg cyl disp  hp drat    wt  qsec vs am gear carb
Mazda RX4         21.0   6  160 110 3.90 2.620 16.46  0  1    4    4
Mazda RX4 Wag     21.0   6  160 110 3.90 2.875 17.02  0  1    4    4
Datsun 710        22.8   4  108  93 3.85 2.320 18.61  1  1    4    1
Hornet 4 Drive    21.4   6  258 110 3.08 3.215 19.44  1  0    3    1
Hornet Sportabout 18.7   8  360 175 3.15 3.440 17.02  0  0    3    2
Valiant           18.1   6  225 105 2.76 3.460 20.22  1  0    3    1

Supposons que nous souhaitions ajuster un modèle de régression utilisant hp comme variable de réponse et les variables prédictives potentielles suivantes :

  • mpg
  • poids
  • merde
  • qsec

Nous pouvons utiliser la fonction stepAIC() du package MASS pour ajouter et soustraire diverses variables prédictives du modèle jusqu’à ce que nous arrivions au modèle avec la valeur AIC la plus basse possible :

library(MASS)

#fit initial multiple linear regression model
model <- lm(hp ~ mpg + wt + drat + qsec, data=mtcars)

#use both forward and backward selection to find model with lowest AIC
stepAIC(model, direction="both")

Start:  AIC=226.88
hp ~ mpg + wt + drat + qsec

       Df Sum of Sq   RSS    AIC
- drat  1      94.9 28183 224.98
- mpg   1    1519.4 29608 226.56
  none              28088 226.88
- wt    1    3861.9 31950 229.00
- qsec  1   28102.2 56190 247.06

Step:  AIC=224.98
hp ~ mpg + wt + qsec

       Df Sum of Sq   RSS    AIC
- mpg   1    1424.5 29608 224.56
  none              28183 224.98
+ drat  1      94.9 28088 226.88
- wt    1    3797.9 31981 227.03
- qsec  1   29625.1 57808 245.97

Step:  AIC=224.56
hp ~ wt + qsec

       Df Sum of Sq   RSS    AIC
  none              29608 224.56
+ mpg   1      1425 28183 224.98
+ drat  1         0 29608 226.56
- wt    1     43026 72633 251.28
- qsec  1     52881 82489 255.35

Call:
lm(formula = hp ~ wt + qsec, data = mtcars)

Coefficients:
(Intercept)           wt         qsec  
     441.26        38.67       -23.47  

Voici comment interpréter le résultat :

(1) Tout d’abord, nous commençons par ajuster un modèle de régression avec les quatre variables prédictives. Ce modèle a une valeur AIC de 226,88 .

(2) Ensuite, stepAIC détermine que la suppression de drat en tant que variable prédictive réduira davantage la valeur AIC à 224,98 .

(3) Ensuite, le modèle stepAIC détermine que la suppression de mpg en tant que variable prédictive réduira davantage la valeur AIC à 224,56 .

(4) Enfin, stepAIC détermine qu’il n’y a aucun moyen de réduire davantage la valeur AIC en ajoutant ou en supprimant des variables.

Le modèle final est donc :

ch = 441,26 + 38,67 (poids) – 23,47 (qsec)

Ce modèle a une valeur AIC de 224,56 .

Ressources additionnelles

Les didacticiels suivants expliquent comment effectuer d’autres tâches courantes dans R :

Comment effectuer une régression linéaire multiple dans R
Comment effectuer une régression par morceaux dans R
Comment effectuer une régression spline dans R

Ajouter un commentaire

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