K_DM Book
用語集
対象者 高校生
対象者別の入口 →

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

言語 JA

特徴選択の基本(高校生向け)

入門高校生

02.6.1 高校生向け

特徴選択の基本(高校生向け)

最終更新 2026-11-01 読了時間 1 分
まとめ
特徴選択は、表の列(特徴量)のうち予測に本当に役立つものだけを残す前処理です。20 列あった表を 10 列に減らすと、偶然に合わせすぎる過学習が起きにくくなり、計算が速くなり、「どの列が効いているか」が読みやすくなります。選び方は 3 つあり、列を 1 本ずつ採点するフィルター法、組み合わせを試して精度で選ぶラッパー法、モデルが学習しながら選ぶ埋め込み法です。「列が多いほど正確」は誤解で、学習に使っていないデータで測った精度は、ある数を超えると上がらなくなります。

こんな場面を想像してみよう #

文化祭の模擬店の売上を予想するために、去年までの 15 日分の記録を表にしました。列は「気温」「天気」「来場者数」「値段」「宣伝ポスターの枚数」から、「その日の曜日」「担当者の血液型」「隣の店の名前の文字数」まで、思いつくままに 20 列。この 20 列をすべて使って予想の式(重回帰)を作るべきでしょうか。

列の名前売上との関係残す?
来場者数多いほど売れる(強い)残す
気温暑いほど冷たい物が売れる(中くらい)残す
値段高いと売れにくい(中くらい)残す
担当者の血液型関係なし捨てる
隣の店の名前の文字数関係なし捨てる

血液型や隣の店の名前は、常識で考えれば 20 列の中でも売上と関係ありません。ところが記録が 15 日分しかないと、たまたま「A 型の日によく売れた」というパターンが見つかり、式はそれを本気にします。これが過学習で、20 列すべてを使った式が来年の文化祭で外れる原因になります。特徴選択は、この「捨てる」判断を数値にもとづいて行う方法です。

列はどうやって選ぶ? #

標準版では、20 列のうち 10 列が役に立ち、5 列は他の列の焼き直し、5 列は純粋なノイズというデータで実験しています。選び方は 3 通りあります。

1 つ目はフィルター法で、列を 1 本ずつ採点する方法です。各列と売上の関係の強さを数値にして(たとえば相関係数の大きさ)、点数の高い順に上位 \(k\) 本だけ残します。モデルを作る前に表の段階でふるいにかけるので計算が軽いのが利点です。標準版では、曲がった関係も拾える「相互情報量」という点数を使っています。

2 つ目はラッパー法で、組み合わせを試す方法です。「この 5 列で予想の式を作ったら精度はいくつか」を実際に測り、列を 1 本ずつ足したり(前方選択)引いたり(後方除去)しながら、精度がいちばん良い組み合わせを探します。手間はかかりますが「2 本そろって初めて効く列」も見つけられます。

3 つ目は埋め込み法で、モデルに選ばせる方法です。ラッソ回帰のように不要な係数を 0 にする仕組みや、ランダムフォレストが出す「列の重要度」を使い、学習と同時に選びます。

どの方法でも最後に20 本のうち何本残すかを決めます。残す本数 \(k\) を 1, 2, 3, … と増やしながら、学習に使っていないデータで精度を測ってグラフにします。精度は最初は急に上がり、役に立つ 10 列を使い切ったあたりで横ばいになります。その手前の \(k\) を選びます。

動かして見てみよう #

下の図で「再生」を押すと、説明した手順が 1 つずつ進みます。手順ごとの説明は図の下に出ます。

気をつけたいこと #

最初の注意点は、相関係数 0 は無関係ではないことです。気温と「温かい飲み物+冷たい飲み物の合計売上」は U 字の関係になり、相関係数はほぼ 0 でも気温は明らかに効いています。相関係数 \(r\) だけでふるうと、こうした U 字の列を落としてしまいます。二つ目は、似た列は 2 本あっても片方で十分なことです。「気温(℃)」と「気温(℉)」のように中身が同じ列は、両方残しても情報は増えません。フィルター法は 1 本ずつ採点するので、似た列を両方とも高く評価してしまいます。三つ目は、列を選ぶ作業そのものにも過学習があることです。ラッパー法で 10 列から 5 列を選ぶ場面を考えてください。ラッパー法で「精度がいちばん良い組み合わせ」を選ぶとき、その精度を測ったデータに合わせすぎることがあります。最後の確認は、選ぶときにも使っていないデータで行います。

やってみよう #

最初の課題は、自分の 1 週間の「睡眠時間」「勉強時間」「スマホの使用時間」と「小テストの点数」を表にし、点数との関係を散布図で見て、効いていそうな列に順位をつけることです。二つ目は、身の回りの「予想したいこと」を 1 つ決め、材料になりそうな列を 10 個挙げて、「常識で捨てられる列」「調べないと分からない列」「2 本そろうと効きそうな列」に分けることです。三つ目は、記録が 5 日分しかないのに列が 10 本あるとき、どんな列でも「たまたま点数と合ってしまう」ことがある理由を考えることです。日数を 100 日に増やすと何が変わるでしょうか。

つぎに読む #

相互情報量によるスコアリング、SelectKBest で \(k\) と精度の関係を描くコード、ランダムフォレストの重要度は 標準版の特徴選択の基本 で扱っています。埋め込み法の代表であるラッソ回帰の考え方は リッジ回帰・ラッソ回帰(高校生向け) へ進んでください。列を「選ぶ」のではなく「作り直して減らす」方法は 主成分分析(高校生向け) で紹介しています。