モデルの適切なトレーニング

R による Supervised Learning:回帰

Nina Zumel and John Mount

Win-Vector, LLC

モデルは訓練データよりも将来のデータで性能が大きく低下することがあります。

  • 訓練 $R^2$: 0.9;テスト $R^2$: 0.15 -- 過学習
R による Supervised Learning:回帰

テスト/訓練の分割

データが十分にある場合に推奨される方法

R による Supervised Learning:回帰

例:女性失業率のモデリング

  • 66行で訓練、30行でテスト
R による Supervised Learning:回帰

モデル性能:訓練 vs. テスト

  • 訓練:RMSE 0.71、$R^2$ 0.8
  • テスト:RMSE 0.93、$R^2$ 0.75
R による Supervised Learning:回帰

交差検証

テストセットを分割できるほどデータが多くない場合に適した方法

R による Supervised Learning:回帰

交差検証

R による Supervised Learning:回帰

交差検証

R による Supervised Learning:回帰

交差検証

R による Supervised Learning:回帰

交差検証プランの作成

library(vtreat)
splitPlan <- kWayCrossValidation(nRows, nSplits, NULL, NULL)
  • nRows: 訓練データの行数
  • nSplits: 交差検証の分割数(フォールド数)
    • 例:3分割交差検証の場合 nfolds = 3
  • 残り2引数はここでは不要
R による Supervised Learning:回帰

交差検証プランの作成

library(vtreat)
splitPlan <- kWayCrossValidation(10, 3, NULL, NULL)

第1フォールド(AとBで訓練、Cでテスト)

splitPlan[[1]]
$train
1  2  4  5  7  9 10
$app
3 6 8

AとBで訓練し、Cでテスト(以降も同様)

split <- splitPlan[[1]]
model <- lm(fmla, data = df[split$train,])
df$pred.cv[split$app] <- predict(model, newdata = df[split$app,])
R による Supervised Learning:回帰

最終モデル

R による Supervised Learning:回帰

例:失業率モデル

評価指標 RMSE $R^2$
訓練 0.7082675 0.8029275
テスト 0.9349416 0.7451896
交差検証 0.8175714 0.7635331
R による Supervised Learning:回帰

練習しましょう!

R による Supervised Learning:回帰

Preparing Video For Download...