机器学习|刘博士谈机器学习--开篇

序言

:漫谈机器学习

"

从这篇开始,我将开始撰写一系列机器学习相关的文章。我的研究方向是数据挖掘,主要使用统计建模的方法,对于机器学习,我也是入门不久,算是初窥门径。我希望通过这种新媒体的方式,用一些短小精练的文章,和你们分享我对机器学习的理解和认识,特别是我在解决实际数据问题时的思维。你们可以把我的文章看作是对于市面上优秀教材(比如周志华教授的西瓜书)的一个注释,当你理解我的思想时,不论你同意或不同意,我相信,你会对机器学习有更加深入的了解。

"

在这一篇文章,我想和你们形而上地聊一聊机器学习,算是这个系列文章的一个序言吧。

一、

上周四的研究生课上,我在讲完支持向量机后,问了学生一个问题:机器学习是用来干什么的?没有学生回答我,场面一度很尴尬。这个结果并不好。学习一门课程,一定要理解这门课程的用处。特别是对于非数学以及非计算机专业的学生,本身在理论模型和编程上已经不具备先天的竞争优势,那么理解机器学习的用途、并针对企业运营构建合适的机器学习算法应用场景,可以当作自身的一个竞争力。但前提是,要懂机器学习是用来干什么的。

想一想机器学习早期的一个经典应用:垃圾邮件判别。应用背后,是一个机器学习模型,该模型会分析过往你所接收的邮件域名、标题、发件人地址等,判断该邮件是不是垃圾邮件或者恶意邮件,如果是,则直接删除。你肯定也遇到过这样的场景,就是当你浏览完某个景点的游记后,在新打开的网页的广告栏处,恰好是你刚刚浏览的景点在携程上的酒店信息。显然,你的浏览记录已被该网站获取,并通过机器学习模型,判断你可能要去旅游,从而为你推荐携程的广告,增加广告点击率。所以,我认为,机器学习的主要用途,是判断。除了上述场景,还包括,零售商判断产品销量、证券从业者判断股票涨跌、银行判断客户是否违约、教练判断球员是否可以上场等。只要和判断有关,又有足够多的训练样本,机器学习是一个可以被考虑的工具。

二、

如果你同意我说的,机器学习,目的在于判断,那么为什么这个学科,不直接叫做机器判断,而叫做机器学习呢?

去年冬天,我在美国的Coach店里,为了享受折扣,注册了它的会员,并留下了我的邮箱。在那之后,每当夜晚来临的时候,Coach总会给我发来一封邮件。一开始,我还打开看一看,在连续几封都是促销内容后,我再也不看了,每次都是直接删除。我为什么可以看也不看,就可以判断它一封毫无价值的广告邮件呢?很明显,我掌握了一个知识:Coach发的都是广告邮件。我以为,知识,是判断的基础;而知识,是通过学习获得的。显然,如果机器,也能够掌握这样的知识,它也可以做出和我一样的判断。

人非圣贤,岂能生而知之;机器也一样。机器需要通过学习来获取支撑判断的知识。和人相比,机器学习有优势,也有劣势。优势是,机器具有人所不能比拟的存储和计算能力;劣势是,机器有自己特殊的语言和逻辑,需要为其设计专门的学习方法。

三、

机器如何学习?

首先想一下,我们是如何学习的?虽然正在读这篇文章的你已经具有了自主学习的能力,但在我们小时候,主要是靠家长或者老师来教的。你可以把机器当作一个孩子,把机器学习的算法比拟成教学方法,把数据看作是教材。我们常可以看到,接受不同教育的孩子,其未来发展是不同的。类似的,不同的算法和不同的数据也会导致机器在面对同一个问题时,具有不同的学习速度(快或慢)和学习结果。

举一个非常简单的例子。大家都知道,一颗骰子,如果点数超过3,则是大,如果小于或等于3,则是小。这是一个简单到极致的判断问题。

我们可以写一个算法,即当输入x小于或者等于3时,输出y=0(我们这里让y=0代表结果“小”);否则,输出y=1。这个算法就是一个if else语句罢了。但是,它的效果如何呢?对于我们刚才的例子,这个算法完全没有问题,机器可以使用这个算法做出正确的选择。

但是,假设赌场不玩六面的骰子,开始玩8个面的。点数超过4,则是大;点数小于或者等于4,则是小。那刚才那个算法,就不对了。我们可以再写一个算法,让机器在面对八面骰子的时候:输出y=0,如果输入x小于或者等于4;否则,输出1。但这两个算法,在碰到又一个新骰子的时候,又会失效。这就好像是我们教小孩子,只让他简单记住规则,不能够举一反三,这属于填鸭式的教育。

