很多人觉得“模型”、“大数据”、“机器学习”这些字眼很高大很神秘,事实上,它跟我们生活中选水果差不了多少。本文用了几千字,来试图教会大家怎么选芒果...

模型的比喻

芒果.jpg假如我要从一批芒果中,找出好吃的那个来。而我不能直接切开芒果尝尝,所以我只能观察芒果,能观察到的量有颜色、表面的气味、大小等等,这些就是我们能够收集到的信息(特征)。

生活中还要很多这样的例子,比如买火柴(可能年轻的城里人还没见过火柴?),如何判断一盒火柴的质量?难道要每根火柴都划划,看看着不着火?显然不行,我们最多也只能划几根,全部划了,火柴也不成火柴了。当然,我们还能看看火柴的样子,闻闻火柴的气味,这些动作是可以接受的。

我们可能会发现,黄色的、大个的芒果会很甜,可是也发现,有些不怎么黄的、小个的也很甜,那么,颜色、气味、体积这些特征,究竟分别占多少比例呢?如果我能够找出这个比例,那么就找出了一个预测芒果好不好吃的方法。火柴的例子也一样,我们可以划几根,看看哪些是能够点着的,然后总结出一个不用划就能预测能不能着的方法。

模型做的就是这样一个事情。我们先找出一批芒果(样本),记录它的特征(颜色、气味、体积等),然后让人尝尝,并且评价出哪个好吃,哪个不好吃。于是乎,我们就可以根据这批样本,总结出颜色、气味、体积各占多少比例。这个总结的过程,是机器自己在做的。

做完之后,我们就得到了一个预测芒果好不好吃的模型,这有点像黑箱子,以后把颜色、气味、体积等数据代进去,就可以算出好吃的概率。

模型的意义

从以上的比喻,可以看出模型最重要的意义,是解决了两个问题:

1.“一刀切”

“一刀切”应该是让我们很痛心疾首的做法,像在中学,老师不问三七二十一就给我们“判了死刑”,这种简单粗暴的做法便是典型的“一刀切”了。“一刀切”的做法具有一定的准确率,但并非所有问题都可以“一刀切”解决,相反,“一刀切”往往还把“优良品种”给切错了!

比如我要在班上找出成绩好的学生好,我们自然会想到学习成绩跟花在学习上的时间成正比,所以我们认为“每天学习时间大于5小时”就是成绩好的人。这就是“一刀切”的做法。可是明明就有些人,天资聪颖,或者学习方法效率高,他每天花一个小时,成绩就很优秀。这样的人,就被我们“切死”了,而且显然,切死的还是优良品种。

2.自动学习

水果.jpg还是从芒果的例子出发。如果我们凭借“多年来的经验”,就算不用模型,也摸索出了一套判断好吃芒果的方法。可能此时人们就会说“你们的模型有什么了不起,我们自己就可以做得很好。”可是,假如我现在不想吃芒果了,我想吃橘子,我想吃葡萄,那么我们又怎么预测橘子、葡萄的好吃程度呢?我们总不能等很多年以后,再来积累荔枝、苹果的“多年经验”吧?耗时尚且不说,也耗费人力。

当然,可能别人有橘子、葡萄的相关经验,我们可以向他们请教。但是请教是有成本的,大家想想到处肆行的各种收费培训活动就是了。

模型正好解决了这个问题,它允许我们从一批已经有的样本出发(不管是芒果、苹果还是荔枝),自动地、机器地“总结”(这个过程称为学习)出一套判断方法来。由于学习都是机器在做,对于我们就省事省力了。我们只需要泡杯茶,坐等模型结果出来,再看看模型结果好不好就行了。这总比我们自己去学习、总结,然后再判断自己的学习效果更好吧?

模型的做法

要做好一个模型,通常来说有以下步骤:

1.准备样本

样本就是我们用来学习的那一批“芒果”样本。

事实上,模型的建立过程跟人类的学习过程是很类似的。如果交给人类来做,我们肯定会先拿来一部分芒果,然后记录它们的颜色、大小、气味等特征,然后把它们都切开尝尝,看看哪个酸哪个甜,最后总结出规律来。

对于模型来说,模型代替了人类总结的过程,也就是最后一步。前面的准备过程,还是需要我们来完成的。我们要自己尝一批芒果,记录那批芒果的信息,然后把这些信息都输入模型中,模型就能够自动学习好,学习好之后,就能够用这个模型来预测新的芒果味道了。

准备样本,意思是要准备好的样本和坏的样本,换句话说,你要找一批好吃的芒果来,记录它的特征,你也要找一批不好吃的芒果来,记录它的特征,然后把这些信息都告诉模型,模型才能自动学习。在这个过程中,人类做的是记录员的角色。

2.准备特征

特征就是和判断结果有关的一些变量,是模型预测的基础。

简单来说,特征就是芒果的好吃与否跟什么有关的“什么”,如果我们觉得芒果的好吃程度跟芒果的大小、颜色、气味有关,那么“大小”、“颜色”、“气味”就是模型的特征,当然,前提是把这些信息数量化。

特征有好坏之分,好的特征可以帮助模型作出正确的预测,而坏的特征至少无益于预测。比如,在哪棵树摘的芒果、在星期几摘的芒果,这大概都不是什么好的特征的,也就是说这些信息通常来说并不能帮助我们判断芒果的好吃程度。(注意是“通常来说”,并不是绝对的。也许A树摘下来的芒果确实都比B树的好吃也说不定。)

好的特征对模型是至关重要的,可以说,寻找好的特征(不管是人工寻找还是机器寻找),是模型中最重要的部分。一个好的数据研究员在建模的过程中,应当把主要的精力放在特征的选取上;然而,现在多数研究员往往走向了误区,他们把大量的精力放到了模型上面(也就是第3步)。

3.准备模型

准备模型其实就是选择模型,也就是用什么模型来学习。这好比人有不同的学习方法、学习经验,究竟选取怎么样的方法去学习一样。

在真正的机器学习领域中,模型有相当多了,比如分为线性模型和非线性模型,线性模型有逻辑回归、SVM等,非线性模型有随机森林、GBDT、神经网络等等。对于模型来说,一般有以下几点需要清楚:

(1)模型不是最重要的
事实上,建模过程中最重要的一块是特征的选取,选取了正确的特征,模型之间的效果相差不会太大,因此,不要把大部分精力放在模型的选取上;

(2)防止过拟合
过拟合是一个比较难以察觉的现象,总的来说,就是得出来的模型,在样本内的测试效果表现非常好,而在实际应用中却一塌糊涂。防止过拟合的通常方法是设置一定的正则系数(即惩罚函数),或者设置较小的深度(决策树相关的模型);

(3)尽量用线性模型
非线性模型,如GBDT一般效果比较好,但是也更加容易过拟合,因此,如果非线性模型的效果不是比线性模型好很多的话,尽量用线性模型,因为这样的模型稳定性更好。这样的理念实际上符合了这么一个奥卡姆剃刀定律:“如无必要,勿增实体。”

最后的最后

当然,不论怎样都需要强调:模型是有用的,但是模型不是万能的,也不是最重要的。不要迷信模型,而丧失了我们自己的主观能动性。模型可以说是一件艺术品,前提是——你是一位艺术家。


转载到请包括本文地址:http://spaces.ac.cn/archives/3390/

如果您觉得本文还不错,欢迎点击下面的按钮对博主进行打赏。打赏并非要从中获得收益,而是希望知道有多少人曾在科学空间驻足。当然,如果你无视它,也不会影响你的阅读。再次表示欢迎和感谢!