交叉验证,顾名思义,就是重复的使用数据,把得到的样本数据进行切分,组合为不同的训练集和测试集,用训练集来训练模型,用测试集来评估模型预测的好坏。在此基础上可以得到多组不同的训练集和测试集,某次训练集中的某样本在下次可能成为测试集中的样本,即所谓“交叉”。 一般数据量比较少,少于1万条时,一般都会采用交叉验证。如果数据量比较大,可以分为三类。训练集用来训练数据,验证集用来评估模型的好坏并进行参数选择,测试集用来决定选择使用哪个模型。 (一) 简单交叉验证 70%的数据用来训练模型,剩余30%用于验证。没有体现交叉的思想,不是很有说服性。 (二)k折交叉验证 这是应用最多的交叉验证方法。
首先随机地将数据集切分为 k 个互不相交的大小相同的子集; 然后将 k-1 个子集当成训练集训练模型,剩下的 (held out) 一个子集当测试集测试模型; 将上一步对可能的 k 种选择重复进行 (每次挑一个不同的子集做测试集); 这样就训练了 k 个模型,每个模型都在相应的测试集上计算测试误差,得到了 k 个测试误差,对这 k 次的测试误差取平均便得到一个交叉验证误差。这便是交叉验证的过程。
k折交叉验证可以有效的避免过拟合以及欠拟合状态的发生,最后得到的结果也比较具有说服性。
如果数据量够用,一般取k=10.
参考:https://blog.csdn.net/weixin_42691585/article/details/113971857