Hoe stepaic in r te gebruiken voor functieselectie


Het Akaike Information Criterion ( AIC ) is een metriek die wordt gebruikt om te kwantificeren hoe goed een model bij een dataset past.

Het wordt als volgt berekend:

AIC = 2K – 2 ln (L)

Goud:

  • K: Het aantal modelparameters. De standaardwaarde van K is 2, dus een model met slechts één voorspellende variabele heeft een K-waarde van 2+1 = 3.
  • ln (L) : De log-waarschijnlijkheid van het model. De meeste statistische software kan deze waarde automatisch voor u berekenen.

AIC is ontworpen om het model te vinden dat de meeste variatie in de gegevens verklaart, terwijl modellen worden bestraft die een buitensporig aantal parameters gebruiken.

U kunt de functie stepAIC() uit het MASS- pakket in R gebruiken om iteratief voorspellingsvariabelen toe te voegen aan en te verwijderen uit een regressiemodel totdat u de set voorspellingsvariabelen (of „features“) vindt die het model met de laagste AIC-waarde produceert.

Deze functie gebruikt de volgende basissyntaxis:

stapAIC(object, richting, …)

Goud:

  • object : De naam van een aangepast model
  • richting : het type stapzoekopdracht dat u wilt gebruiken (“achteruit”, “vooruit” of “beide”)

Het volgende voorbeeld laat zien hoe u deze functie in de praktijk kunt gebruiken.

Voorbeeld: stepAIC() gebruiken voor objectselectie in R

Voor dit voorbeeld gebruiken we de mtcars- dataset die is ingebouwd in R, die metingen bevat van 11 verschillende attributen voor 32 verschillende auto’s:

 #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

Stel dat we een regressiemodel willen fitten met hp als responsvariabele en de volgende potentiële voorspellende variabelen:

  • mpg
  • gewicht
  • shit
  • qsec

We kunnen de functie stepAIC() uit het MASS- pakket gebruiken om verschillende voorspellende variabelen uit het model op te tellen en af te trekken totdat we bij het model komen met de laagst mogelijke AIC-waarde:

 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  

Zo interpreteert u het resultaat:

(1) Eerst beginnen we met het fitten van een regressiemodel met de vier voorspellende variabelen. Dit model heeft een AIC-waarde van 226,88 .

(2) Vervolgens bepaalt stepAIC dat het verwijderen van drat als voorspellende variabele de AIC-waarde verder zal verlagen tot 224,98 .

(3) Vervolgens bepaalt het stepAIC-model dat het verwijderen van mpg als voorspellende variabele de AIC-waarde verder zal verlagen tot 224,56 .

(4) Ten slotte bepaalt stepAIC dat er geen manier is om de AIC-waarde verder te verlagen door variabelen toe te voegen of te verwijderen.

Het uiteindelijke model is daarom:

pk = 441,26 + 38,67 (gewicht) – 23,47 (qsec)

Dit model heeft een AIC-waarde van 224,56 .

Aanvullende bronnen

In de volgende tutorials wordt uitgelegd hoe u andere veelvoorkomende taken in R kunt uitvoeren:

Hoe meervoudige lineaire regressie uit te voeren in R
Hoe stuksgewijs regressie uit te voeren in R
Hoe spline-regressie uit te voeren in R

Einen Kommentar hinzufügen

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert