はじめに
機械学習において、各推定器には利点と欠点があります。推定器の汎化誤差は、バイアス、分散、ノイズに分解できます。推定器のバイアスは、異なる学習セットに対する平均誤差であり、分散は学習セットの変化に対する感度を示します。ノイズはデータの特性です。
この実験では、機械学習モデルの性能を評価するために検証曲線をどのように使用するかを探ります。検証曲線を使うことで、単一のハイパーパラメータが学習スコアと検証スコアに与える影響をプロットでき、異なるハイパーパラメータ値に対してモデルが過学習しているか、未学習であるかを判断する手助けになります。
VM のヒント
VM の起動が完了したら、左上隅をクリックしてノートブックタブに切り替え、Jupyter Notebook を使って練習しましょう。
時々、Jupyter Notebook が読み込み終わるまで数秒待つ必要があります。Jupyter Notebook の制限により、操作の検証は自動化できません。
学習中に問題に遭遇した場合は、Labby にお問い合わせください。セッション終了後にフィードバックを提供してください。すぐに問題を解決いたします。
必要なライブラリをインポートしてデータを読み込む
必要なライブラリをインポートしてデータセットを読み込みましょう。この例では、Iris データセットを使用します。
import numpy as np
from sklearn.model_selection import validation_curve
from sklearn.datasets import load_iris
from sklearn.linear_model import Ridge
np.random.seed(0)
X, y = load_iris(return_X_y=True)
データをシャッフルする
分析におけるランダム性を保証するため、データセット内のサンプルの順序をシャッフルしましょう。
indices = np.arange(y.shape[0])
np.random.shuffle(indices)
X, y = X[indices], y[indices]
検証曲線を描画する
次に、validation_curve関数を使って検証曲線を描画しましょう。Ridge推定器を使用し、alphaハイパーパラメータを値の範囲で変化させます。
param_range = np.logspace(-7, 3, 3)
train_scores, valid_scores = validation_curve(
Ridge(), X, y, param_name="alpha", param_range=param_range, cv=5)
まとめ
この実験では、検証曲線の概念と、機械学習モデルを評価するためにどのように使用できるかを探りました。異なるハイパーパラメータ値に対する学習スコアと検証スコアをプロットすることで、モデルが過学習しているか、未学習であるかを判断できます。この情報は、モデルに最適なハイパーパラメータを選択し、その性能を向上させるのに役立ちます。