在R中使用Caret包获得训练错误

时间:2014-10-11 21:28:47

标签: r algorithm machine-learning analytics r-caret

我正在使用插入包> 来训练 K-Nearest Neigbors 算法。为此,我正在运行此代码:

Control <- trainControl(method="cv", summaryFunction=twoClassSummary, classProb=T)

tGrid=data.frame(k=1:100)

trainingInfo <- train(Formula, data=trainData, method = "knn",tuneGrid=tGrid,
                              trControl=Control, metric =  "ROC")

如您所见,我有兴趣获取ROC的AUC参数。此代码运行良好,但返回测试错误(该算法用于调整模型的k参数)作为CrossValidation折叠的错误的平均值。我感兴趣的是,除了测试错误之外,返回训练错误(使用训练数据获得的错误的每个折叠的平均值)。我该怎么做?

谢谢

1 个答案:

答案 0 :(得分:0)

你问的是多层次的坏主意。您将严重高估ROC曲线下的面积。考虑1-NN模型:每次都会有完美的预测。

为此,您需要再次运行train并修改indexindexOut个对象:

library(caret)

set.seed(1)
dat <- twoClassSim(200)

set.seed(2)
folds <- createFolds(dat$Class, returnTrain = TRUE)

Control <- trainControl(method="cv", 
                        summaryFunction=twoClassSummary, 
                        classProb=T,
                        index = folds,
                        indexOut = folds)

tGrid=data.frame(k=1:100)

set.seed(3)
a_bad_idea <- train(Class ~ ., data=dat, 
                    method = "knn",
                    tuneGrid=tGrid,
                    trControl=Control, metric =  "ROC")

最高