ナード戦隊データマン

データサイエンスを用いて悪と戦うぞ

特徴選択の基礎: フィルタ・ラッパー・組み込み

特徴選択とは、良いモデルを作成するために、予測変数と関係性の高い変数を特定することです。例えば、生のデータは冗長な変数がたくさんあります。その状況で、すべての変数をモデルに組み込みたくはないでしょう。あるいは、変数を変換して新たな変数を作る場合もあります。ここでは、良い特徴を選ぶための基本事項を書きます。

フィルタ

フィルタは、予測変数との相関などの統計量を用いてランキングをつけて、特徴の候補を選び出すことです。

具体例として、線形回帰を用いる方法があります。各特徴ごとに、その特徴を予測変数として線形回帰を実行し、p値が低いもの、あるいは決定係数(R2)が高いものでランク付けします。

library(mlbench)
library(caret)
data(PimaIndiansDiabetes)
control <- trainControl(method="repeatedcv", number=10, repeats=3)
model <- train(diabetes~., data=PimaIndiansDiabetes, method="lvq", preProcess="scale", trControl=control)
importance <- varImp(model, scale=FALSE)
print(importance)
plot(importance)

f:id:mathgeekjp:20170814195058p:plain

ラッパー

ラッパーは、なんらかの統計量からうまくいきそうな特徴量を一定個見つける方法です。特徴選択のためのアルゴリズムを選び、特徴の選択基準を決めて実行します。

アルゴリズム選択

逐次回帰法について説明します。逐次回帰には2つの基本的なものがあります。

SFS(前進選択): 特徴がない回帰モデルからスタートし、選択基準に基づいてモデルを改善する変数を1つづつ追加していきます。各段階で候補になる全ての変数をためし、最もモデルが良くなる変数を選択します。これ以上、モデルが改善されないところまで繰り返します。

SBE(後退消去): すべての特徴を含む回帰モデルからスタートし、選択基準に基づいてモデルを改善するような変数削除を1つづつ行います。各段階で候補になる全ての変数を試し、最もモデルが良くなる変数削除をします。これ以上、モデルが改善されないところまで繰り返されます。

その他にも、複合手法などがあります。

選択基準

アルゴリズムの説明の中で「選択基準」という言葉を用いました。以下のような選択基準があります。

決定係数(R2): モデルによって説明される変数の分散の割合。

p値: 「各係数の値がゼロである」と仮定した場合の検定統計量です。0に近いほど、係数に意味があるものとみなされます。

AIC: モデルのパラメータ数kとし、ln(L)を最大尤度の対数としたときに、2k-2ln(L)で表される量です。AICの最小化が目標となります。

BIC: モデルのパラメータ数kとし、nを観測データ数とし、ln(L)を最大尤度の対数としたとき、k*ln(n)-2ln(L)で表される量です。BICの最小化が目標となります。

組み込み

組み込みとは、機械学習アルゴリズム自体が、分類と特徴選択を同時に行うことです。ここでは決定木の例を用います。

決定木

決定木とは、分類アルゴリズムの一つです。以下のような木を生成することで分類します。

f:id:mathgeekjp:20170814191539p:plain

上記の木では、特徴が選択されています。一つの基準として、「情報量」を用いる場合があります。情報量の多さを定量化するには、エントロピーを用います。エントロピーは以下のように定義できます。

f:id:mathgeekjp:20170814193220g:plain

エントロピーは、どの特徴をつかって木を分岐させるかを決めるのに役立ちます。決定木は、根から逐次的に構築します。次のノードをどの属性にすべきかを情報利得を最大にするもので選びます。

参考

  1. Feature selection - Wikipedia
  2. machinelearningmastery.com