交叉验证 cross validation

交叉验证 cross validation

一:基本概念

       交叉验证是机器学习在建立模型和验证模型参数时常用的方法。通常用于原始数据不是很充足时,使用交叉验证来重复的使用数据,把原始数据集进行切分组合成多组不同的训练集(训练模型)和测试集(评估模型预测好坏)。

       交叉的概念指拆分组合的训练集和测试集的数据是交叉的,比如训练集的样本数据可能下一次就会出现在测试集中。[1]

二:主要方法

       当原始样本集数据量很小时,采用交叉验证,其使用的主要方法如下所示:

(1)留出法(hold out method):

一般数据量大于10000条时,我们一般将原始样本数据随机分成三组(留出法):训练集training set,测试集test set,验证集validation set。其中的验证集是用于评估模型预测好坏和选择模型及其对应参数,并把最终得到的模型用于测试集,最终决定使用的模型和对应参数。(通常训练集和测试集比例为7:3)(结果不具说服性)如下图所示【4】

交叉验证 cross validation

(2)k折交叉验证(K-folder cross validation,K-CV)

其步骤如下:

       ①将原始数据集不重复抽样的随机分成k组(一般均分)。

       ②将分好的k组数据,进行k次训练,每次选取其中一组作为测试集数据,剩

余k-1组作为训练集。这样就会得到k个模型。

       ③用这k个模型,每个模型都在对应的测试集上测试。

得到k个评估指标:分类准确率。

       ④将这k个分类准确率的平均值作为最终K-CV下分类器的性能指标

k的取值一般大于2,一般取10,20。

使用K-CV可以有效避免欠拟合和过拟合发生。最终结果较具说服性。

如图所示【4】:

交叉验证 cross validation

(3)留一法(leave- one -out cross validation,LOO-CV)

留一法是k折交叉验证的特殊情况,即k=样本数N。此时对样本集进行N次训练,每次训练取单个数据做测试集,剩余N-1个数据作训练集。因此留一法即是N-CV。

特点:

       ①最接近原始样本分布,评估结果比较可靠。

       ②计算成本高,训练复杂度增加,因为要建立的模型数量与原始数据量相同,

因此通常在数据量实在缺乏时使用。

[1] https://www.cnblogs.com/pinard/p/5992719.html

[2]https://blog.****.net/u013713117/article/details/66971668

[3]https://www.cnblogs.com/sddai/p/5696834.html

[4]https://blog.****.net/aliceyangxi1987/article/details/73532651

[5]https://blog.****.net/luanpeng825485697/article/details/79836262