02.6
特徴選択
まとめ
特徴選択は、20 列あるデータのうちラベルの予測に本当に効く 10 列だけを残し、雑音や重複の列を落とす前処理です。列を減らすと過学習しにくくなり、学習が速くなり、「どの列が効いたか」の説明もしやすくなります。やり方は、相互情報量や F 値で各列を採点して上位 \(k\) 列を残すフィルター法、列の組み合わせを変えてモデルの精度で選ぶラッパー法、ランダムフォレストの
feature_importances_ や Lasso の係数で選ぶ埋め込み法の 3 つで、この章では SelectKBest で \(k\) を 1〜20 に変えて精度が 10 列前後で頭打ちになることを確かめます。閾値を人が決めなくてよい Boruta も扱います。直感 #
テストの点数を予想するのに、勉強時間や前回の点数は役に立ちますが、出席番号は役に立ちません。それでも 20 列すべてをモデルに渡すと、500 件のデータの中から「出席番号 17 の人はたまたま高得点だった」のような偶然を拾って、新しい生徒で外します。特徴選択は「どの列を捨てるか」を数値で決める方法で、mutual_info_classif のスコアや交差検証の精度の頭打ちを根拠にします。この章では 20 列中 10 列だけが有効なデータを使い、どの方法でも 10 列前後が残るかを確かめます。
この章の構成 #
このチャプターで学べること #
- フィルター法・ラッパー法・埋め込み法が「スコアを誰が計算するか」で分かれること
SelectKBestで残す列数 \(k\) を変えたときの交差検証精度の読み方- Boruta がシャッフルしたシャドウ特徴量で「偶然の重要度の上限」を測る仕組み
これが分かるとできること #
- 列が数千あるデータを
mutual_info_classifで一次選別し、残りを Boruta で絞る手順を組める - 「\(k\) を増やしても精度が上がらない」グラフから残すべき列数を説明できる
Pipelineの中で特徴選択を行い、交差検証でリークしない評価ができる
学習の進め方 #
まず 特徴選択の基本 で 3 つのアプローチの違いを押さえ、SelectKBest で \(k\) と交差検証精度の関係を描いて「10 列前後で頭打ち」を目で確かめます。次に Boruta で、ランダムフォレストの重要度にシャドウ特徴量という基準を与え、閾値を人が決めずに列を選ぶ方法に進みます。最後に、選んだ列で学習したモデルの精度を全列のときと比べ、列を半分にしても精度が落ちないことを確認します。