gpt4 book ai didi

R glm - 如何进行多重交叉验证

转载 作者:行者123 更新时间:2023-12-02 06:59:32 25 4
gpt4 key购买 nike

我有随机分成两部分的训练数据:

  • 70% -> train_train
  • 30% -> train_cv(用于交叉验证)

我使用 train_train 拟合 glm (glmnet) 模型,然后使用 train_cv 进行交叉验证。

我的问题是 train_train 和 train_cv 的不同随机拆分会返回不同的交叉验证结果(使用曲线下面积“AUC”进行评估):

AUC = 0.6381583 the 1st time

AUC = 0.6164524 the 2nd time

有没有办法在不复制代码的情况下运行多个交叉验证?

最佳答案

这里有一些令人困惑的事情。我认为您所描述的更多的是标准的训练/测试拆分,交叉验证这个词通常以不同的方式使用。所以你已经保留了 30% 的数据进行测试,这很好,你可以用它来找出你的训练集对 AUC 的估计有多乐观。但当然,估计取决于你如何进行训练/测试拆分,最好知道这个测试性能有多大变化。您可以使用多次交叉验证来实现这一点。

交叉验证稍微来自于仅使用一个保持集 - 例如,五折交叉验证涉及以下步骤:

  1. 将整个数据集随机分成大小相等的五个部分。
  2. 对于 i = 1 到 5,在除第 i 部分之外的所有数据上拟合模型。
  3. 评估超出拟合部分的 AUC。
  4. 平均五个 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")

将使用 AUC 作为性能指标对模型 m 执行 5 倍交叉验证。 cvFit 也接受参数 K(交叉验证折叠次数)和 R(使用不同随机分割执行交叉验证的次数)。

http://en.wikipedia.org/wiki/Cross-validation_(statistics)来自有关交叉验证的更多信息。

关于R glm - 如何进行多重交叉验证,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23657712/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com