喜欢就点关注吧!
在我们训练机器学习模型时,为提高模型拟合效果,经常使用K-Fold交叉验证,这是提高模型性能的重要方法。在这篇文章中,我们将介绍K-Fold交叉验证的基本原理,以及如何通过各种随机样本来查看数据。
交叉验证是用于估计机器学习模型技能的统计方法。也是一种用于评估有限数据样本的机器学习模型的重采样方法。该方法简单且易于理解。K-Fold将将数据集拆分为k个部分。每次使用k-1个部分当做训练集,剩下的一个部分当做验证集进行模型训练,即训练K次模型。其具体步骤如下:
必须仔细选择k值来划分数据样本。选择不当的k值可能导致对模型性能的错误估计,例如具有高方差(可能基于用于拟合模型的数据而改变很多),或者高偏差(例如高估模型的技巧)。
现在,总结选择k值的三种常用策略如下:
分层K-Fold:
使用shuffle = True,我们的random_state会对数据进行洗牌。否则,数据由np.random(默认情况下)进行混洗。例如,n_splits = 4,我们的数据y(因变量)有3个类(标签)。4个测试集既能够覆盖所有数据,没有任何重叠。
分层洗牌K折叠:
因此,这里的差异是StratifiedKFold只是洗牌和分裂一次,因此测试集不重叠,而StratifiedShuffleSplit 每次在分裂之前进行混洗,并且它会分割n_splits 次以使测试集可以重叠。
在k-Fold交叉验证中存在与k选择相关的偏差 - 方差权衡。一般我们使用k = 5或k = 10进行k折交叉验证,以产生既不受过高偏差也不受非常高方差影响的测试误差率估计。
如果选择的k值不能均匀地分割数据样本,则一个组将包含多余的样本。因此划分样本时优先将数据样本分成具有相同数量的k个组,从而使得模型评估结果的公平。
参考
https://medium.com/towards-artificial-intelligence/importance-of-k-fold-cross-validation-in-machine-learning-a0d76f49493e