機械学習
scikit-learn
特徴量
sklearn
前処理

特徴量選択の3つの基本戦略

はじめに

Pythonではじめる機械学習にて、自動特徴量選択の手法についてまとめられていた。
有用な特徴量だけを残して残りを捨てて、特徴量の数を減らすことで、汎化性能を向上することができる。
その基本的な戦略が下記の3つ。

単変量統計

個々の特徴量とターゲットとの間に統計的に顕著な関係があるかどうかを計算する。
個々の特徴量を個別に考慮する。そのため、他の特徴量と組み合わさって意味を持つような特徴量は捨てられる。
特徴量が多すぎてモデルを作ることができない場合や、多くの特徴量が全く関係ないと思われるような場合には、この手法が有効。

sklearn では、 SelectPercentile を用いる。

モデルベース特徴量選択

教師あり学習モデルを1つ用いてここの特徴量の重要性を判断し、重要なものだけを残す手法。
特徴量選択に用いる教師あり学習モデルと最終的に使う教師あり学習モデルと同じでなくても良い。
例)RandomForestで特徴量の重要度を元に選択し、ロジスティック回帰で教師あり学習をする、など

sklearn では、 SelectFromModel を用いる。

反復特徴量選択

異なる特徴量を用いて一連のモデルを作る。
そのため前述の手法と比べて時間はかかる。
これには2つの基本的な方法がある。

  1. 全く特徴量を使わないところからある基準が満たされるところまで1つずつ特徴量を加えていく方法
  2. 全ての特徴量を使う状態から1つずつ特徴量を取り除いていく方法(再帰的特徴量削減)

2ではまず、全ての特徴量でモデルを作り、そのモデルで最も重要度が低い特徴量を削除する。そしてまたモデルをつくり、これを繰り返す。

sklearn では、 RFE を用いる。

参考

Pythonではじめる機械学習 ―scikit-learnで学ぶ特徴量エンジニアリングと機械学習の基礎