MACHINE LEARNING / LESSON 04

予測と答え合わせ

過去のデータで学び、まだ見ていないデータで確かめよう。

図から学ぶ
予測と答え合わせを表すキャラクターと学習内容のイラスト
TODAY'S GOAL

この回でつかむこと

学習用とテスト用を時間順に分ける理由を言える。

ことばの窓
01 / SEE THE IDEA

予測と答え合わせって何だろう?

回帰は連続した数を予測する方法です。学習用で規則を探し、テスト用で初めて見る値に通用するか確かめます。未来の情報が混ざると評価が甘くなります。

あおい

昨日までの気温を覚えたら、明日もぴたりと当たる?

AI先生

いい問いだね。過去の一部だけで学び、それより後の日付の気温を予測して答え合わせするんだよ。

はる

時系列なら、未来の値が学習側へ混ざらないようにします。

未来を残して答え合わせ。1〜8日目だけで学習。9〜12日目を残す。未来を先に見せない。
図4 未来を残して答え合わせ。1〜8日目だけで学習。9〜12日目を残す。未来を先に見せない。

AI先生 未来の答えを先に見せないのが、公平な答え合わせなんだよ。

図を読むと

時間のあるデータでは、後ろの日付をテスト用に残す。 回帰は連続した数を予測する方法です。学習用で規則を探し、テスト用で初めて見る値に通用するか確かめます。未来の情報が混ざると評価が甘くなります。

小さなコードで確かめるまず結果を予想しよう
import numpy as np
from sklearn.linear_model import LinearRegression
day = np.arange(1,13).reshape(-1,1)
temp = np.array([17,18,18,20,21,21,23,24,24,26,27,28])
model = LinearRegression().fit(day[:8], temp[:8])
print(np.round(model.predict(day[8:]),1))
実行結果9〜12日目の予測値4個

なぜそうなる? fitに渡したのは最初の8日分だけです。後半は学習に使っていません。

02 / GO ONE STEP FURTHER

予測のずれを見る

予測値と実際の値の差を見れば、モデルの得意・不得意が分かります。

pred = model.predict(day[8:])
print(round(np.abs(pred-temp[8:]).mean(),2))
実行結果平均絶対誤差

ここに注目 差の絶対値を平均すると、ずれの大きさを同じ単位で読めます。未来の保証ではありません。

03 / YOUR TURN

予想して、理由を話そう

答えを選んで、説明を確かめよう。外れても発見が一つ増えるよ。

翌日の気温を予測するとき、テスト用は?

答えを選ぶと理由が表示されます。

04 / TRY ON COLAB

Colabで試してみよう

コードの実行はColaboratoryの実行環境で行います。まずノートブックを保存し、Colabで「ファイル → ノートブックをアップロード」から開いてください。上から順に実行し、最後に値を変えてみましょう。

保存ボタンを押しても画面は切り替わりません。通常はブラウザの「ダウンロード」フォルダに .ipynb が保存されます。見つからない場合はダウンロード履歴を確認してください。Colabの実習は小さな例から始められます。

COFFEE BREAK

身近な技術とつなげてみよう

AI先生

AI先生:天気予報も『当たった日』だけを見せると強そうに見えるね。外れた日も含めて評価しよう。

KEY TERMS

この回の重要な用語

本文で出会った言葉を、ここで意味と一緒に振り返ろう。上の「ことばの窓」からも説明を開けるよ。

回帰
気温や価格のような連続した数値を予測する課題です。
学習用データ
モデルが規則を探すために使うデータです。
テスト用データ
学習に使わず、できあがったモデルを確かめるデータです。