K_DM Book
用語集
対象者 標準
対象者別の入口 →

対象者の設定はこのブラウザの中にだけ保存されます。

言語 JA

特徴選択

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 で、ランダムフォレストの重要度にシャドウ特徴量という基準を与え、閾値を人が決めずに列を選ぶ方法に進みます。最後に、選んだ列で学習したモデルの精度を全列のときと比べ、列を半分にしても精度が落ちないことを確認します。