クリーム色の背景、色付き表示、高コントラスト、大きな文字のほうが読みやすいですか?配色と文字を選ぶと、すべてのページに一度で反映されます。

無料レッスン

例を丸暗記したモデルを見分ける

このレッスンのあとで: 例を丸暗記したモデルを、成績の表から見分けられる。

40分のレッスンコマンドなし

過去の売上は全部当たるのに

名古屋のスーパーで、牛乳の販売数を予測するモデルを作りました。

過去1年分のどの日を聞いても、ぴったりの本数を答えます。ところが、来週の予測はまるで当たりません。

このモデルは、パターンを学んだのではなく、答えを覚えていただけでした。このレッスンでは、そうしたモデルの見分け方を学びます。

このレッスンのゴール

メモ

例を丸暗記したモデルを、成績の表から見分けられる。

キーワード

ことばいみ
過学習モデルが例を丸暗記し、新しいデータに弱くなることです。
汎化見ていないデータにも、うまく答えられることです。
訓練の成績学習に使った例で測った成績です。
テストの成績学習に使っていない例で測った成績です。
検証データ学習の途中で、成績を見るために取っておく例です。

学生が入力するセルは、このプレビューでは空白です。

訓練とテストの差が、合図になる

過学習を見つけるには、二つの成績を並べます。

訓練の成績がとても高く、テストの成績がずっと低い。この差が大きいのが、過学習の合図です。

二つの成績が近ければ、見ていないデータにも答えられています。これを汎化と呼び、モデルに一番求められる力です。

三つのモデルを比べる

モデル訓練の成績テストの成績差判断
A70%68%2単純すぎて、まだ学びが足りない
B99%62%37過学習
C85%83%2よく汎化している

学生が入力するセルは、このプレビューでは空白です。

覚えすぎると、新しい日に答えられない

過去の売上には、偶然の出来事も混ざっています。近くで祭りがあった日や、冷蔵ケースが故障した日です。

例が少ないのにモデルが細かすぎると、その偶然まで覚えてしまいます。これが過学習です。

下のコードは、極端な例です。見た例とまったく同じ入力にしか、答えられません。

やってみよう: 丸暗記するモデル

コード: python
# 丸暗記するモデルです。見た例と、まったく同じ入力にしか答えられません。
memory = {"月曜・20度": 50, "火曜・22度": 48, "水曜・21度": 52}

question = "月曜・20度"

if question in memory:
    print("予測:", memory[question], "本")
else:
    print("見たことがない入力なので、答えられません。")

# 平均で答えるモデルなら、新しい入力にも答えが出せます。
total = 50 + 48 + 52
print("平均で答えるモデルの予測:", total / 3, "本")

# question を "月曜・21度" に変えて、もう一度実行しましょう。

よくある誤解

注意

訓練の成績が100%に近いほど、良いモデルだと考える人がいます。実際には、テストの成績と比べるまで、良いかどうかは分かりません。訓練の成績だけが高いときは、まず過学習を疑いましょう。

過学習は、こうして防ぐ

過学習を防ぐ方法は、主に三つあります。

一つ目は、例を増やすことです。例が多ければ、偶然の出来事は目立たなくなります。

二つ目は、モデルを単純にすることです。

三つ目は、検証データで途中の成績を見て、悪くなり始めたら学習を止めることです。テストデータは、最後まで使わずに取っておきます。

授業で使いますか?このモジュールを学生に割り当てると、教員用ガイド、自動採点つきの課題、学生ごとのラボを使えます。