R で stepaic を使用して特徴を選択する方法
赤池情報量基準 ( AIC ) は、モデルがデータセットにどの程度適合するかを定量化するために使用される指標です。
次のように計算されます。
AIC = 2K – 2 ln (長さ)
金:
- K:モデルパラメータの数。 K のデフォルト値は 2 であるため、予測変数が 1 つだけあるモデルの K 値は 2+1 = 3 になります。
- ln (L) : モデルの対数尤度。ほとんどの統計ソフトウェアは、この値を自動的に計算できます。
AIC は、過剰な数のパラメーターを使用するモデルにペナルティを課しながら、データの変動を最も多く説明するモデルを見つけるように設計されています。
R のMASSパッケージのstepAIC()関数を使用すると、最小の AIC 値を持つモデルを生成する予測子変数 (または「特徴」) のセットが見つかるまで、回帰モデルに対して予測子変数の追加と削除を繰り返し行うことができます。
この関数は次の基本構文を使用します。
stepAIC(オブジェクト, 方向, …)
金:
- object : 調整されたモデルの名前
- 方向: 使用するステップ検索のタイプ (「後方」、「前方」、または「両方」)
次の例は、この関数を実際に使用する方法を示しています。
例: R での特徴選択に stepAIC() を使用する
この例では、R に組み込まれているmtcarsデータセットを使用します。これには、32 台の異なる車の 11 個の異なる属性の測定値が含まれています。
#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
応答変数としてhpを使用し、次の潜在的な予測変数を使用して回帰モデルを近似したいとします。
- mpg
- 重さ
- たわごと
- qsec
MASSパッケージのstepAIC()関数を使用して、可能な限り低い AIC 値を持つモデルに到達するまで、モデルにさまざまな予測変数を加算および減算できます。
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
結果を解釈する方法は次のとおりです。
(1)まず、4 つの予測変数を使用して回帰モデルをフィッティングすることから始めます。このモデルの AIC 値は226.88です。
(2)次に、stepAIC は、予測子変数としてdratを削除すると、AIC 値がさらに224.98に減少すると判断します。
(3)次に、stepAIC モデルは、予測子変数としてmpgを削除すると、AIC 値がさらに224.56に減少すると判断します。
(4)最後に、stepAIC は、変数の追加または削除によって AIC 値をさらに減らす方法がないと判断します。
したがって、最終的なモデルは次のようになります。
hp = 441.26 + 38.67 (重量) – 23.47 (qsec)
このモデルの AIC 値は224.56です。
追加リソース
次のチュートリアルでは、R で他の一般的なタスクを実行する方法について説明します。