本栏目(机器学习)下机器学习基石专题是个人对Coursera公开课机器学习基石(2014)的学习心得与笔记。所有内容均来自Coursera公开课Machine Learning Foundations中Hsuan-Tien Lin林轩田老师的讲解。(https://class.coursera.org/ntumlone-002/lecture)
第15讲-------Validation
一、模型选择问题
机器学习的每个模型都有各式各样的参数。即使只是对于二元分类,学习算法上可以选择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的表现。
第16讲-------Three Learning Principles
一、Occam‘s Razor奥卡姆剃刀
它的哲学意义蛮有名的,比喻剃掉过分的解释。在机器学习里面的意思就是:对训练数据最简单的解释就是最好的。那么问题来了,什么叫做简单的模型和解释;以及为什么确定简单的就是最好的?
曾今定义过simple hypothesis:看起来很简单,例如一个大大的圆而不是弯弯曲曲的曲线;只需要少数的参数,圆心和半径就能确定这个hypothesis长什么样子。也曾今定义过simple
model(也就是Hypothesis Set):有效的hypothesis数量不是很多,成长函数长的很慢。
那为什么简单是好的呢?直觉的解释如下:想象有一个简单的model,同时给你一堆随机产生的没什么规律的训练数据。这时候你的model只有很小的机会能够找到E_in是0,杂乱的训练数据导致大部分的时候都没办法分开。那反过来说,如果今天有一组训练数据用你的simple model可以分开,这表明了你的数据是有显著性的,是有规律的数据。而用复杂的模型,则是达不到这样的效果的。
所以根据这个锦囊妙计出发,先试线性的模型;选择模型之前永远要想一想是否尽可能地用了最简单的模型。
二、Sampling Bias
抽样有偏差的时候,学习算法产生的结果也会有偏差,这样的情形叫做Sampling bias。VC理论里的一个假设就是:训练数据与测试数据来自于同一个分布。不然的话,学习可能没办法做的很好。那怎么办呢?
实用的建议:了解你的测试环境,让你的训练环境跟测试环境尽可能地接近。举例来说,如果测试环境是last user records,也就是时间轴上靠后的使用者资料,那么训练的时候应该要想办法对时间轴上靠后的数据的权重加强一下。或者,做validation的时候也选择late user records靠后的用户资料。
那回头想一想,收集用户资料来预测是否对新顾客发放信用卡的案列。银行有的资料只是发放了信用卡后用户有没有乱花钱,却没有资料诸如之前没有发放信用卡但是如果给他的话会不会乱花钱,也就是说银行有的资料已经是经过筛选过的数据。用来预测新的顾客是否该发放信用卡的两个分布是不太一样的,所以是需要做一些改变的。
三、Data Snooping
第三个锦囊妙计就是不要偷看数据。例如之前我们通过观察数据发现圆圈可能是一个好的hypothesis,这其实忽略了人脑的VC dimension。当然实际情况下,偷看资料可能经常发生,不只有使用眼睛的方式。
学习中使用数据的任何过程,都是间接地让你偷看到数据。偷看到数据的表现以后,在下决策去做任何的一件事都要想到,这个数据已经因为你的决策选择过程而多出了很多的model complexity而污染。
所以,在实际操作中,要谨慎地处理Data Snooping这件事情。要做到完全不偷看数据很难,一个折中的方式是做validation。另外,在实际操作中如果要做什么决定的时候尽量避免用数据来做决定,要先把domain knowledge变成feature放进去而不是看完数据再放专业知识进去。然后,要时刻存着怀疑之心,时刻要有一个感觉经过多少过程得到这些结果,结果到底可能被污染的多严重。
四、Power of Three
课程的最后来总结一下,在这个课程里学习了什么。我们介绍的很多东西好像都跟三有关。
三个相关的领域:
- Data Mining:从大量的数据里找出一些有兴趣的特性。它跟ML是高度相关的。
- Artificial Intelligence:想让机器做一些有智慧的事情。ML是实现AI的一种方法。
- Statistics:从数据里做一些推论的动作。是ML的工具。
三个理论保证:
- Hoeffding不等式:针对单个hypothesis的抽样
- Multi-Bin Hoeffding:针对M个hypothesis
- VC Bound:针对整个hypothesis set。
三个模型:
- PLA/Pocket:二元分类
- Linear regression:线性回归,公式解
- Logistic regression:分类概率
三个重要工具:
- Feature Transform:通过映射到高维空间,将E_in变小。
- Regularization:反其道而行,想让VC Dimension变小一点,但是可能E_in会变大一些。
- Validation:留下干净的数据来做模型的选择。
三个锦囊妙计:
- Occam‘s Razer:simple is good。
- Sampling Bias:training matches testing。
- Data Snooping:honesty is best policy。
未来的学习方向:将在后续的机器学习技法课程中讲解。一个是更多不一样的转换方式,不止有多项式的转换;一个是更多的正则化的方式;再来就是不是那么多的Label,譬如说要做无监督的学习应该要如何来做等等。
关于Machine Learning Foundations更多的学习资料将继续更新,敬请关注本博客和新浪微博Sheridan。
原创文章如转载,请注明本文链接: http://imsheridan.com/mlf_15th_lecture.html