你可以考虑这样一个算法:当点数比最大点数的1/2还大点时候,就输出y=1;否则输出y=0。这样一个算法,在面对6面骰子和8面骰子的时候,都可以做出有效判断,可是这个算法没有学习的能力。比如有一天,你身处赌场,荷官掷出6面骰子,点数是4;这时根据以往的知识,你肯定以为这是大,但结果荷官,说4点是小。那这个时候,你大概会有两个想法:1. 你的知识没错,这个荷官出错了;2. 这个赌场没问题,可能规则变了。这两个想法孰轻孰重,影响了你之后再次看到4点时的判断。但从另一个角度来说,如果你之后可以再次看到荷官把4点当作是小,那么就会加深你对于想法2的倾向;否则,就会加深你对想法1的倾向。你通过不停地观测,来修改或补充自己知识的过程,就是一个学习的过程。

我们希望在机器上重复上述的学习过程。在判断大、小的时候,一个关键的参数是阈值,究竟点数小于几才是小。我们用一个数字,比如t(threshold的第一个字母)来代表这个阈值,然后,机器判断大小的方法是:当x-t>0时,y=1;否则,y=0。我们有个先验的知识,就是x比3大,y=1。所以,t可以是3到4(但是不能等于4)之间的任意值。我们也知道,点数都是整数,所以,就让t=3。如前所说,有一天,一个荷官表示点数4也意味着y=0。这相当于是给机器输入了一个数据(4, 0)。可是我们知道,机器会把这个点判断为(4, 1),那么在这个数据上,它犯了错。那么如何弥补这个错误呢?或者如何再面对错误的时候,调整参数来防止未来再犯错误呢?当机器判断为(4, 1)而实际是(4, 0)时,意味着,阈值可能选低了(现在的阈值是3,如果阈值是4,那么这个错误不会犯),因此这个错误是让我们调高阈值。对于机器,我们定义这样一个学习过程,当把应该是0点判断为1时(你自己想一下是什么导致的),这时的错误时0-1=-1,我们让t增长1。令y’为机器的判断,y为实际结果,我们令错误e=y-y’,而后令t=t-e。你看,这样一个简单的算法,就是说,每当机器看到一个新的x以及与其相应的y后,它就可以根据这个算法调整t。这个算法,已经具有了神经网络的基本性质。

通过这个例子,我特别说明,在赋予机器学习的能力之前,我们首先要思考相关问题的学习过程,然后把我们的思维以程序语言的形式,写入机器中。所以,我总是在课上强调,就目前的人工智能环境下,机器并无思考能力,从而我们对问题对思考方式就非常重要。思考方式,或者说解决问题的思考方式,不全在计算机学科中,许多解题的思考方法是从数学、心理学、经济学中得来的。所以,不要以为你们不是计算机背景,就不可以进入这个行业,每个专业都会训练人的思维。

四、

现在,你可能还对那个骰子的例子有些疑惑。如果之前骰子的结果都是小于3,即0,大于3,即1,这里突然看到(4, 0),就把t调整到4,会不会太草率。因为这可能是荷官犯的个人错误,若此后他不再犯错,x=4又再次意味着y=1。

的确是有可能太草率。为了说明这个草率的问题,我把用来训练参数t所使用的数据称之为训练集,假设训练集包括11个观测:(1, 0), (2, 0), (1, 0), (3, 0), (6, 1), (5, 1), (6, 1), (4, 0), (5, 1), (2, 0), (3, 0)。在训练之前,我们假定阈值t的初值是0(你当然可以假定它是3,如果t=3是你的先验知识)。那么你用我在第三节,倒数第二段说的算法,你会发现t最终结果是4。但是,这里值得质疑,因为数据里,骰子只有一次是点4,这个点的结果可能是荷官搞错了,也就是说这个数据不能反映真实情况。记住:这个世界充满了随机性,数据里可能存在着很多错误的、或者不可解释的观测。那么,我们是不是要让算法尽可能满足训练集的每一个观测呢?绝大多数时候,答案是不。因为,尽可能满足数据的所有观测会导致一个叫做“过拟合”的结果。比如,这里为了迎合(4, 0)这个点,t的结果是4。(4,0)这个点,依据我们的生活经验,八成是错的,但仍然有概率是对的。所以,我们可以改改这个学习算法,用这样一种思维:当一件事情被强调两遍时,我们就认为这件事是对的,从而让算法适应它。具体算法如何,这里不说了,你们可以留言。

