红色石头的个人网站:redstonewill.com

上节课我们讲了一个机器学习很重要的工具——Validation。我们将整个训练集分成两部分:DtrainDtrainD_{train}和DvalDvalD_{val},一部分作为机器学习模型建立的训练数据,另一部分作为验证模型好坏的数据,从而选择到更好的模型,实现更好的泛化能力。这节课,我们主要介绍机器学习中非常实用的三个“锦囊妙计”。

一、Occam’s Razor

奥卡姆剃刀定律(Occam’s Razor),是由14世纪逻辑学家、圣方济各会修士奥卡姆的威廉(William of Occam,约1285年至1349年)提出。奥卡姆(Ockham)在英格兰的萨里郡,那是他出生的地方。他在《箴言书注》2卷15题说“切勿浪费较多东西去做用较少的东西同样可以做好的事情。” 这个原理称为“如无必要,勿增实体”(Entities must not be multiplied unnecessarily),就像剃刀一样,将不必要的部分去除掉。

Occam’s Razor反映到机器学习领域中,指的是在所有可能选择的模型中,我们应该选择能够很好地解释已知数据并且十分简单的模型。

上图就是一个模型选择的例子,左边的模型很简单,可能有分错的情况;而右边的模型非常复杂,所有的训练样本都分类正确。但是,我们会选择左边的模型,它更简单,符合人类直觉的解释方式。这样的结果带来两个问题:一个是什么模型称得上是简单的?另一个是为什么简单模型比复杂模型要好?

简单的模型一方面指的是简单的hypothesis h,简单的hypothesis就是指模型使用的特征比较少,例如多项式阶数比较少。简单模型另一方面指的是模型H包含的hypothesis数目有限,不会太多,这也是简单模型包含的内容。

其实,simple hypothesis h和simple model H是紧密联系的。如果hypothesis的特征个数是l,那么H中包含的hypothesis个数就是2l2l2^l,也就是说,hypothesis特征数目越少,H中hypothesis数目也就越少。

所以,为了让模型简单化,我们可以一开始就选择简单的model,或者用regularization,让hypothesis中参数个数减少,都能降低模型复杂度。

那为什么简单的模型更好呢?下面从哲学的角度简单解释一下。机器学习的目的是“找规律”,即分析数据的特征,总结出规律性的东西出来。假设现在有一堆没有规律的杂乱的数据需要分类,要找到一个模型,让它的Ein=0Ein=0E_{in}=0,是很难的,大部分时候都无法正确分类,但是如果是很复杂的模型,也有可能将其分开。反过来说,如果有另一组数据,如果可以比较容易找到一个模型能完美地把数据分开,那表明数据本身应该是有某种规律性。也就是说杂乱的数据应该不可以分开,能够分开的数据应该不是杂乱的。如果使用某种简单的模型就可以将数据分开,那表明数据本身应该符合某种规律性。相反地,如果用很复杂的模型将数据分开,并不能保证数据本身有规律性存在,也有可能是杂乱的数据,因为无论是有规律数据还是杂乱数据,复杂模型都能分开。这就不是机器学习模型解决的内容了。所以,模型选择中,我们应该尽量先选择简单模型,例如最简单的线性模型。

二、Sampling Bias

首先引入一个有趣的例子:1948年美国总统大选的两位热门候选人是Truman和Dewey。一家报纸通过电话采访,统计人们把选票投给了Truman还是Dewey。经过大量的电话统计显示,投给Dewey的票数要比投个Truman的票数多,所以这家报纸就在选举结果还没公布之前,信心满满地发表了“Dewey Defeats Truman”的报纸头版,认为Dewey肯定赢了。但是大选结果公布后,让这家报纸大跌眼镜,最终Truman赢的了大选的胜利。

为什么会出现跟电话统计完全相反的结果呢?是因为电话统计数据出错还是投票运气不好?都不是。其实是因为当时电话比较贵,有电话的家庭比较少,而正好是有电话的美国人支持Dewey的比较多,而没有电话的支持Truman比较多。也就是说样本选择偏向于有钱人那边,可能不具有广泛的代表性,才造成Dewey支持率更多的假象。

这个例子表明,抽样的样本会影响到结果,用一句话表示“If the data is sampled in a biased way, learning will produce a similarly biased outcome.”意思是,如果抽样有偏差的话,那么学习的结果也产生了偏差,这种情形称之为抽样偏差Sampling Bias。

从技术上来说,就是训练数据和验证数据要服从同一个分布,最好都是独立同分布的,这样训练得到的模型才能更好地具有代表性。

三、Data Snooping

