K-fold交叉验证步骤:
图片来源:https://www.knowledgehut.com/blog/data-science/k-fold-cross-validation-in-ml#cross-validation%C2%A0
1、R语言进行kfold检验:
https://www.jianshu.com/p/47a4ee095672
代码:#多次K折交叉验证,如5折400次交叉验证 folds <-createMultiFolds(y=aa$status,k=5,times=400)
2、caret::createFolds() vs. createMultiFolds()对比
createFolds(y, k = 10, list = TRUE, returnTrain = FALSE)
其中,k是folds的数目,list,是否以列表形式返回,returnTrain,false时返回的是测试集的索引,true时返回的是训练集的索引(仅当list=TRUE时,returnTrain=TRUE才有效)
https://www.r-bloggers.com/2020/11/caretcreatefolds-vs-createmultifolds/
默认情况下,createFolds()返回一个列表,其中包含每个折叠的已保存观测值的索引,而createMultiFold()返回每个折叠中每次重复的观测值列表。
https://stackoverflow.com/questions/65012936/r-caret-createfolds-vs-createmultifolds-discrepancies
3、分类
https://blog.csdn.net/WHYbeHERE/article/details/108192957
-
分层交叉验证:分层是重新将数据排列组合,使得每一折都能比较好地代表整体。(避免了随机划分可能产生的的情况)。代码:
folds <- createFolds(factor(data$target), k = 10, list = FALSE)
在进行 K 折交叉验证时,每个子集的样本类别比例都与原始数据集中保持一致。
图片来源:https://www.bilibili.com/read/cv12736369/
分层K折交叉验证的工作方式与K折交叉验证相同,唯一的区别是它确保每个分类值的观察百分比相同。 -
标准交叉验证(即K折交叉验证):直接将数据分成几折;将原始数据随机分成 K 个子集(通常是等分),每次选择其中一个子集作为测试集,其他 K-1 个子集作为训练集,进行 K 次训练和验证,最后将 K 次验证结果平均得到最终的性能评估。
-
重复交叉验证( k-fold cross validation with repetition):如果训练集不能很好地代表整个样本总体,分层交叉验证就没有意义了。这时候,可以使用重复交叉验证。
学习资料:
1.机器学习里的K-Fold交叉验证你会用吗?一个Python示例就可以教会你
2、Repeated k-Fold Cross-Validation:https://machinelearningmastery.com/repeated-k-fold-cross-validation-with-python/
3、Apply k-Fold Cross-Validation Using Logistic Regression:
https://rforhr.com/kfold.html
4、深入研究k折交叉验证(K fold Cross Validation):https://www.bilibili.com/read/cv12736369/
5、五种交叉验证方法的 R 语言实现:https://developer.aliyun.com/article/1228008