tuc*_*son 2 r cross-validation
我有训练数据,我随机分成两部分:
我使用train_train拟合glm(glmnet)模型,然后使用train_cv进行交叉验证.
我的问题是train_train和train_cv的不同随机分割返回不同的交叉验证结果(使用曲线下面积,"AUC"评估):
AUC = 0.6381583第一次
AUC = 0.6164524第二次
有没有办法运行多个交叉验证,而不重复代码?
这里有一些令人困惑的事情.我认为你所描述的更多是标准的训练/测试分裂,交叉验证这个词的使用方式通常不同.所以你已经拿出30%的数据用于测试,这很好,你可以用它来了解你的列车对AUC的估计是多么乐观.但是当然估计取决于你如何进行训练/测试分裂,并且知道这个测试性能变化多少会很好.您可以使用多次交叉验证来实现此目的.
交叉验证仅仅是使用保留集 - 例如,五次交叉验证涉及以下步骤:
该过程可以重复多次以估计样本外估计的均值和方差.
R包cvTools允许您这样做.例如
library(ROCR)
library(cvTools)
calc_AUC <- function(pred, act) {
u<-prediction(pred, act)
return(performance(u, "auc")@y.values[[1]])
}
cvFit(m, data = train, y = train$response,
cost = calc_AUC, predictArgs = "response")
Run Code Online (Sandbox Code Playgroud)
将使用AUC作为性能指标,执行模型m的5倍交叉验证.cvFit还需要参数K(交叉验证折叠的R数量)和(使用不同随机分割执行交叉验证的次数).
有关交叉验证的更多信息,请参阅http://en.wikipedia.org/wiki/Cross-validation_(statistics).
| 归档时间: |
|
| 查看次数: |
1377 次 |
| 最近记录: |