特徴選択とは

次元削減の手段の1つ。
高次元のデータから目的とする予測に関連が強い特徴を選択し、それ以外を捨てることで次元を削減する。

逐次後退選択(SBS)

Sequential Backward Selection.
削ってもモデルの性能が比較的悪化しない特徴量を選んで削っていく手法。

仕組み

\(d\) 次元データに特徴選択を適用し、次元を減らすことを考える。

特徴量の集合 \(\boldsymbol{X} = (x_1, \cdots, x_d)\) に対して、最適化したい評価関数 \(J(\boldsymbol{X})\) を用意する。
ex. 分類モデルによるクラスラベルの予測精度

ある \(x_j\) の列を取り除いた \(d-1\) 次元データ(\(\boldsymbol{X} = (x_1, \cdots, x_{j-1}, x_{j+1}, \cdots, x_d)\))でモデルを学習してみて、元のデータによる学習と比べて

  • 精度が大きく下がる → 特徴量 \(x_j\) は学習に重要だった(除外するとダメージが大きい)
  • 精度があまり下がらない → 特徴量 \(x_j\) は学習に重要ではなかった(除外してもダメージが小さい)

と言える。
よって、\(x_1, \cdots, x_d\) 全てでこの実験をしてみて、一番高い精度が得られたときに取り除いた \(x_j\) を元データから除外する。

こうして得られた \(d+1\) 次元データに対して、全く同様のことを繰り返すことで1つずつ次元を下げていくことができる。

実装

コード

動作確認

SBS

おおよそ、ラベル付けへの寄与(重み)が小さい特徴量から順に削除されていることが分かる。

ランダムフォレストを利用した特徴選択

ランダムフォレストを使い、各特徴量の重要度を計算する手法。

仕組み

ランダムフォレストでは、データサンプル \(N\) 個のうち \(n(<N)\) 個をランダムに抽出して決定木を1つ作る。
このとき、選ばれなかった \(N-n\) 個のデータサンプルを OOB (out-of-bag) と呼ぶ。

  1. トレーニングデータを使って決定木を学習
  2. 学習した決定木の OOB に対する性能(正解率)\(a\) を算出
  3. 各特徴量 \(x_j\) について以下の操作を行う
    • OOB のデータサンプル内で、特徴量 \(x_j\) の値だけをランダムシャッフル → \(x_j\) をラベル判別に使えなくしている
    • シャッフル済みの OOB を入力として、決定木の性能(正解率)\(a_j\) を算出
    • \(a-a_j\)(= \(x_j\) をまともに使えなくしたことによる性能悪化の度合い)を計算して記録
  4. 多数の決定木を作って1〜3を繰り返し、\(x_j\) ごとに \(a-a_j\) の平均値を取り、\(x_j\) の重要度とする

実装

各特徴量に偏った重み付けをした教師データを作り、重要度の計算結果に反映されるか確認する。

[0.00000e+00 1.69750e+00 7.61650e+00 1.45855e+01 3.33990e+01 4.68500e-01
 9.75000e-02 1.50000e-03 0.00000e+00 0.00000e+00]

RandomForestSelector

期待通り、重みを大きくしたものほど重要度が高くなっている。