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
___(___, ___)