首先,我要说,我读过许多关于交叉验证的文章,而且似乎有很多混淆之处。我对此的理解很简单:
我试图在R中使用rpart并利用caret包构建一个决策树。下面是我正在使用的代码。
# load libraries
library(caret)
library(rpart)
# define training control
train_control<- trainControl(method="cv", number=10)
# train the model
model<- train(resp~., data=mydat, trControl=train_control, method="rpart")
# make predictions
predictions<- predict(model,mydat)
# append predictions
mydat<- cbind(mydat,predictions)
# summarize results
confusionMatrix<- confusionMatrix(mydat$predictions,mydat$resp)我有一个问题,关于插入式列车的申请。我读过插入符号包简介列车区段,其中规定在重采样过程中,确定了“最优参数集”。
在我的例子中,我是否正确地编码了它?我需要在我的代码中定义rpart参数还是我的代码足够了?
发布于 2015-11-02 09:16:26
当您执行k折叠交叉验证时,您已经对每个样本进行了预测,仅超过10个不同的模型(假定k= 10)。没有必要对完整的数据进行预测,因为您已经从k个不同的模型中得到了它们的预测。
你能做的是:
train_control<- trainControl(method="cv", number=10, savePredictions = TRUE)然后
model<- train(resp~., data=mydat, trControl=train_control, method="rpart")如果您想以一种很好的格式查看观察到的和预测,只需键入:
model$pred同样,对于问题的第二部分,插入符号应该处理所有参数内容。如果你想要的话,你可以手动调优参数。
发布于 2016-12-01 14:31:29
这里需要注意的一件重要的事情是不要混淆模型选择和模型误差估计。
您可以使用交叉验证来估计模型的超参数(例如正则化参数)。
这通常是通过10倍的交叉验证来完成的,因为这是比较好的偏差-方差权衡的选择(2倍可能导致高偏差的模型,而忽略一次cv会导致高方差/过度拟合的模型)。
在此之后,如果您没有独立的测试集,您可以使用交叉验证来估计某个性能度量的经验分布:一旦您找到了最佳的超参数,就可以使用它们来估计de cv误差。
注意,在这一步中,超参数是固定的,但由于交叉验证模型的不同,模型参数可能是不同的。
发布于 2016-06-30 23:29:07
在简短的导言文件插入包的第一页中,提到了在参数之间选择最优模型。作为一个起点,必须理解交叉验证是一个选择最佳建模方法的过程,而不是模型本身的CV -最终型号选择。Caret使用tuneGrid提供网格搜索选项,您可以在其中提供要测试的参数值列表。最后的模型在进行训练后将具有最优的参数。
https://stackoverflow.com/questions/33470373
复制相似问题