您的位置:首页 > 其它

15.校验validation

2015-06-18 16:06 197 查看
一、模型选择问题

机器学习的每个模型都有各式各样的参数。即使只是对于二元分类,学习算法上可以选择PLA,LR等;很多学习算法都是iterative的,需要决定迭代次数;可能需要决定每一次迭代走多大,例如梯度下降;或者有很多的transform,例如线性、二次等;同时regularizer又有很多的选择L1/L2;再来regularizer到底要加多强的lamda。况且这些选择是组合起来的,那么我们怎么做出正确的选择?





把模型选择问题一般化一下,就是如下的定义:有M个模型,每个模型有其对应的Hypothesis set以及学习算法A,希望选出某一个模型得到的g,它的E_out(g)是最小的。但是E_out不知道,无法以其作为标准。





根据E_in(g)最小来选择模型也是行不通的。一方面容易造成overfitting;另一方面,假设有两个模型PK:算法A1在H1上让E_in最小;算法A2在H2上让E_in最小。最后选出来的g的效果是在H1∪H2上让E_in最小,也就说额外增加了model complexity,容易造成bad generalization。

通过测试数据来选择模型是自欺欺人的。如果能找到一些测试数据,来看看哪一个模型的表现更好就选择哪个。如果用这样的方式,可以得到Hoeffding的理论保证如下图。看起来很棒,可是问题是我们找不到测试数据,测试数据就像考卷,不可能说考试之前就发下来的。





那,将这两者结合一下:把训练数据留一部分下来作为测试数据,用其他的训练数据来训练模型,然后用测试数据来测试模型的表现好坏。这是legal cheating。





二、Validation

根据上面的分析,原来的训练数据分割出一部分作为测试数据,也被叫做validation set。同样,也会有Hoeffding不等式的保证。







为了和原来的E_out作比较,我们知道更多的训练数据一般来说会有更好的E_out。所以很大程度上来说也就有如下的保证。





那Validation Set的大小K应该如何选择?选择的K应该尽可能地让下面这三个Error约等式成立。通常情况下,K取N/5。





接下来,看看下面的这个练习题。注意到加入Validation的方式花的时间比原来25N^2要来的小,因为训练模型的数据更少了。





三、Leave-One-Out Cross Validation

考虑一个极端的情形,取非常小的K = 1。小的K可以让E_out(g)与E_out(g-)非常接近,不过之前那个约等式右边希望E_out(g-)与E_out(val)接近就很难满足了。那我们来看看能不能克服这个问题。

下面的e_n表示取第n笔数据作为validation data,所得到的E_val(g-)。e_n到底能不能告诉我们E_out(g)有多好呢?一个e_n当然不行,那把每笔数据都作为一次validation data然后平均起来,选择平均Error最小的作为最后的g,这样的方式叫做cross
validation。





那Leave-one-out Cross Validation有何理论保证呢?或者它能不能告诉我们最在乎的事情E_out(g)有多好。假设有一个算法和1000笔数据拿来做Leave-one-out Cross Validation,然后对各式各样的1000笔数据来做取一个平均。等一下要证明跟E_out(N-1)的平均值是可以连接的。因为E_out(g-)与E_out(g)几乎是一样的,前者是1000笔数据做出来的,后者是999笔数据做出来的。





所以,我们得到了一个几乎完全没有偏见的针对E_out(g)的衡量方式。也就是说,Leave-one-out Cross Validation在选择模型上会比E_in来的更有效。

四、V-fold Cross Validation

很明显,一方面,Leave-One-Out Cross Validation大大增加了计算的复杂度,实际应用上上可能不太行;另一方面,对于二元分类来说,分类结果在0与1之间跳动,Leave-One-Out求一个平均值。对这个平均值来说,这些0与1的跳动是很大的,希望用平均的方式把这些很大的跳动消掉,其实还是不太容易。

为了降低计算复杂度,将训练资料分为V份,取其中V-1做训练,另外1份做validation。这种方式通常叫做V-fold Cross Validation,实际上V通常取10。

Traning就像初赛,各个模型都从Hypothesis Set中选出最合适的h;Validation就像复赛,从多种模型的scheme中选出一个最优的。这两步都是在进行模型选择,之后的testing methods都只是在对模型进行estimate了。也因为Validation还是在做选择,只要做选择就会有数据的污染等等,所以Validation仍然比testing要乐观。对于模型来说,testing的表现才是真正要看重的,not
最好的validation的表现。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: