10-fold クロスバリデーション
動画で見たとおり、モデルの妥当性検証では、単一のランダムな学習/テスト分割よりも、複数の体系的なテストセットを使うほうがよい方法です。幸い、caret パッケージを使うと非常に簡単に実行できます。
model <- train(y ~ ., my_data)
caret は多くの種類のクロスバリデーションをサポートしており、どの種類のクロスバリデーションを使うかと分割数は、trainControl() 関数で指定し、train() の trControl 引数に渡します。
model <- train(
y ~ .,
my_data,
method = "lm",
trControl = trainControl(
method = "cv",
number = 10,
verboseIter = TRUE
)
)
重要な点として、学習に用いるモデルの手法はメインの train() 関数に、クロスバリデーションの手法は trainControl() 関数に渡すことに注意してください。
この演習はコースの一部です
Rで学ぶ caret を使った Machine Learning
演習の手順
diamondsデータセットの他のすべての変数を説明変数として、priceを目的変数とする線形回帰を当てはめてください。train()関数を使い、10-fold クロスバリデーションを用います。(処理を速くするために元のdiamondsのサブセットを使用していますが、オブジェクト名はdiamondsのままです。)- モデルをコンソールに出力し、結果を確認してください。
実践的なインタラクティブ演習
このサンプルコードを完成させて、この演習に挑戦してみましょう。
# Fit lm model using 10-fold CV: model
model <- train(
___,
___,
method = "lm",
trControl = trainControl(
method = "cv",
number = ___,
verboseIter = TRUE
)
)
# Print model to console