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

序言

:漫谈机器学习

"

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

"

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

一、

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

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

二、

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

去年冬天,我在美国的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 条评论
登录 后参与评论

相关文章

来自专栏机器之心

业界 | CMU和谷歌联手研制左右互搏的对抗性机器人

选自IEEE Spectrum 机器之心编译 作者:Evan Ackerman 参与:蒋思源、Smith CMU 和谷歌研究者正在使用基于博弈论和深度学习的对...

32810
来自专栏新智元

【免费】5本机器学习电子书推荐(附简介与下载)

【新智元导读】 这五本精心挑选的电子书,可以帮助你更全面地了解机器学习,掌握进入这个行业必备的技能。 需要注意的是,虽然有关机器学习的免费电子书成千上万,而且其...

3419
来自专栏AI研习社

机器学习应该准备哪些数学预备知识?

原题目如下: 机器学习应该准备哪些数学预备知识? 数据分析师,工作中经常使用机器学习模型,但是以调库为主。 自己一直也在研究算法,也裸写过一些经典的算法。 最...

4206
来自专栏PPV课数据科学社区

23种深度学习库排行榜:TensorFlow最活跃、Keras最流行、

我们对23种用于数据科学的开源深度学习库作了排名。这番排名基于权重一样大小的三个指标:Github上的活动、Stack Overflow上的活动以及谷歌搜索结果...

4085
来自专栏鸿的学习笔记

Machine Learning at Quora(简要版)

自从我一年前加入Quora,我一直在谈论在这里的所有的非常有趣的关于机器学习的挑战。然而,当我上周参加并在MLConf发言时,我很惊讶,许多和我谈过的人仍然没有...

702
来自专栏鸿的学习笔记

Machine learning at Quora(下)

上述的个性化排名已经是推荐系统的一种形式了。例如,流行的Quora电子邮件摘要包括已选择并为您推荐的故事集合。 这是一个不同的learning-to-rank模...

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

一战成名,用户贷款风险预测 参赛代码与数据集分享

队伍名“一战成名” 最终线上排名第七。 ? 任务 融360与平台上的金融机构合作,提供了近7万贷款用户的基本身份信息、消费行为、银行还款等数据信息,需要参...

4787
来自专栏华章科技

机器学习工作职位需要的7项技能

机器学习经常与人工智能紧密相连,在不考虑显式编程的情况下,机器学习可以使计算机具备完成特定任务的能力,例如识别,诊断,规划,机器人控制和预测等。它往往聚焦于算法...

522
来自专栏专知

张翼英:一点论文写作心得

【导读】论文是硕士博士必修之关。我们转载一篇来自张翼英老师的论文心得文章! 本文来自张翼英科学网博客。 链接地址:http://blog.sciencenet....

3277
来自专栏机器学习算法全栈工程师

机器学习模型,能分清川菜和湘菜吗?

一个地区的文化和当地的特色食物总是分不开关系,可以说小到村庄,大到国家,每个地方都有自己的“味道”。

663

扫码关注云+社区