始める無料で始める

n-fold 交差検証でモデリング手順を評価する

この演習では、前の演習で作成した 3 分割の交差検証プラン splitPlan を使って、mpg$hwy から mpg$cty を予測するモデルで予測を行います。

dframe が学習データの場合、フレームに交差検証による予測列を追加する一例は次のとおりです。

# 適切な長さの列を初期化
dframe$pred.cv <- 0 

# k は分割数
# splitPlan は交差検証プラン

for(i in 1:k) {
  # i 番目の分割を取得
  split <- splitPlan[[i]]

  # この分割の学習データでモデルを作成
  # (この場合は lm)
  model <- lm(fmla, data = dframe[split$train,])

  # この分割の適用データで予測を実行
  dframe$pred.cv[split$app] <- predict(model, newdata = dframe[split$app,])
}

交差検証は、全データで構築したモデルが新しいデータでどれくらい良く機能するかを予測します。 テスト/学習データ分割と同様に、良いモデリング手順では、交差検証での性能と 学習時の性能は近い値になるはずです。

データフレーム mpg、交差検証プラン splitPlan、および rmse() 関数はあらかじめ読み込まれています。

この演習はコースの一部です

R による Supervised Learning:回帰

コースを見る

演習の手順

  • splitPlan の 3 分割交差検証プランを実行し、予測結果を mpg$pred.cv 列に入れます。
    • lm() と数式 cty ~ hwy を使います。
  • すべての mpg データで線形回帰モデル(数式 cty ~ hwy)を作成し、予測を mpg$pred に代入します。
  • rmse() を使って、フルモデルの予測(mpg$pred)の二乗平均平方根誤差を求めます。rmse() は予測値と実際の目的変数の 2 つの引数を取ることを思い出してください。
  • 交差検証による予測の二乗平均平方根誤差も求めましょう。2 つの値はおおよそ同じになっていますか?

実践的なインタラクティブ演習

このサンプルコードを完成させて、この演習に挑戦してみましょう。

# mpg is available
summary(mpg)

# splitPlan is available
str(splitPlan)

# Run the 3-fold cross validation plan from splitPlan
k <- ___ # Number of folds
mpg$pred.cv <- 0 
for(i in ___) {
  split <- ___
  model <- lm(___, data = ___)
  mpg$pred.cv[___] <- predict(___, newdata = ___)
}

# Predict from a full model
mpg$pred <- ___(___(cty ~ hwy, data = mpg))

# Get the rmse of the full model's predictions
___(___, ___)

# Get the rmse of the cross-validation predictions
___(___, ___)
コードを編集して実行