对于机器学习的模型选择来说,即使只是对于二元分类,我们已经学习了很多方法,比如PLA,LR等;很多学习算法都是可迭代的,需要决定迭代次数;你可能还需要决定每一次迭代走多大,例如梯度下降;或者有很多的转换可以选择,例如线性、二次等;同时规则化又有很多的选择L1,L2;再来规则化到底要加多强的λ。况且这些选择是组合起来的,某种程度上来说是组合爆炸的,那么我们怎么做出正确的选择?
那么对于以上两个模型,你会选择哪一个模型呢?也许你会说,可以根据自己视觉上的判断来选择模型,但是我们必须注意到,当选择的模型不是二元的,而是多元的时候,我们就不能通过视觉上的判断来选择了。还有一点,如果通过视觉上的判断来选择,我们就必须考虑到自己脑袋里那个强大的VC维模型,那么我们就不见得有多大的好处。
如果以上方法不行的话 ,那我们是不是可以选一个Ein最小的方法呢?
我们可以把待选择的模型跑在我们的资料上,那么我们就可以通过选择Ein最小的模型来完成机器学习。
那么,这么做有什么问题呢?
首先,我们可以想象,在这样的设定之下,我们肯定会选择复杂度很高的模型,以减小Ein,就会可能造成overfitting(过拟合)。
其次,这样选择模型,相当于在1班中选择一个最好的学生s1,在2班中选择一个最好的学生s2,然后再选择出s1和s2中相对较好的学生。这无疑增加了模型复杂度。
那我们可不可以通过选一个Etest最小的方法呢?通过一个测试集来判断Etest的大小,从而选出较好的模型?
看起来这是一个很好的方法。但是问题是我们能找到测试资料吗?这就好像测试考试,在正式考试之前,你会得到考卷吗?
我们今天是要找到一个中间方式,就是把一部分资料先拿出来当作测试资料,以保证测试资料不被污染,当要进行验证时,再把这部分资料拿出来进行测试!
我们选出K个数据用来进行验证,这K个数据的误差记作Eval,称为验证误差,那么剩下的N-K个数据用来训练模型,记作Dtrain;
一般来说,K的值大约为整个数据集数量的五分之一。
K=N5
机器学习系列之机器学习之Logistic回归(逻辑蒂斯回归)