上节课我们引入了augmented error,并学习如何通过加入regularizer来限制model complexity,并求得augmented error的最小值。从开始到现在我们已经学习到很多模型,但究竟哪些模型能得到更好的泛化能力呢?这节课我们将来探讨一下这个问题。
一、Model Selection Problem
对于一个简单的binary classification问题,模型上,我们就有多维的选择:
- 算法A的选择(PLA、pocket、linear regression…)
- 迭代次数T的选择
- 学习速率η的选择
- 特征转换feature transform φ的选择
- 正则化regularizer的选择
- 正则化系数λ的选择
不同的选择搭配,有不同的机器学习效果。
- 我们的目标是找到一个g使得Eout最小,但实际情况是Eout我们并不知道,我们并没有办法去衡量Eout究竟是多少。
- 那究竟如何来选择这个g呢,或者说是模型?
- 我们首先想到可以通过Ein来做选择,只要Ein越小越好,这样是否可行呢?
- 我们知道ϕ1126\phi_{1126}ϕ1126找到的Ein往往会比ϕ1\phi_{1}ϕ1要小,但这个代价会导致严重的overfitting,即bad generalization;
- 那假设我们在几个不同的Hypothesis set中分别找出最小的Ein再做比较呢?也不行,因为等效的Hypothesis set变大了,dvcd_{vc}dvc变大,同样容易导致overfitting,获得很差的generalization;
- 所以通过Ein来选择是不可行的!
- 那么通过一个另外的测试数据集DtestD_{test}Dtest可行么?
- 根据finite-bin Hoffding不等式,只要我们的模型个数M越小,DtestD_{test}Dtest数目越大,那么EtestE_{test}Etest就会越接近EoutE_{out}Eout;
- 但是问题是这样的DtestD_{test}Dtest我们并不好获得。
- 既然使用EinE_{in}Ein和EtestE_{test}Etest都有自己的局限性,但其优点分别是找到一个小的EinE_{in}Ein和使用EtestE_{test}Etest来检验generalization,那么折中一下:
- 找到一个EvalE_{val}Eval,它是通过数据集Dval⊂DD_{val}\subset DDval⊂D,一来DvalD_{val}Dval是我们方便获取的,二来EvalE_{val}Eval可以用来替代EtestE_{test}Etest;
- 验证集DvalD_{val}Dva