caret包是一个出色的R 库,用于构建多个机器学习模型,并具有多个用于模型构建和评估的功能。对于参数调整和模型训练,caret 包提供了“repeatedcv”作为方法之一。
作为一种好的做法,可以使用嵌套的 K 折交叉验证来执行参数调整,其工作原理如下:
- 将训练集划分为“K”个子集
- 在每次迭代中,取“K-1”个子集进行模型训练,并保留 1 个子集(保留集)用于模型测试。
- 进一步将“K-1”训练集划分为“K”个子集,并迭代使用新的“K-1”子集和“验证集”进行参数调整(网格搜索)。此步骤中确定的最佳参数用于测试步骤 2 中的保留集。
另一方面,我假设,重复的 K 折交叉验证可能会重复步骤 1 和 2,因为我们选择查找模型方差的次数相同。
但是,通过插入符号手册中的算法,除了重复交叉验证之外,“repeatedcv”方法似乎还可以执行嵌套的 K 折交叉验证。
我的问题是:
- 我对插入符号“repeatedcv”方法的低估是否正确?
- 如果没有,您能否举一个使用嵌套 K 折交叉验证的示例,以及使用 caret 包的“repeatedcv”方法?
编辑:
在这篇方法论文章中解释和比较了不同的交叉验证策略。
Krstajic D、Buturovic LJ、Leahy DE 和 Thomas S:选择和评估回归和分类模型时的交叉验证陷阱。化学信息学杂志 2014 6(1):10。doi:10.1186/1758-2946-6-10
我对使用 caret 包的“算法 2:重复分层嵌套交叉验证”和“算法 3:用于变量选择和参数调整的重复网格搜索交叉验证”感兴趣。