这篇文章,就言尽于此,用一句话总结:机器学习的方法源于我们对问题的思考

实际上,我这篇文章早就该写完,秦教授是我师兄,也是这个公众号的运营者,一直催着我要文章的稿件。我写了好几版,始终觉得自己的论述有值得推敲的地方。思来想去,易稿又易稿,却在今晚终于想清楚,既然我所谈论的机器学习,本身就是一个不停试错而后成长的过程,那么我还坚持写出一篇挑不出错的文章,实在是着相了。于是,我在今天把此文发出来,希望读者能多给批评,我也好提高后续文章的水平。

生命是一条川流不息的河流,我们,都是那个渡河的人。

(向上滑动查看内容)

附言1:后续的文章,会分问题介绍机器学习的各个方法,尽量用自然语言,而不是数学或者编程语言(我知道这很难),我会在公众号,哈希大数据,发布后续的文章。你们可以搜索关注,也可以在我师兄的公众号,数据魔术师,看转载。我和我师兄,不分彼此。

附言2:我的文章,只能帮你入门,登堂入室,还得靠你进行大量阅读和尝试。这天底下,不靠天赋,不靠颜值,不靠父母,还能够让自己变的有魅力的方法,无非是学习。如果你希望在数据分析方面获得更好的发展,那就去努力吧。

原文发布于微信公众号 - 数据魔术师(data-magician)

原文发表时间:2018-05-16

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏CDA数据分析师

真正统治世界的十大算法,你知道吗?

本期责编:Sophie 文|Marcos Otero 译|伯乐在线 - Justin Wu 不久前的某一天,我在浏览Reddit发现了一篇有趣的文章《统治世界的...

2668
来自专栏企鹅号快讯

数据挖掘中的十大实用分析方法

1.基于历史的MBR分析 基于历史(Memory-Based Reasoning)的MBR分析方法最主要的概念是用已知的案例(case)来预测未来案例的一些属性...

2236
来自专栏张红林的专栏

机器学习入门书籍简介

在AIclub看到一篇机器学习入门的文章,回想自己磕磕碰碰走过的弯路,颇有感触,因此对自己从懵懂到稍稍入门过程中看过的教程做一个简单的介绍,希望帮到后来人。

4.5K3
来自专栏新智元

【独家】朱凯华:智能搜索和对话式OS最新技术全面解读(65PPT)

【新智元导读】百度度秘事业部首席技术官朱凯华日前在上海计算机学会做了题为《AI赋能的搜索和对话交互》的报告,主要介绍了现在的百度搜索及度秘“DuerOS”系统。...

6366
来自专栏大数据挖掘DT机器学习

R语言学习路线和常用数据挖掘包

对于初学R语言的人,最常见的方式是:遇到不会的地方,就跑到论坛上吼一嗓子,然后欣然or悲伤的离去,一直到遇到下一个问题再回来。当然,这不是最好的学习方式...

3586
来自专栏AI科技大本营的专栏

eBay数据科学家李睿:自然语言处理在eBay的技术实践

记者|谷磊 近日,在飞马网主办的“FMI人工智能&大数据高峰论坛”上,来自eBay的数据科学家李睿博士以“NLP(自然语言处理)在eBay的技术实践”为题做了主...

4579
来自专栏挖掘大数据

10种受欢迎的数据挖掘的实用分析方法

数据挖掘又称数据库中的知识发现,是目前人工智能和数据库领域研究的热点问题,本文将介绍数据挖掘中十种实用分析方法。

1995
来自专栏量化投资与机器学习

【Matlab量化投资】GFTD指标程序化实现(附源码)

广发证券很早出过两篇研报。一篇名叫《基于修正 TD 指标的指数择时研究》、一篇名叫《基于GFTD的期指日内程序化交易策略》。今天编辑部就给大家进行实现。基于 M...

4308
来自专栏钱塘大数据

人工智能、区块链、算法...这30个大数据热词你知道吗?

2017年,我国大数据产业保持高速发展态势,各级政府和企业大力推进,技术创新取得明显突破,大数据应用推进势头良好,产业体系初具雏形,支撑能力日益增强。展望201...

6225
来自专栏量子位

最高76%破解成功率!GAN已经能造出“万能指纹”,你的手机还安全吗?

如果有一种特殊的指纹,可以和绝大多数人的指纹对上号,大概率破解身边的几乎所有的指纹锁,会发生什么?

1104

扫码关注云+社区

领取腾讯云代金券