0. 前言
之前的课程讲解了为了避免overfitting,可以使用regularization方法来解决。在之前的 Ein E i n 上加上一个regularizer,生成 Eaug E a u g ,选择合适的 λ λ 将其最小化,通过减小模型复杂度来增加泛化能力。今天将会介绍另一种增加泛化能力的方法:Validation。
1. Model Selection Problem
- 在机器学习中,模型选择一直是一个比较麻烦的问题。首先是我们选择算法,有PLA、Pocket、逻辑回归、线性回归一堆算法可以挑选,选完算法之后是迭代次数T的选择,之后是学习速率η的选择,接着是模型特征转换Φ的选择然后是正则化regularizer的选择,有L2,L1等等;最后是正则化系数λ的选择。不同的搭配,有不同的机器学习效果。我们的目标就是找到最合适的搭配,构建最好的机器学习模型。
- 我们可以做出一个独立于训练样本的测试集,分别对每个模型进行测试,选择 Etest E t e s t 最小的模型。测试集需要从训练集中分离出来,前提是两者是独立同分布的。
2. Validation
- Validation过程:讲已有的数据集D分成两部分:测试集 Dval D v a l 和训练集 Dtrain D t r a i n 。对M个分类器分别对测试集和训练集进行分类,最后得到每个分类器的 Eval E v a l 和 Etrain E t r a i n ,其中在测试集中表现最好的分类器( Eval E v a l 最小)为最好的分类器。
3. Leave-One-Out Cross Validation
- 留一交叉验证:使用训练集对分类器进行训练过之后,使用每一个数据作为测试集进行测试,得到一个误差 en e n ,对所有数据便利一遍并取平均值,得到平均误差 Elopval E l o p v a l 此为留一交叉验证。
- error 与特征数量的关系如下图所示:
Ein E i n :已有数据误差
Eout E o u t :泛化的数据误差
Ecv E c v :留一交叉验证误差
可以看到我们只要保证 Ecv E c v 尽可能小,就能近似的达到 Eout E o u t 尽可能小。
4. V-Fold Cross Validation
留一交叉验证的缺点:
- 计算量:有N个数据,就要计算N次。
- 稳定性:如果是个二分问题,预测本身存在不稳定的因素,结果会存在很大的跳动,稳定性不好。
改进方法:V折交叉验证:讲数据先分成几分,比如N=1000,取V=10,那么数据分成十份、每份数据100个样本。每一份的误差为其中样本的平均误差,最终结果为每一份的平均误差。这么处理之后,有更强的稳定性且计算量减少了10倍。
5. 总结
这一节课主要讲解了Validation方法,即讲样本分为训练样本和测试样本。比较了留一交叉验证和V-折交叉验证方法,其中V-折交叉验证是最常用的验证方法。











