
5.3
ハイパーパラメータとモデルの検証
371
plt.plot(degree, np.median(train_score, 1), color='blue', label='training score')
plt.plot(degree, np.median(val_score, 1), color='red', label='validation score')
plt.legend(loc='best')
plt.ylim(0, 1)
plt.xlabel('degree')
plt.ylabel('score');
これは、期待される質的な振る舞いを正確に示しています。訓練スコアは、検証スコアよりも常
に高くなります。モデルの複雑さが増すに従い訓練スコアは単調増加します。一方検証スコアは、
モデルが過剰適合となり値が下がり始める前に、最大になります。
次数
訓練スコア
検証スコア
図5-28 図5-27 のデータに対する検証曲線(図 5-26も参照)
検証曲線から、バイアスとバリアンス間の最適なトレードオフが
3
次多項式であることが読み取
れます。次のように、元のデータに対する適合を表示しましょう(図 5-29)。
In[14]: plt.scatter(X.ravel(), y)
lim = plt.axis()
y_test = PolynomialRegression(3).fit(X, y).predict(X_test)
plt.plot(X_test.ravel(), y_test); ...