【注意】
本記事はわかりやすさ重視なので、正確性に欠く部分がありますことご了承ください。
バイアス?バリアンスとは?
めちゃくちゃ嚙み砕くと・・・
バイアス
そもそもの考え方がずれてる
バリアンス
細かいことに振り回されすぎてブレブレ
例:カレー作り🍛
バイアスが高い人(AIさん)
AIさんは、こう思っている、、、
カレーには絶対に塩を大さじ5杯いれたら旨い😋
でも、
何人前を作るかで、しょっぱくなったり、味気なくなるはずです・・・
これは、考え方そのものが間違っています。
つまり、
思い込みが強する
→ バイアスが高い
です。
バリアンスが高い人(AIさん)
AIさんは、味見にふるまわされる人だとします。
1回味見して、
ちょっと味が薄い気がする!塩追加!
もう1回味見して、
今度は辛さが足りない!唐辛子追加!
さらに味見して、
なんか甘味が足りない!ハチミツ追加!
結果、毎回同じ味のカレーを作ることができません。
これは、
その場その場の細かい情報に反応しすぎ
→バリアンスが高い
です。
機械学習におきかえると・・・
機械学習モデルは、データを見て予測します。
たとえば、
勉強時間からテストの点数を予測する
とします。
バイアスが高いモデル
バイアスが高いモデルは単純思考です。
たとえば、こんなモデル。
勉強時間に関係なく、全員50点と予測する。
0時間の人も50点。
10時間勉強した人も50点。
そんなことはありません。
つまり、
モデルが単純すぎて、データの傾向がつかめていない。
これが、バイアスが高い状態です。
バイアスが高すぎて、モデルの傾向をつかめていない状態を
"アンダーフィッティング" といいます。
バリアンスが高いモデル
バリアンスが高いモデルは、逆にデータを細かく覚えすぎます。
たとえば、過去のデータにこういう人がいたとします。
| 勉強時間 | 点数 |
|---|---|
| 1時間 | 30点 |
| 2時間 | 55点 |
| 3時間 | 40点 |
| 4時間 | 80点 |
普通に考えたら、
勉強時間が増えれば、だいたい点数はあがりそう
ですよね?
でも、バリアンスが高いモデルはこう覚えます。
3時間勉強した人は40点!
だから、50点以上とるなら2時間勉強するのがいい!
みたいな、たまたま悪かったデータまで真面目に覚えます。
これは、
データを覚えすぎて、新しいデータに弱い
状態です。
バリアンスが高すぎて、未知のデータに正しく対応できないことを、
**"オーバーフィッティング"**といいます。
ざっくりまとめ
- 高バイアス
頭が固い
「どうせ全部こうでしょ」と決めつける
- 高バリアンス
気にしすぎ
「このデータではこうだった!」に振り回される
なので、
機械学習の結果の理想形は、 低バイアス×低バリアンス です。
表にまとめたら、こんな感じです。
| パターン | 状態 | 読み取れること | 代表的な現象 |
|---|---|---|---|
| 高バイアス × 高バリアンス | 最悪 | 考え方もズレていて、しかもブレる | 学習もテストも悪い |
| 高バイアス × 低バリアンス | 単純すぎる | 安定はしているが、そもそも間違っている | アンダーフィッティング |
| 低バイアス × 高バリアンス | 覚えすぎ | 学習データには合うが、新しいデータに弱い | オーバーフィッティング |
| 低バイアス × 低バリアンス | 理想 | 傾向をつかめていて、ブレも少ない | 汎化性能が高い |