
机器学习交叉验证:模型的“多场景考试”
在机器学习中,交叉验证是一种非常重要的模型评估方法,它就像是给模型进行“多场景考试”,确保模型在不同的数据上都能表现良好。
今天,我们就用最通俗易懂的方式来讲解交叉验证,帮助你更好地理解这个概念。
No.1交叉验证是什么?
想象你是一个厨师,你开发了一道新菜,想让朋友尝尝好不好吃。如果你只让一个朋友试吃,可能他的口味太独特,评价不一定客观。
所以,你可能会:
- 多找几个朋友试吃(用不同数据测试模型)。
- 让朋友轮流试吃不同的菜(用不同组合的数据训练和测试模型)。
这就是交叉验证的核心逻辑——避免偶然性,得到更可靠的结果。
交叉验证的基本原理
交叉验证法的核心是将数据集分成训练集(用于训练模型)和测试集(用于评估模型)。
图片
但与简单的一次性划分不同,交叉验证会多次划分数据,每次用不同的数据组合来训练和测试模型,最终综合多次结果来评估模型性能。
No.2常见的交叉验证方法
1. K折交叉验证(K-Fold Cross-Validation)
K折交叉验证是最常用的交叉验证方法之一。它将数据集分成K个部分,每次用一个部分作为测试集,其他K-1个部分作为训练集,重复K次,最后取平均效果。
图片
假设你有10个苹果,要测试哪个苹果最甜。你把这10个苹果分成10组(K = 10),每次拿1个苹果出来尝(测试集),剩下的9个苹果用来比较(训练集),这样尝10次,就能更准确地知道哪个苹果最甜了。
优点是能充分利用数据,评估结果更稳定可靠;缺点是计算量相对较大,尤其是当K值较大或者数据集很大的时候。
2. 留一法交叉验证(Leave-One-Out Cross-Validation, LOOCV)
这是K折交叉验证的一个特例,当K等于数据集的大小时,就变成了留一交叉验证。
也就是说,每次只留下一个样本作为测试集,剩下的所有样本作为训练集,进行与数据集大小相同次数的训练和测试。
图片
还是那10个苹果,这次你每次只尝1个苹果(测试集),剩下的9个苹果用来比较(训练集),要尝10次,虽然结果很准确,但太费时间了。
优点是能最大程度地利用数据,评估结果非常准确;缺点是计算量极大,当数据集很大的时候,几乎无法实现。
3. 自助法(Bootstrap)
自助法是一种通过随机抽样来评估模型性能的方法。它从数据集中随机抽取一部分数据(可以重复抽样),用这部分数据作为训练集,剩下的数据作为测试集。
图片
就像从装有10个小球的袋子里,每次随机抽一个小球并放回,重复10次。没被抽到的小球作为测试集。多次重复后,虽能大致了解小球颜色分布,但可能有偏差,因为有些小球可能被多次抽到,有些则未抽到。
优点是适用于小数据集,能生成多个训练集,有助于评估模型稳定性。缺点是改变了原始数据分布,可能引入偏差,因为部分样本可能重复使用,部分样本未被使用。
No.3如何选择归一化或标准化?
💻 准备数据:收集并整理好用于模型训练和评估的数据集。
📑 划分数据:将数据集平均分成 K 份,确保每份数据的大小和分布大致相同。
图片
训练和测试循环:
- 第一次:选择第 1 份作为测试集,其余 K - 1 份作为训练集,训练模型并在测试集上进行评估,记录评估指标(如准确率、均方误差等)。
- 第二次:选择第 2 份作为测试集,其余作为训练集,重复训练和评估过程,记录指标。
- ……
- 第 K 次:选择第 K 份作为测试集,其余作为训练集,完成训练和评估,记录指标。
综合评估:将 K 次测试得到的评估指标取平均值,作为模型的最终评估结果。
本文转载自Fairy Girl,作者:Fairy Girl