之前的课程,我们介绍过在模型选择时应该尽量避免偷窥数据,因为这样会使我们人为地倾向于某种模型,而不是根据数据进行随机选择。所以,ΦΦ\Phi应该自由选取,最好不要偷窥到原始数据,这会影响我们的判断。

事实上,数据偷窥发生的情况有很多,不仅仅指我们看到了原始数据。什么意思呢?其实,当你在使用这些数据的任何过程,都是间接地偷看到了数据本身,然后你会进行一些模型的选择或者决策,这就增加了许多的model complexity,也就是引入了污染。

下面举个例子来说明。假如我们有8年的货比交易数据,我们希望从这些数据中找出规律,来预测货比的走势。如果选择前6年数据作为训练数据,后2年数据作为测试数据的话,来训练模型。现在我们有前20天的数据,根据之前训练的模型,来预测第21天的货比交易走势。

现在有两种训练模型的方法,如图所示,一种是使用前6年数据进行模型训练,后2年数据作为测试,图中蓝色曲线表示后2年的预测收益;另一种是直接使用8年数据进行模型训练,图中红色曲线表示后2年的预测收益情况。图中,很明显,使用8年数据进行训练的模型对后2年的预测的收益更大,似乎效果更好。但是这是一种自欺欺人的做法,因为训练的时候已经拿到了后2年的数据,用这样的模型再来预测后2年的走势是不科学的。这种做法也属于间接偷窥数据的行为。直接偷窥和间接偷窥数据的行为都是不科学的做法,并不能表示训练的模型有多好。

还有一个偷窥数据的例子,比如对于某个基准数据集D,某人对它建立了一个模型H1,并发表了论文。第二个人看到这篇论文后,又会对D,建立一个新的好的模型H2。这样,不断地有人看过前人的论文后,建立新的模型。其实,后面人选择模型时,已经被前人影响了,这也是偷窥数据的一种情况。也许你能对D训练很好的模型,但是可能你仅仅只根据前人的模型,成功避开了一些错误,甚至可能发生了overfitting或者bad generalization。所以,机器学习领域有这样一句有意思的话“If you torture the data long enough, it will confess.”所以,我们不能太“折磨”我们的数据了,否则它只能“妥协”了~哈哈。

在机器学习过程中,避免“偷窥数据”非常重要,但实际上,完全避免也很困难。实际操作中,有一些方法可以帮助我们尽量避免偷窥数据。第一个方法是“看不见”数据。就是说当我们在选择模型的时候,尽量用我们的经验和知识来做判断选择,而不是通过数据来选择。先选模型,再看数据。第二个方法是保持怀疑。就是说时刻保持对别人的论文或者研究成果保持警惕与怀疑,要通过自己的研究与测试来进行模型选择,这样才能得到比较正确的结论。

四、Power of Three

本小节,我们对16节课做个简单的总结,用“三的威力”进行概括。因为课程中我们介绍的很多东西都与三有关。

首先,我们介绍了跟机器学习相关的三个领域:

  • Data Mining

  • Artificial Intelligence

  • Statistics

我们还介绍了三个理论保证:

  • Hoeffding

  • Multi-Bin Hoeffding

  • VC

然后,我们又介绍了三种线性模型:

  • PLA/pocket

  • linear regression

  • logistic regression

同时,我们介绍了三种重要的工具:

  • Feature Transform

  • Regularization

  • Validation

还有我们本节课介绍的三个锦囊妙计:

  • Occam’s Razer

  • Sampling Bias

  • Data Snooping

最后,我们未来机器学习的方向也分为三种:

  • More Transform

  • More Regularization

  • Less Label

五、总结

本节课主要介绍了机器学习三个重要的锦囊妙计:Occam’s Razor, Sampling Bias, Data Snooping。并对《机器学习基石》课程中介绍的所有知识和方法进行“三的威力”这种形式的概括与总结,“三的威力”也就构成了坚固的机器学习基石。

整个机器学习基石的课程笔记总结完毕!后续将会推出机器学习技法的学习笔记,谢谢!

注明:

文章中所有的图片均来自台湾大学林轩田《机器学习基石》课程

关注公众号并输入关键字“jspdf”获得该笔记的pdf文件哦~

更多AI资源请关注公众号:红色石头的机器学习之路(ID:redstonewill)

