初识机器学习:交叉验证法

351 阅读2分钟

携手创作,共同成长!这是我参与「掘金日新计划 · 8 月更文挑战」的第12天,点击查看活动详情

之前介绍 KNN 的时候,提到过,可以使用交叉验证法来寻找最优的 K 值,之前提到交叉验证法没有细说,这篇来介绍一下交叉验证法。交叉验证法主要是用来验证模型参数以及评价机器学习训练得到的模型。

训练集和测试集

当我们在训练一个模型的过程中,需要一个关键的步骤,就是参数调优,参数调优的过程中需要做很多验证运算;在得到模型之后,我们也会通过验证来对模型进行评价。

通常情况下,我们准备的初始数据集中,有一部分会被作为训练数据,这部分数据成为训练集,被用来生成和调整,另一部分,叫做测试集,用来充当新数据,评估模型的预测准确度。

交叉验证

所谓的交叉验证,通常在数据集比较有限的时候使用。

当原始数据集较少时,如果还按照上面介绍的方法来做,既没有办法保证训练集能够为训练足够准确的模型,也没有办法保证测试集能准确地对模型进行评价。

交叉验证就是通过多次训练和测试,让同一部分数据既作为训练集又作为测试集来使用,然后结合多次训练和测试的结果,来对模型进行评价和调整。

交叉验证的方法也不止一种。

简单交叉

最简单的方式就是,将数据集分成训练集和测试集使用,进行训练和验证。然后在把原始数据集随机打乱,再次分成两部分,执行训练和验证。反复执行几次之后,选择评价最优的模型和参数。

S-Folder 交叉验证

将原始数据集分成 S 组,每次选 1 组作为测试集,其余作为训练集,进行一次训练和测试之后,再换一组作为测试集。当每一组都充当一次测试集之后,得到 S 个训练结果。综合每次的结果,得到最优的模型、参数,或者评估值。

总结

交叉验证法可以在原始数据集有限的时候,最大限度地使用数据集,训练尽可能准确的模型和参数,或者计算尽可能准确的评估值。如果交叉验证的结果表明模型的预测准确度较低,可以重新调整模型的参数、重新考虑预测变量,或者重新处理数据。