参考サイト:
▶ Feature selection — Correlation and P-value
▶ How to Choose a Feature Selection Method For Machine Learning
▶ Feature Selection in Machine Learning using Python(youtube)
▶ Overview of feature selection methods
■特徴量選択手法■
・Filter Method
・Wrapper Method
・Embeded Method
・Feature Dimension Reduction
■Filter Method■
独立変数一つ一つの重要度を以下にある方法で調べて、重要度が小さい独立変数を見つける。
独立変数間の関係は考慮しないため、独立変数2つ以上組み合わさることで生み出せる特徴量を見逃すリスクがある。
- 主な手法 -
・Removal Constant, Quasi Constant and Duplicate features
ー実質、定数と変わらない変数や、変数間で内容がほとんど同じ変数の除外
・Pearson Correlation Coefficients(ピアソンの相関係数)
ー各独立変数間の相関係数を求めて、相関が強い変数を除外
・Mutual Information(相互情報量)による特徴量選択
ー各独立変数と従属変数の相互情報量を求めて、相互情報量の少ない独立変数を除外
※ 相互情報量については、このサイトを参照
・ROC/AUC(Classification)、MSE(Regression)による特徴量選択
ー分類問題に対しては、独立変数一つづつでRandomForestなどでモデリング後、ROC/AUCを求めてスコアが0.5未満の独立変数を除外。回帰問題に対しては、MSEを求めて誤差が大きくて役に立っていない変数を除外。
・ANOVAによる特徴量選択
ー独立変数毎に従属変数とのF値を求め、しきい値(p値<0.01など)で有意差のある独立変数を選択。
・Categorical変数に対する、カイ二乗検定による特徴量選択
ー各Categorical変数と従属変数でカイ二乗検定をかけて、しきい値(p値<0.01など)で有意差があるCategorical変数を選択。
■Wrapper Method■
- 全ての独立変数の組を調べて、一番予測力の高い組み合わせを見つける。なので、計算コストがとても高いが、Filter Methodよりパフォーマンスは良い。
- 特徴量が多い場合は、計算コストが障害になるので、特徴量をある程度減らしてから使ってみるといいかも。
- また、変数の組をしらみつぶしに調べるだけで、変数間の依存関係は考慮できないため、必ずしも最適な組み合わせを見つけられるとは限らない。
- 方法は以下の3種
- Subset Selection(Exhaustive Feature Selection)
- Forward Step Selection
- Backward Step Selection(Recursive Feature Selection)
■Embeded Method■
ー学習モデルを利用した特徴量選択手法。線形回帰モデルを利用した手法と、Random Forest,Gradient Boostingを利用した手法などがある。
- L1、L2正則付き線形回帰モデルを利用した特徴量選択は、線形回帰モデルの各係数(β)の大きさを各特徴量の重要度の値として特徴量選択に利用する。
y = β0 + β1*x1 + ... +βp*xp + ε
- Random Forest, Gradient Boostingを利用した特徴量選択は、分類木作成により導いた各特徴量の重要度の大きさを特徴量選択に利用する。
■Feature Dimension Reduction■
ーLDAやPCAによるデータの次元削減を利用した特徴量選択。スコアの向上よりも、計算コストの削減に効果が高い。
■変数の種類毎の特徴量フィルタリング手法■
以下、参考サイトより
○ 独立変数ー数値型、従属変数ー数値型
○ 独立変数ー数値型、従属変数ーカテゴリ型
・ANOVA(※ANOVAはパラメトリックで平均値の比較なので、中央値で比較したい時やノンパラメトリックの時はクラスカル=ウォリス検定を利用)
○ 独立変数ーカテゴリ型、従属変数ー数値型
・『独立変数ー数値型、従属変数ーカテゴリ型』に同じ
○ 独立変数ーカテゴリ型、従属変数ーカテゴリ型
・相互情報量(参考サイト1、参考サイト2、参考サイト3、参考サイト4、sklearn例)
※相互情報量は計算量が多いので、ビッグデータに対しては注意して利用したほうがよい。(データをランダムサンプリングして使うとかしたらいいのか?)
・相互情報量に関するチュートリアル動画
■特徴量選択時の注意点■
従属変数と関係がなくても、他の独立変数と合わせて使うと効果がある場合があるが、そういった変数を除外してしまう可能性がある。なので、従属変数と関連が無かったとして捨てた独立変数も、前処理をし直しているときには見直した方が良い。
■回帰分析による特徴量選択■
この参考サイトでは、各独立変数と従属変数をolsで単回帰分析をかけてp値を求め、有意差がある独立変数を選択している。しかし、機械学習ではデータ量が多いため簡単に有意差がでるので、同時に効果量も計算し、効果量で線引きするか、単純に相関係数で線引きするだけでもいいのではないか?
※単回帰分析における、効果量の計算方法: http://www.relak.net/psy/power/p4_regress.htm
0コメント