私のアプリケーションに学習曲線を描きたい。Rで学習曲線をプロットする方法は?
以下にサンプルカーブイメージを示します。曲線学習
次分散、
- X軸とのプロットである:サンプル数(トレーニングセットのサイズ)。
- Y軸:エラー(RSS/J(シータ)/費用関数)
それは私たちのモデルは高いバイアスまたは高分散の問題を持っているかどうかを観察するのに役立ちます。
このプロットを取得するのに役立つRのパッケージはありますか?
私のアプリケーションに学習曲線を描きたい。Rで学習曲線をプロットする方法は?
以下にサンプルカーブイメージを示します。曲線学習
次分散、
それは私たちのモデルは高いバイアスまたは高分散の問題を持っているかどうかを観察するのに役立ちます。
このプロットを取得するのに役立つRのパッケージはありますか?
このようなプロットは、優れたCaretパッケージを使用して作成できます。 Customizing the tuning processのセクションはとても役に立ちます。
また、R-Bloggersのよく書かれたブログ記事をJoseph Rickertがチェックアウトすることができます。彼らは"Why Big Data? Learning Curves"と"Learning from Learning Curves"というタイトルです。
UPDATE
私はちょうどこの質問Plot learning curves with caret package and R上のポストをしました。私の答えはあなたにとってもっと役に立つと思います。利便性のために、私はRで学習曲線をプロットする上で同じ答えを再現しました。しかし、普及したcaret
パッケージを使用してモデルをトレーニングし、トレーニングとテストセットのRMSEエラーを取得しました。
# set seed for reproducibility
set.seed(7)
# randomize mtcars
mtcars <- mtcars[sample(nrow(mtcars)),]
# split iris data into training and test sets
mtcarsIndex <- createDataPartition(mtcars$mpg, p = .625, list = F)
mtcarsTrain <- mtcars[mtcarsIndex,]
mtcarsTest <- mtcars[-mtcarsIndex,]
# create empty data frame
learnCurve <- data.frame(m = integer(21),
trainRMSE = integer(21),
cvRMSE = integer(21))
# test data response feature
testY <- mtcarsTest$mpg
# Run algorithms using 10-fold cross validation with 3 repeats
trainControl <- trainControl(method="repeatedcv", number=10, repeats=3)
metric <- "RMSE"
# loop over training examples
for (i in 3:21) {
learnCurve$m[i] <- i
# train learning algorithm with size i
fit.lm <- train(mpg~., data=mtcarsTrain[1:i,], method="lm", metric=metric,
preProc=c("center", "scale"), trControl=trainControl)
learnCurve$trainRMSE[i] <- fit.lm$results$RMSE
# use trained parameters to predict on test data
prediction <- predict(fit.lm, newdata = mtcarsTest[,-1])
rmse <- postResample(prediction, testY)
learnCurve$cvRMSE[i] <- rmse[1]
}
pdf("LinearRegressionLearningCurve.pdf", width = 7, height = 7, pointsize=12)
# plot learning curves of training set size vs. error measure
# for training set and test set
plot(log(learnCurve$trainRMSE),type = "o",col = "red", xlab = "Training set size",
ylab = "Error (RMSE)", main = "Linear Model Learning Curve")
lines(log(learnCurve$cvRMSE), type = "o", col = "blue")
legend('topright', c("Train error", "Test error"), lty = c(1,1), lwd = c(2.5, 2.5),
col = c("red", "blue"))
dev.off()
出力プロット
は以下の通りです:
こんにちは、親切upvotingとどのような方法で有用であった答えを選ぶために緑色の矢印をクリックして感謝の意を示してください。ありがとう。 –