您的位置:首页 > 其它

机器学习基石HOW BETTER部分(3)

2015-12-18 11:01 204 查看

机器学习基石HOW BETTER部分(3)

标签:机器学习基石

第十五章

(crossly) reserve validation data to simulate testing procedure for model selection

模型选择问题



做二元分类,可以有的选择真的好多啊。每一种的选择就多,最后实现,还是选择的组合。



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

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

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



将这两者结合一下:把训练数据留一部分下来作为测试数据,用其他的训练数据来训练模型,然后用测试数据来测试模型的表现好坏。这是合理的作弊,这样就可以有测试资料了(测试资料一定要留着,不能收到污染。也就是说,不能参与任何选出模型的工作。)



验证(Validation)



原来的训练数据分割出一部分作为测试数据,也被叫做validation set。



同样,也会有Hoeffding不等式的保证。¥E_{test}就是以前的就是以前的E_{in}$.



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

那Validation Set的大小K应该如何选择?选择的K应该尽可能地让下面这三个Error约等式成立。



通常情况下,K取N/5。

Leave-One-Out Cross Validation

k要足够小,让Eout(g)E_{out}(g)和Eout(g−)E_{out}(g-)很接近。又要很大,让Eout(g−)E_{out}(g-)和Eval(g−)E_{val}(g-)很接近。

考虑一个极端的情形,取非常小的K = 1。k足够小,让Eout(g)E_{out}(g)和Eout(g−)E_{out}(g-)很接近。但是,这个时候,Eout(g−)E_{out}(g-)和Eval(g−)E_{val}(g-)就很不接近了。

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



Leave-one-out Cross Validation看起来很厉害,那问题是Leave-one-out Cross Validation能不能告诉我们最在乎的事情Eout(g)E_{out}(g)有多好。

假设有一个算法和1000笔数据拿来做Leave-one-out Cross Validation,然后对各式各样的1000笔数据来做取一个平均。等一下要证明跟Eout(N−1)E_{out}(N-1)的平均值是可以连接的。因为Eout(g−)E_{out}(g-)与Eout(g)E_{out}(g)几乎是一样的,前者是1000笔数据做出来的,后者是999笔数据做出来的。

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

V-fold Cross Validation

1000笔数据,你需要有1000遍,把999个数据放进去算,后面还要做平均。很明显,Leave-One-Out Cross Validation大大增加了计算的复杂度,实际应用上上可能不太行。

另一方面,对于二元分类来说,分类结果在0与1之间跳动,Leave-One-Out求一个平均值。对这个平均值来说,这些0与1的跳动是很大的,希望用平均的方式把这些很大的跳动消掉,其实还是不太容易。

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

实际上V通常取5或者10。

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