はじめに
機械学習モデルを学習するときに、必ずと言ってよいほど出てくる重要テーマが
overfitting(過学習) と underfitting(未学習) です。
モデルは、ただ訓練データに対して高い精度を出せばよいわけではありません。
本当に重要なのは、まだ見たことがない新しいデータに対しても、ある程度正しく予測できることです。
この「未知のデータにも対応できる力」を、一般的に 汎化性能 と呼びます。
本記事では、機械学習の基礎として重要な
- overfitting
- underfitting
- bias
- variance
- 汎化性能
について、初心者にも分かりやすく整理します。
🎯 対象読者
- 機械学習をこれから学び始める方
- overfitting と underfitting の違いが曖昧な方
- bias / variance のイメージをつかみたい方
- AWS の AI / ML 系資格を勉強している方
- モデル改善の基本的な考え方を整理したい方
🧩 まず結論:モデルは「覚えすぎ」ても「学ばなすぎ」てもダメ
機械学習では、モデルがデータから規則を学習します。
ただし、学習の状態には大きく3つあります。
| 状態 | 説明 | 問題 |
|---|---|---|
| ちょうどよく学習 | データの本質的な傾向を学習できている | 理想 |
| overfitting | 訓練データを細かく覚えすぎている | 新しいデータに弱い |
| underfitting | データの規則を十分に学べていない | 訓練データにも弱い |
一言で言うと、
overfitting = 覚えすぎ
underfitting = 学ばなすぎ
というイメージです。
📌 汎化性能とは?
overfitting と underfitting を理解する前に、まず 汎化性能 を押さえておくと分かりやすいです。
汎化性能とは、
モデルが未知のデータに対してどれくらい正しく予測できるか という能力です。
例えば、試験勉強に例えると分かりやすいです。
良い学習
- 問題の考え方を理解している
- 少し違う問題が出ても解ける
- 応用問題にも対応できる
これは汎化性能が高い状態です。
悪い学習
- 過去問の答えだけを丸暗記している
- 見たことがある問題だけ解ける
- 少し変えられると解けない
これは汎化性能が低い状態です。
機械学習でも同じで、
訓練データだけに強いモデルではなく、新しいデータにも強いモデル を作ることが大切です。
🔴 Overfitting(過学習)とは?
Overfitting とは、
モデルが訓練データを細かく覚えすぎてしまい、新しいデータに弱くなる状態 です。
一言で言うと
overfitting = 訓練データを覚えすぎた状態
モデルが訓練データの本質的な規則だけでなく、
たまたま含まれていたノイズや細かすぎる特徴まで学習してしまうと、過学習になります。
🧪 Overfitting の典型的な状態
Overfitting では、よく以下のような状態になります。
| データ | 精度 |
|---|---|
| 訓練データ | とても高い |
| テストデータ | 低い |
つまり、学習に使ったデータではよく当たるのに、
新しいデータでは急に当たらなくなります。
試験勉強で例えると
学生が過去問の答えを丸暗記した状態です。
過去問とまったく同じ問題が出れば正解できますが、
少し言い方を変えられたり、数字を変えられたりすると解けません。
これは、問題の本質を理解したのではなく、
答えそのものを覚えてしまった 状態です。
機械学習でも同じように、モデルが訓練データを細かく覚えすぎると、未知のデータに弱くなります。
🧠 Overfitting が起きやすい原因
Overfitting は、主に以下のような場合に起きやすいです。
| 原因 | 説明 |
|---|---|
| モデルが複雑すぎる | データの細かいノイズまで拾ってしまう |
| 訓練データが少ない | 少ないデータを過度に覚えてしまう |
| 特徴量が多すぎる | 本質的でない特徴まで学習してしまう |
| 学習回数が多すぎる | 訓練データに合わせすぎてしまう |
| ノイズが多い | 偶然のばらつきまで学習してしまう |
特に、データ量に対してモデルが複雑すぎる場合は、過学習が起きやすくなります。
🛠 Overfitting の対策
Overfitting を防ぐためには、モデルが訓練データに合わせすぎないようにします。
代表的な対策は以下です。
| 対策 | 説明 |
|---|---|
| データを増やす | より多くのパターンを学習できるようにする |
| モデルを簡単にする | 複雑すぎるモデルを避ける |
| 特徴量を減らす | 不要な特徴を削除する |
| 正則化を使う | モデルが複雑になりすぎないように制約をかける |
| Early stopping | 検証データの性能が悪化したら学習を止める |
| Cross Validation | 複数の分割で評価して安定性を見る |
試験対策としては、
過学習 = データ追加、モデル簡素化、正則化
というセットで覚えておくと分かりやすいです。
🔵 Underfitting(未学習)とは?
Underfitting とは、
モデルがデータの規則を十分に学習できていない状態 です。
一言で言うと
underfitting = 学習不足の状態
モデルが単純すぎたり、特徴量が足りなかったりすると、
訓練データに対してもテストデータに対しても精度が低くなります。
🧪 Underfitting の典型的な状態
Underfitting では、よく以下のような状態になります。
| データ | 精度 |
|---|---|
| 訓練データ | 低い |
| テストデータ | 低い |
つまり、そもそも訓練データの規則すら十分に学べていません。
試験勉強で例えると
学生が公式や基本ルールをまだ理解していない状態です。
過去問を見ても解けないし、
新しい問題も当然解けません。
これは、覚えすぎではなく、
まだ十分に学べていない 状態です。
🧠 Underfitting が起きやすい原因
Underfitting は、主に以下のような場合に起きやすいです。
| 原因 | 説明 |
|---|---|
| モデルが単純すぎる | データの複雑な関係を表現できない |
| 特徴量が少ない | 予測に必要な情報が足りない |
| 学習時間が短い | 十分に学習できていない |
| 前処理が不十分 | データがモデルに合う形になっていない |
| アルゴリズムが不適切 | 問題に合わないモデルを使っている |
例えば、複雑な曲線関係があるデータに対して、単純な直線モデルだけを使うと、
うまく表現できず underfitting になることがあります。
🛠 Underfitting の対策
Underfitting を改善するには、モデルがより多くの規則を学べるようにします。
代表的な対策は以下です。
| 対策 | 説明 |
|---|---|
| モデルを複雑にする | より表現力の高いモデルを使う |
| 特徴量を追加する | 予測に役立つ情報を増やす |
| 学習時間を長くする | 十分に学習させる |
| 前処理を見直す | データをモデルが学習しやすい形にする |
| 別のアルゴリズムを試す | 問題に合ったモデルを選ぶ |
試験対策としては、
未学習 = モデル複雑化、特徴量追加、学習時間追加
というイメージで覚えると分かりやすいです。
⚖️ Bias(バイアス / 偏り)とは?
Bias とは、モデルの予測がどれくらい単純な仮定に引っ張られているかを表す考え方です。
ざっくり言うと、
モデルが単純すぎて、データの本当の規則を学べていない状態 に関係します。
一言で言うと
bias が高い = モデルが単純すぎる
bias が高いモデルは、データ全体の傾向を大雑把にしか見られません。
そのため、訓練データにもテストデータにも精度が出にくくなり、
underfitting につながりやすくなります。
📌 Bias のイメージ
例えば、本当は曲線的な関係があるデータに対して、
直線だけで無理やり表現しようとする場合を考えます。
この場合、モデルは単純すぎるため、
どのデータにも少しずつズレた予測をしてしまいます。
つまり、
bias が高い
↓
規則を十分に学べない
↓
underfitting になりやすい
という流れです。
🌊 Variance(分散)とは?
Variance とは、モデルがデータの変化にどれくらい敏感に反応するかを表す考え方です。
ざっくり言うと、
モデルが訓練データに合わせすぎて、不安定になっている状態 に関係します。
一言で言うと
variance が高い = データの変化に敏感すぎる
variance が高いモデルは、訓練データの細かい違いやノイズにも強く反応します。
その結果、訓練データには非常によく合う一方で、
新しいデータでは精度が落ちやすくなります。
📌 Variance のイメージ
例えば、訓練データの点をすべて通るような複雑な曲線を作った場合を考えます。
一見すると、訓練データには完璧に合っているように見えます。
しかし、新しいデータが少し変わるだけで予測が大きくズレる可能性があります。
つまり、
variance が高い
↓
訓練データに敏感すぎる
↓
overfitting になりやすい
という流れです。
🧭 Bias と Variance の関係
Bias と Variance は、overfitting / underfitting とセットで覚えると理解しやすいです。
| 状態 | Bias | Variance | 起きやすい問題 |
|---|---|---|---|
| モデルが単純すぎる | 高い | 低い | underfitting |
| モデルが複雑すぎる | 低い | 高い | overfitting |
| ちょうどよいモデル | 適度 | 適度 | 汎化しやすい |
覚え方は以下です。
Bias が高い = 学べていない = underfitting
Variance が高い = 学びすぎ = overfitting
☁️ AWS 試験での見られ方
AWS の AI / ML 系試験では、overfitting や underfitting について、
単純な用語説明だけではなく、状況判断 として問われることがあります。
例えば、以下のようなケースです。
ケース 1:訓練精度は高いが、テスト精度が低い
Training accuracy: 98%
Test accuracy: 65%
この場合は、訓練データに合わせすぎているため、overfitting が疑われます。
対策としては、
- データを増やす
- 正則化する
- モデルを簡単にする
- 不要な特徴量を減らす
などが考えられます。
ケース 2:訓練精度もテスト精度も低い
Training accuracy: 60%
Test accuracy: 58%
この場合は、そもそもモデルが十分に学習できていないため、underfitting が疑われます。
対策としては、
- モデルを複雑にする
- 特徴量を追加する
- 学習時間を増やす
- 別のアルゴリズムを検討する
などが考えられます。
👨💻 実務目線で見ると
実務では、モデルの精度が悪いときに、
「もっと強いモデルを使えばよい」と考えがちです。
しかし、実際にはまず以下を確認する必要があります。
- 訓練データでは高精度なのか
- テストデータでも高精度なのか
- データ量は十分か
- 特徴量は適切か
- モデルが複雑すぎないか
- 逆に単純すぎないか
特に、訓練データの精度だけを見て判断すると危険です。
本番環境では、モデルは常に未知のデータに対して予測します。
そのため、実務では 訓練データの精度より、未知データへの汎化性能 が重要になります。
🧠 ここは特に覚えたいポイント
覚え方 1
overfitting = 覚えすぎ
underfitting = 学ばなすぎ
覚え方 2
overfitting:
訓練データの精度は高い
テストデータの精度は低い
覚え方 3
underfitting:
訓練データの精度も低い
テストデータの精度も低い
覚え方 4
Bias 高い → モデルが単純すぎる → underfitting
Variance 高い → モデルが敏感すぎる → overfitting
✅ まとめ
今回は、機械学習で非常に重要な
- overfitting
- underfitting
- bias
- variance
について整理しました。
重要なのは、以下のポイントです。
- overfitting は、訓練データを覚えすぎて新しいデータに弱い状態
- underfitting は、データの規則を十分に学べていない状態
- bias が高いと、モデルが単純すぎて underfitting になりやすい
- variance が高いと、モデルが敏感すぎて overfitting になりやすい
- モデル評価では、訓練データだけでなくテストデータの性能を見ることが重要
機械学習では、単に精度を上げるだけでなく、
新しいデータに対して安定して予測できるモデルを作ること が大切です。
📌 次回予告
次回は、モデルを正しく評価するために必要な
- train / validation / test
- cross validation
- K-Fold Cross Validation
について整理します。
特に、訓練データ・検証データ・テストデータを分ける理由は、
overfitting を見つけるうえでも非常に重要です。