はじめに
この実験では、scikit-learn の cross_val_predict と PredictionErrorDisplay 関数を使って、交差検証を使ってモデルの予測とエラーを可視化する方法を学びます。糖尿病データセットを読み込み、線形回帰モデルのインスタンスを作成し、交差検証を使って予測の配列を取得します。その後、PredictionErrorDisplay を使って、実際の値と予測値、および残差と予測値をプロットします。
VM のヒント
VM の起動が完了したら、左上隅をクリックして ノートブック タブに切り替え、Jupyter Notebook を使って練習します。
時々、Jupyter Notebook が読み込み終了するまで数秒待つ必要があります。Jupyter Notebook の制限により、操作の検証を自動化することはできません。
学習中に問題がある場合は、Labby にお問い合わせください。セッション後にフィードバックを提供してください。すぐに問題を解決いたします。
データの読み込みと準備
まず、糖尿病データセットを読み込み、モデリングのために準備します。scikit-learn の load_diabetes 関数を使って、データセットを 2 つの配列 X と y に読み込みます。
from sklearn.datasets import load_diabetes
X, y = load_diabetes(return_X_y=True)
線形回帰モデルの作成
次に、scikit-learn の LinearRegression クラスを使って線形回帰モデルのインスタンスを作成します。
from sklearn.linear_model import LinearRegression
lr = LinearRegression()
交差検証による予測の生成
scikit-learn の cross_val_predict 関数を使って、交差検証による予測を生成します。
from sklearn.model_selection import cross_val_predict
y_pred = cross_val_predict(lr, X, y, cv=10)
予測エラーの可視化
scikit-learn の PredictionErrorDisplay を使って、予測エラーを可視化します。実際の値と予測値、および残差と予測値をプロットします。
import matplotlib.pyplot as plt
from sklearn.metrics import PredictionErrorDisplay
fig, axs = plt.subplots(ncols=2, figsize=(8, 4))
PredictionErrorDisplay.from_predictions(
y,
y_pred=y_pred,
kind="actual_vs_predicted",
subsample=100,
ax=axs[0],
random_state=0,
)
axs[0].set_title("Actual vs. Predicted values")
PredictionErrorDisplay.from_predictions(
y,
y_pred=y_pred,
kind="residual_vs_predicted",
subsample=100,
ax=axs[1],
random_state=0,
)
axs[1].set_title("Residuals vs. Predicted Values")
fig.suptitle("Plotting cross-validated predictions")
plt.tight_layout()
plt.show()
結果の解釈
可視化結果から、実際の値と予測値のプロットは、ある程度のばらつきを伴いながら比較的線形的な関係を示していることがわかります。残差と予測値のプロットは、明確な傾向がなく比較的ランダムなパターンを示しており、線形回帰モデルがデータに適合している可能性があることを示唆しています。ただし、cross_val_predict は可視化目的だけに使用したことに留意する必要があります。cross_val_predict が返す連結された予測値から単一の性能指標を計算することでモデル性能を定量的に評価することは問題があります。なぜなら、異なる交差検証フォールドはサイズと分布が異なるからです。代わりに、cross_val_score または cross_validate を使用してフォールドごとの性能指標を計算することが推奨されます。
まとめ
この実験では、scikit-learn の cross_val_predict と PredictionErrorDisplay 関数を使って、交差検証を使ってモデルの予測とエラーを可視化する方法を学びました。糖尿病データセットを読み込み、線形回帰モデルのインスタンスを作成し、交差検証を使って予測値の配列を取得しました。その後、PredictionErrorDisplay を使って、実際の値と予測値、および残差と予測値をプロットしました。最後に、結果を解釈し、モデル評価におけるフォールドごとの性能指標の使用の重要性について議論しました。