はじめに
機械学習の講義で、同じデータセットに対して複数のアルゴリズムを試す演習がありました。
k-近傍法(k-NN) と SGDClassifier というモデルを使ったところ、分類結果が全く異なり、非常に驚きました。
今回は、なぜアルゴリズムによって結果が変わるのか、そしてそこに潜む「過学習」という現象について、学んだことをまとめます。
結果を分ける「決定境界」
分類アルゴリズムの役割は、データがどのクラスに属するかを分けるための「仕切り線」を引くことです。この仕切り線のことを「決定境界」と呼びます。
アルゴリズムにはそれぞれ「線の引き方のクセ」があります。
- k-近傍法(k-NN): 近くのデータ点を基準にするため、データに忠実なギザギザした境界線を引きやすい
- 線形モデル(SGDで学習した場合など): 全体を貫くような、滑らかな(直線的な)境界線を引こうとする傾向がある
「過学習」とは
k-NNが引いたギザギザの線は、訓練データの一つ一つを完璧に分けようとしすぎています。一見すると優秀に見えますが、これは「過学習 」という危険な状態かもしれません。
過学習とは、訓練データに過剰に適合してしまい、未知の新しいデータに対する予測性能が逆に低下してしまう現象です。
例えるなら、「模擬試験の問題と答えを丸暗記して100点を取ったが、問題の聞き方が少し変わった本番の試験では全く点数が取れなかった」という状態です。
訓練データ(模擬試験)に特化しすぎたせいで、実世界(本番試験)で役に立たなくなってしまうのです。
まとめ
今回の演習を通して、以下のことを学びました。
- アルゴリズムによって決定境界の引き方が違う
- 訓練データに適合しすぎる「過学習」は、未知のデータへの対応力を失う危険なサイン
- 少量のデータだけでアルゴリズムの優劣を決めるのは早計である