【转】通过身边小事解释机器学习是什么?
一个给不知道机器学习是什么东西的人讲的一个挺不错的例子,方法。
今天从quora上看了一个问题:如何给不是CS的学生,给不知道机器学习和数据挖掘的学生,讲明白什么是机器学习和数据挖掘。
其中有个答案很不错,拿买芒果的例子来给大家解释。老师们也应该多用用类似的一些例子,启发下学生的思考。
买芒果
有一天,你想吃芒果了,你就到地边的小摊上去买芒果,小摊上有好多芒果啊,你可以自己用手挑芒果。跳完之后,摊主会给你称称,多少斤?根据重量来付钱。
买芒果嘛,你只要不是重口味或者口味独特,还是选择最甜的,熟透了的芒果。因为你是根据重量来付钱的,又不是根据甜的程度或者熟了的程度,虽然摊主有时候会把好的芒果挑出一堆来单独涨价,但是这里这个摊主没这么做。
你奶奶曾经告诉你说,买芒果要买金黄色的,黄橙橙黄灿灿的,这样的最甜,不要买那些浅黄色的,那些还没熟。
好吧,这样你就有了一点经验,虽然这点经验是别人直接教给你的:买芒果,就买金黄色的。你在小摊上,挑了些金黄色的,过磅付钱,回家。这事就这么完了?别急,下文。
生活没那么简单
你回家,高高兴兴吃芒果,但是你发现,并不是每个芒果都那么甜,有部分不甜啊。唉,老奶奶的经验还是不足啊,虽然吃的盐比我走的路多,但是只通过颜色判断芒果甜不甜,不是很靠谱。
你回忆回忆看看到底什么样子的芒果甜?好像是又大又金黄色的比较甜,那些小点的金黄色的芒果,得有一半是不甜的。(买了100个金黄色的芒果,有50个大的,都是甜的;另外有50个小的,其中有25个是不甜的。)
嗯,你总算总结出来一条经验规则了:大的金黄色的是最甜的,哈哈。你又高高兴兴的去买芒果。Shit,你熟悉的、你信得过的那个摊主走了。所以你得 换一个小摊买芒果了,但是新的摊主的芒果是产自不同的地方,你之前总结的经验可能不行了,你不知道能不能迁移过去(transfer learning),于是你从头再开始尝试吧,发现这里小的,浅黄色的是最甜的!
一天,你表妹来找你玩,想吃芒果,但是她不在乎甜不甜,她喜欢吃多汁的。唉,以前的经验又不顶用了。你只能进行新的一轮实验,目标就是多汁的芒果(优化目标变了)。你又总结出,越软的越多汁。
你出国了读PhD,这里的芒果跟你家乡的差不太大了,这里绿色的最好吃。PhD毕业后,你结婚了,老婆不喜欢吃芒果,喜欢吃苹果。你积累的丰富的挑选芒果的经验规则都不行了,或许有些你可以transfer过去。你不得不从头再开始一轮一轮的实验尝试,看看苹果的一些特征跟好吃不好吃的关系如何?虽 然这个过程很枯燥,但是你去做了,因为你爱她。
规则列表
你想把如何挑选芒果(苹果)的这些东西用程序实现出来,这样在电脑上,甚至用你的手机扫描一下,就能自动挑选出很多好吃的芒果。因为你积累了一些规则,可以这么实现:
if (color is bright yellow and size is big and sold by favorite vendor): mango is sweet.
if (soft): mango is juicy.
etc.
但是你想啊,这些规则越来越多的话,特征之间的组合啥的就越来越麻烦了,管理、使用都很麻烦。包括写程序实现啊,谁会笨到写这么多If Then。
机器学习
机器学习算法是普通算法的进化,更加聪明和自动。看如何把选芒果的问题定义成标准的机器学习问题吧。
随机的选择了一个市场上的芒果,作为要研究的目标(training data)。你可以用一个表格描述芒果属性和类型的关系,每一行可以放一个芒果的数据,包括芒果的物理属性(feature):颜色、大小、形状、软硬度、产地,等等,还有这么芒果的类型(output variables):甜度、成熟度、多汁度。然后这就是一个多分类问题,或者回归问题,自动的从数据中学习出特征与芒果类型的各种关系等。
如果你用决策树算法,那么这个模型的样子就是你的规则库了;当然你可以使用其他模型,例如线性模型,这样就是特征的线性组合了。
下次你去市场,采集了一个芒果的各个指标特征,扔进你的模型,模型告诉你这个芒果是什么类型的?熟的?多汁的?
各种方法
甚至你的选择芒果的模型,稍微变化下就可以选择苹果了,迁移学习。
甚至你的模型会随着新的样本、新芒果种类进来后,变的越来越好,增量学习。
。。。。。
有点知道机器学习什么事了么?