# 《指导生活的算法》3:数学家告诉你为什么难得糊涂

![](https://piccdn3.umiwi.com/img/201611/28/201611281714197658964397.jpg)

咱们先来设想一个场景。一个会议室里坐满了人，正在做报告的年轻人西装笔挺，头发梳得一丝不苟，PPT上列满了数据和图表，他正在论证一个什么东西。

年轻人讲了很多很多，可是台下听报告的一个穿着随意的大佬，有点不耐烦了：“你不用说那么多，我就问你几个问题。”

大佬问了几个问题，年轻人马上被难住，于是大佬否决了年轻人的整个提案。

我们对这个场景并不陌生。可能这是一次公司例会，也可能这是一次论文答辩。在一线做事儿的人用了很多很多精力专注于各种细节，可是大佬们想问题却往往是写意的 —— 他们三言两语就能发现问题的关键，并以此作出决策。然后事实证明大佬说得对。

这就引出了一个问题。有些人做过大量功课，掌握了丰富数据和资料，为什么他们的决策水平，反而不如大佬短短时间内的快速判断？难道说，对一个问题思考得多，反而可能没好处吗？

这个问题，数学家也早就想明白了。如果你的模型涉及到决策判断和预测未来，那么精确写实往往不如粗略写意。事实上，你的模型越写实，你的最终效果反而可能越差！数学家，管这个叫做“过度拟合”。

今天我们继续说Algorithms to Live By: The Computer Science of Human Decisions （指导生活的算法：人类决策中的计算机科学）这本书，作者是Brian Christian 和Tom Griffiths。 

“ 过度拟合 ”这个词听起来可能有点陌生，非常技术化，可是我觉得这个概念实在是太重要了，每一个决策者和思考者都应该了解。什么叫过度拟合呢？ 

## 1.过度拟合

我们先来看看下面这组数据。这张图是对已婚德国人调查统计的结果，说的是人们在结婚以后，生活满意度随着时间的变化。曲线上有10个点，对应结婚第1年到第10年的数据。 

![](https://piccdn3.umiwi.com/img/201611/28/201611281724188474847516.jpg)

我们看刚结婚第一年人们的生活满意度很高，而第二、第三年则持续下降，到第四年又有所回升……后面是一个波动的局面。

好，如果我们想要根据这10个点来预测人们结婚15年甚至20年之后的幸福度，应该怎么办呢？你就需要根据现有的10个点画出一条曲线，然后再把这条曲线按照原来的趋势延伸出去。画曲线发现趋势的这个动作，就叫“拟合”。

在数学上最简单的拟合就是多项式拟合。如果曲线只是时间的函数，那么一阶多项式，f(t)=a+bt，就是假设生活满意度只和时间的一次方有关。你也可以进行二阶多项式拟合，f(t)=a+bt+ct^2，也就是生活满意度不仅和时间有关，还和时间的平方有关。以此类推，你还可以考虑更高阶的多项式拟合。

拟合出来的结果，就是下面这张图。 

![](https://piccdn3.umiwi.com/img/201611/28/201611281725188757001133.jpg)

图中的直线代表的就是一阶多项式的拟合结果，还有一条断续折线表现的是二阶多项式的拟合结果。

如果按照一阶多项式的拟合结果往外推算，人们生活满意度就是按照相同的速度逐年下降的，这看起来似乎不太符合事实。二阶拟合的结果就好多了，下降一段，到了后期就比较平稳。但不管是一阶还是二阶，拟合出来的曲线和原始数据都存在偏差 —— 原始数据的点并没有落在拟合曲线上，这两个模型只能大致说明一个趋势，但是并不精确。

想要精确的结果，我们得用到九阶多项式拟合，也就是图中的实线部分。这条拟合曲线经过了原始数据上的每一个点！可是九阶多项式的预测结果非常糟糕！它说在结婚10年之后，你的满意度会突然下降！这几乎是不可能发生的现象。

这就是过度拟合。你的模型想要一丝不苟地反映已知的所有数据，它对未知数据的预测能力就会非常差。这是因为所谓的“已知”数据，都是有误差的！精准的拟合会把数据的误差给放大 ——拟合得越精确，并不代表预测结果就越准确，拟合得过度精确后反而结果更加糟糕。

所有搞数据分析的人都明白这个道理。在大数据和人工智能领域，过度拟合是个非常让人头疼的问题。数学家想了各种办法来判断什么时候出现过度拟合，以及怎么避免过度拟合。 

## 2.不要想太多

如果把原始数据随便改动一点点，而你这个模型的预测结果就会有很大的变化，那么你基本上就肯定是过度拟合了。一个好的模型不应该对数据如此敏感！

比如说，某公司选取一套数据，作为考核指标，来评估公司运行情况和激励员工。那么如果有人认为完成这些指标非常非常重要，以至于稍有不足就万分焦虑，那我们就可以说这个人已经是在过度拟合了。一个大公司，怎么可能因为一件小事而改变了整个未来的走向呢？

数据很重要，但今天的人似乎有点“数据崇拜”。过分重视各种考核指标，为了数据和指标而工作，纠结于各种细节，就可能顾不上真正重要的事情。

书中举了一个例子。有个大学老师，从事教学工作的第一年，备课非常细心，1个小时的课程他会用10个小时准备，教案和PPT无比详尽。到了第二年，他新开了一门课，可是因为工作太忙了，他并没有那么多的时间来备课，不得不简化仓促应对。他自己很焦虑，结果学生反而更喜欢新开的这门课。

他准备的时间短，效果反而更好。

这是为什么呢？其实第一年的课程看似准备得非常完美，但这只是老师自己眼中的完美，他有充分的考虑时间，就拼命往教案中加入各种细节 —— 其实从学生角度看，根本不得要领。第二年他没有那么多时间准备，就只能确保把最重点的内容放进去，结果学生一看反而简单明了。

其实每个人都可能会有类似的经历。一篇文章让你几个小时写完，内容就已经很不错了。非得让一个写作班子用上好几周的时间写，这文章里面必然加入各种不该有的细节。一个决策能抓住重点就很好了，非得考虑各种不重要的因素，最后往往做出错误的选择……这就是“长考出臭棋”。

数学家为了避免过度拟合，经常要人为地减少模型的复杂度。其实我们在生活中也有这样的机制！人脑看着不大，但是其能耗却占到整个身体的20%，这就是为什么我们想问题时间太长会感到很累 —— 而这其实是个好事儿，因为想多了反而不好。

我们在生活中思考问题，并不会随时参考大量的数据和图表，我们头脑中有很多快捷方式！比如说类比、成语典故和谚语，其实都是好办法。面临重大决策 ，有时候没必要考虑太多细节，还不如当场念两句诗。

1990年的诺贝尔经济学奖得主哈利·马可维兹（Harry Markowitz），他的主要贡献是提出了现代投资组合理论 —— 也就是说，给定了每种金融产品的预期回报和风险，你应该怎么把它们组合在一起，来让自己的投资利益最大化。这显然是个特别有用的理论。

有人就问马可维兹，你自己的退休金，使用了什么样的投资组合呢？马可维兹说“非常简单，一半买股票，一半买债券。”

这就是简单的力量。 

## 3.三个建议

我们小时候做数学应用题，通常都是题目给你多少个数据，你解题的时候就能用到多少个数据。而真实生活并不是这样的。我们在真实生活中往往会遇到很多很多的信息，而且还都是有误差的信息，你不可能像小学生做应用题那样把这些信息都用上。

诸葛一生唯谨慎，吕端大事不糊涂。想要避免过度拟合，你必须学会抓住重点，学会忽略掉一部分信息。

书中给了三个建议。

**第一，限定思考时间。比如一天之内必须完成报告，或者一小时之内必须结束会议。其实开会也好，写报告也罢，考虑的时间越长越无法保证效果，反而是在有时间限制的情况下， 你才会逼着自己去考虑最重要的因素。 **

**第二，限定内容长度。比如你可以要求属下写报告不能超过一页纸。如果一个方案无法用一页纸阐释清楚，你就应该干脆放弃这个方案。另一个办法是所谓“电梯谈话” —— 你想跟我谈一个商业计划，你最好能在电梯里面这点时间内说清楚你的方案。**

**第三，在白板上讨论商业计划，要使用粗的马克笔。最初的计划必须抓住重点！笔画越粗，对你的思维越有利，越能逼着你去考虑大局。如果你用圆珠笔，无形之中就会陷入关注细节的思维模式。**

每当预测未来和做计划的时候，我们都应该想想本文开头那张图 —— 最好的预测，就是在上面随手画一条很粗很粗的线。

最后咱们讲个达尔文的真实故事。达尔文曾经无法决定到底是不是应该结婚。他使用了当时流行的一个决策办法 —— 把日记本上的一面分成两半，在左边写下结婚的理由，右边列举不结婚的理由，看看哪边的理由充分。

达尔文列举得非常详细，比如其中一个不结婚的理由是结婚之后开销加大，可能就没钱买书了。

可是反复思量之后，最终还是一条理由促使达尔文决定结婚。这个理由是人不能光顾着工作 —— 有了妻子、孩子，才能享受到家庭生活的乐趣，哪怕为此做出一定的牺牲也是值得的。就为这条理由 —— 而不是所有理由加在一起权衡的结果 —— 达尔文决定向表姐求婚。至于什么买书，那都是不重要的细节问题。

他求婚成功了，而且收获了幸福的婚姻。 

![达尔文日记本中做出结婚决策的一页](https://piccdn3.umiwi.com/img/201611/28/201611281727113879467724.jpg)

如果一件事情真的值得去做，哪有那么多理由？

下次再有人不顾重点，在细节问题上纠缠不清，请你跟他说一句成语！

—— “你过度拟合了。” 

## 划重点

1. 过度拟合就是，你的模型想要一丝不苟地反映已知的所有数据，它对未知数据的预测能力就会非常差。这是因为所谓的“已知”数据，都是有误差的！精准的拟合会把数据的误差给放大 ——拟合得越精确，并不代表预测结果就越准确，拟合得过度精确后反而结果更加糟糕。
2. 一个好的模型不应该对数据太敏感，这就是简单的力量。


![](https://piccdn3.umiwi.com/img/201611/28/201611281728547396462042.jpg)

