Validation

对于PLA, pocket, linear regression, logistic regression,这些gradient descend的方法,我们可以选择迭代的次数,学习率,也可以选择对原来的feature进行多项式的转换映射到高维空间。为了防止overfitting,regularizer可以选择l1-norm,l2-norm, symmetry regularizer,以及penalty的强度。那么怎样选择最合适的组合才能找到最好的g呢? 现在有M个Hypothesis set,以及它们对应的算法。比如线性的Hset,对应有logistic regression,树型的Hset,对应有决策树,rf等等。 现在从M个Hset中,选出一个Hset,它对应的g的最小。 但是我们不知道,那么我们可以选择最好的吗?这样会overfitting,比如算法会prefer更高次的Hset,或者说要好,那么我干脆就不regularization好了。这些都是bad generalization。

如果我们可以获得testset,我们通过选择,即,然后通过Hoeffding,可以得到。但是因为无法得到测试数据,或者说这种行为是cheating,因此此路不通。 因此产生一种Validation set。从手中的Dataset中选出一部分,不用做Training,而拿来做Validation。 假设现在的Dataset是D,size为N,从中选出K个sample作为,而用剩下来的N-K个sample去给A来Train model。得到的model用表示。然后用去validate。为了让去表达变得有意义,必须独立同分布于D,这样根据Hoeffding,就有,因此当能够做到最小,选出了最好的 ,那么也就有了上限。 根据Learning curve,随着Dataset size的增大,E逐渐减小,然后是用了N-K大小的数据集找到的最佳模型,那么如果我们用了全部的N去训练,找到的最佳模型,它在上的表现会比更好,因此有不等式。把它们的Learning curve画出来就是NewImage,其中,in-sample就是通过选出来的模型,optimal是根据选出来的模型表现,可以看到error一直很小。另外两个,红色是真的用validation选出来的还不错的上的表现,差过蓝色的,也就是的表现。 我们知道,如果validation set的size K很小的话,那么几乎用手中所有的数据训练出来的g,它在的表现,应该和差不多,但是用这么少的validation set得到的并不能够代表。但是,如果当K很大时,代表留下来做validation的size很大,训练的数据集很少,此时对于训练出来的,那些validation set在它上面的表现,也就基本上等同于真正的了,但是此时的就比差的远了。一般情况下

LOOCV:

当K取1时,由上文可知,差的挺远的,这里的上标n代表作为validation set的数据是第n个。而且要么是0要么是1。怎样才能使变得和差不多呢?答案是,求平均。我们有N个数据,每个数据都可以有机会当做validation set的机会,那么就可以求出N个,因此有,希望这个error可以和差不多。以下是证明:

说明了的期望值是有关联的。 但是算LOOCV的error,需要大量的计算,例如有1000个数据,则要训练1000次的模型。而且,用一个数据去做validation,非0即1,曲线比较不稳定。 NewImage 那么怎样减少计算量呢?

V-fold Cross Validation random-partition of D to V equal subset.然后拿V-1份subset去训练,拿剩下的一份去做validation,然后error就可以表示为 ,依据这个交叉验证的error去选择m,方法于LOOCV中的选择m的方法一致。V常常选择10。一般上不会去选择LOOCV。同时,如果计算量允许的情况下,cross validation往往prefer过single validation,因为CV有做平均,理论依据如上证明。但是实际上还是要比乐观一些,就是说validation上做得很好,最后还是要看测试的结果,才算真正衡量model的表现。

posted on 2015-07-15 17:43  CaseyZ  阅读(260)  评论(0编辑  收藏  举报

导航