台湾大学林轩田机器学习基石课程学习笔记16(完结) -- Three Learning Principles相关推荐

  1. 台湾大学林轩田机器学习基石课程学习笔记3 -- Types of Learning

    红色石头的个人网站:redstonewill.com 上节课我们主要介绍了解决线性分类问题的一个简单的方法:PLA.PLA能够在平面中选择一条直线将样本数据完全正确分类.而对于线性不可分的情况,可以使 ...

  2. 台湾大学林轩田机器学习基石课程学习笔记13 -- Hazard of Overfitting

    红色石头的个人网站:redstonewill.com 上节课我们主要介绍了非线性分类模型,通过非线性变换,将非线性模型映射到另一个空间,转换为线性模型,再来进行分类,分析了非线性变换可能会使计算复杂度 ...

  3. 台湾大学林轩田机器学习基石课程学习 笔记资料汇总

    笔记: 红色石头的专栏(写得非常好) 课后练习: 機器學習基石(Machine Learning Foundations) 机器学习基石 课后习题链接汇总 https://download.csdn. ...

  4. 台湾大学林轩田机器学习基石课程学习笔记1 -- The Learning Problem

    红色石头的个人网站:redstonewill.com 最近在看NTU林轩田的<机器学习基石>课程,个人感觉讲的非常好.整个基石课程分成四个部分: When Can Machine Lear ...

  5. 台湾大学林轩田机器学习基石课程学习笔记15 -- Validation

    红色石头的个人网站:redstonewill.com 上节课我们主要讲了为了避免overfitting,可以使用regularization方法来解决.在之前的EinEinE_{in}上加上一个reg ...

  6. 台湾大学林轩田机器学习基石课程学习笔记11 -- Linear Models for Classification

    红色石头的个人网站:redstonewill.com 上一节课,我们介绍了Logistic Regression问题,建立cross-entropy error,并提出使用梯度下降算法gradient ...

  7. 台湾大学林轩田机器学习基石课程学习笔记10 -- Logistic Regression

    红色石头的个人网站:redstonewill.com 上一节课,我们介绍了Linear Regression线性回归,以及用平方错误来寻找最佳的权重向量w,获得最好的线性预测.本节课将介绍Logist ...

  8. 台湾大学林轩田机器学习基石课程学习笔记8 -- Noise and Error

    红色石头的个人网站:redstonewill.com 上一节课,我们主要介绍了VC Dimension的概念.如果Hypotheses set的VC Dimension是有限的,且有足够多N的资料,同 ...

  9. 台湾大学林轩田机器学习基石课程学习笔记7 -- The VC Dimension

    红色石头的个人网站:redstonewill.com 前几节课着重介绍了机器能够学习的条件并做了详细的推导和解释.机器能够学习必须满足两个条件: 假设空间H的Size M是有限的,即当N足够大的时候, ...

  10. 台湾大学林轩田机器学习基石课程学习笔记5 -- Training versus Testing

    红色石头的个人网站:redstonewill.com 上节课,我们主要介绍了机器学习的可行性.首先,由NFL定理可知,机器学习貌似是不可行的.但是,随后引入了统计学知识,如果样本数据足够大,且hypo ...

最新文章

  1. C语言试卷终稿,C语言试卷终稿B1.doc
  2. 如何在Rancher 2.2 Preview2上部署和管理多K8s集群应用
  3. rocketMq指定broker ip地址,适合解决云主机部署问题
  4. Redis实战(12)订阅和发布消息
  5. 去年3545款恶意App遭下架
  6. 【正一专栏】梅西!梅西!梅西!
  7. 记录qt窗口在拖动过程中出现的问题
  8. 阿里云、百度云被约谈 督促落实防范治理电信网络诈骗
  9. 一直当菜鸟吧!——关于全局变量
  10. 运用Unity结合PolicyInjection实现拦截器[结合操作日志实例]
  11. 互盾科技:智慧源于勤奋,伟大出自平凡
  12. 开发一款游戏需要什么技术
  13. 【华为电脑管家】打开多屏协同会自动修改微软拼音输入法兼容性的解决方案
  14. Discom BKS03/KS91D传感器
  15. speedoffice(Excel)表格怎么设置文字自动换行呢?
  16. 为分布式做准备吧——调用链原理
  17. 图形学变换——平移、旋转和缩放
  18. 解决:SCRIPT5011: Can't execute code from a freed script
  19. .sync修饰符的原理和使用
  20. 树形菜单html5新特性,HTML5 details/summary树形菜单效果 » 张鑫旭-鑫空间-鑫生活

热门文章

  1. bi数据分析工具有哪些?
  2. 自己动手编写CSDN博客备份工具-blogspider之源码分析(1)
  3. python 统计英语文档词汇出现频率,以六级真题为例
  4. 力扣刷题 DAY_76 贪心
  5. 如何去到Jquery官网下载Jquery
  6. C语言表达式语法分析——递归子程序法
  7. 固态硬盘打开计算机就死机,SSD固态硬盘死机卡顿无响应怎么办?SSD卡顿故障处理教程 | 麦田一棵葱...
  8. ROS 发布消息和订阅消息 for Python
  9. TFT-LCD显示屏工作原理图文解析
  10. 【Swift】文档分享到其他应用