交叉验证
在本教程中,您将学习如何使用交叉验证来更好地衡量模型的性能。
本课程所需数据集夸克网盘下载链接:https://pan.quark.cn/s/9b4e9a1246b2
提取码:uDzP
机器学习是一个迭代的过程。
我们将面临使用什么预测变量、使用什么类型的模型、向这些模型提供什么参数等选择。到目前为止,您已经通过使用验证(或holdout)集来衡量模型质量以数据驱动的方式做出了这些选择。
但是,这种方法存在一些缺点。为了了解这一点,想象一下您有一个包含5000行的数据集。通常,您会将大约20%的数据保留为验证数据集,即1000行。但是这样做会在确定模型分数时留下一些随机机会。也就是说,一个模型可能在一组1000行上表现良好,即使在另一组1000行上表现不准确。
在极端情况下,您可以想象将验证集中只有1行数据。如果比较不同的模型,哪个在单个数据点上做出最好的预测将主要取决于运气!
一般来说,验证集越大,我们对模型质量的度量中随机性(即“噪声”)就越小,它就越可靠。不幸的是,我们只能通过从训练数据中删除行来获得一个大的验证集,而较小的训练数据集意味着更差的模型!
在交叉验证中,我们对数据的不同子集运行建模过程,以获得模型质量的多个度量。
例如,我们可以将数据分成5个部分,每个部分占整个数据集的20%。
在本例中,我们将数据分成5个“折叠”。
交叉验证为模型质量提供了更精确的度量,如果我们要做很多建模决策,这一点尤其重要。然而,它可能需要更长的时间来运行,因为它估计了多个模型(每个折叠一个)。
那么,考虑到这些权衡,我们应该在什么时候使用每种方法呢?对于小型数据集,额外的计算负担并不大,我们应该运行交叉验证。
对于什么构成了大数据集和什么构成了小数据集,没有简单的阈值。但是如果你的模型只需要几分钟或者更少的时间就能运行,那么换成交叉验证可能是值得的。
或者,你可以运行交叉验证,看看每个实验的分数是否接近。如果每个实验产生相同的结果,一个单一的验证集可能就足够了。