本节讲如何做模型选择。
对一个问题我们有M个模型,它们分别对应M个假设空间以及相应的算法。如何选择出一个最好的模型呢?
通过之前讲到的overfitting,我们知道Ein最好的不一定Eout好,但是我们其实是希望选出来的模型在Eout上表现尽可能好。
如果我们有额外的test数据,在test上的Etest则可以近似的看做Eout。
这些额外的数据从哪里来呢?一个方法是把现有的样本划分为train和validation, 用validation的Eval来估计Eout.
选出在validation上表现最好的模型,然后再将全部的样本丢进去训练,得到g*,因为样本增多了,理论上应该是比当时的g- 更好的。
如何选择validation的大小呢?
如果K过小,那么Eval对Eout的估计可能就不好,如果K过大,那么train的样本过少,训练出来的g- 与g可能差的就比较多,Eout就不能通过Eout(g-)来反映了。
通常选择1/5的样本量作为validation.
leave-one-out cross validation
N个样本,每次留一个作为validation, N-1个用于训练。这样进行N此,得到N个不同的 g- ,对每个g-在validation上的error做平均,那么可以看成这个模型的Eout.
Eloocv的期望理论上可以反映Eout(g-)的期望,某种程度也反映了Eout(g),所以Eloocv是一个好的衡量模型的方法。
在上述推导中,
V-fold cross validation
loocv的一个缺点是计算量过多,所以用了等分V份的方式来做cross validation。