什么是cross-validation
在机器学习中,将数据集分为两部分,一部分用来训练,一部分用来测试。为了模型能学习到更完备又不带“偏见”的特征,于是重复数据划分的过程,保证所有的数据都会被丢入到模型中进行训练。在这个过程中,上一次用于测试的数据可能下次就会用于训练,上一次用于训练的数据,下次可能会用于测试,于是称其为交叉验证。
1.k-fold cross-validation(k折交叉验证)
将数据随机分为K个互斥的子集。每次取一个子集用于测试,剩余用于训练,重复K次。
2.stratified k-fold cross-validation(分层k折交叉验证)
2.1分层k折交叉验证在分类问题上的应用
与k折交叉验证的区别是:一般用于非均衡数据集(某一类或几类数据特别多或者少)。分层k折交叉验证中,每一折各类别之间比例保持与原数据集相同。但同时也要注意,划分的子集依然需要保持互斥。
2.2分层交叉验证在回归问题上的应用
我们首先将目标值划分区间,然后基于不同区间去做分层k折交叉验证。
2.2.1Sturge's Rlue
当你不确定划分区间的数量时可以采用Sturge's Rlue,其中N为你的数据量:
3.hold-out based validation
当数据集非常大的时候使用(没有交叉验证)
4.leave-one-out cross-validation
5.group k-fold cross-validation
以医学图像数据集为例:由于每个病人可能存在好几张图片,在划分训练集与验证集的过程中,要保证出现在训练集的病人图片不能出现在验证集。于是便需要采取分组操作。