这是一篇严谨的技术文章。
宋人有耕田者。田中有株,兔走触株,折颈而死。因释其耒而守株,冀复得兔。兔不可复得,而身为宋国笑。今欲以先王之政,治当世之民,皆守株之类也。 ——出自《韩非子·五蠹》
守株待兔的原文,我抄来的。标题中的“过拟合”我理解为:用以获取知识的样本与知识本身联系过于紧密,且该样本不足以代表将来解决问题时所面对的数据整体特征,导致这些知识或经验在应用时不够有效。
这篇文章起源于对某次对数据粗心错误地解读。可简单比喻为以下三个问题:
1.一个袋子内有一堆球,颜色只可能是红色和白色两种,如果第一次取出一个球是红球,。那么是否可以认为红球比白球多这件事儿的可能性更大?即第二次取出的球更可能是红球的概率大?
2.守株待兔错在哪里?如果待“兔子”不符合道理,那么待什么符合道理?
3.待会儿再说。。。
第一个问题先说我的答案:红球比白球多的可能性大,即第二个球更可能是红球的概率大。面对这个问题,可能第一反应是:卧槽,你是以为我初中没好好学习吗?随机变量,两次独立事件,互不影响。就像抛一枚均匀硬币,你就是前1000次都恰巧正面朝上,也不影响第1001次正面朝上的概率是二分之一啊。。。
but!这其实不是一回事儿。另外谁说这是均匀的硬币了?就像谁告诉你红球白球数量关系了?第一个红球的存在,至少排除了全是白球的可能,但保留了全是红球的可能。
证明过程(可直接跳到结论):
若想知道第二个球更可能是红球的概率大小,就要计算出在第一个样本发生情况下的两个后验概率(也是条件概率):即 p(红>白 | 第一个为红球) 和 p(白>红 | 第一个为红球)谁大。其中p(红>白)意思是原袋中红球数量大于白球数量的概率。
现有样本数量很少。。得可怜,就一个。根据贝叶斯公式:p(E|F) = p(F|E)*p(E) / p(F)可知:
两个等式右边分母相同,比较分子,其中对两个先验概率p(红>白)、p(白>红)的大小一无所知,即认为所有情况都可能发生,默认二者发生概率相等,是一个常数。而 p(第一个为红球|红>白) 肯定大于 p(第一个为红球|白>红),所以第一个概率大于第二个概率,即p(红>白|第一个为红球) > p(白>红|第一个为红球),这其实是一个样本的极大似然估计。
结论:取出一个红球后,原袋中p(红>白) > 1/2,如果球的数量很多,不考虑第一个对整体的影响,近似认为P( P(第二是红球) > 1/2 ) > 1/2 ,这是概率的概率。有一个地方没有想得太顺畅:
如果这是一场赌博的话,根据这个结论,看来我们要押注红球了,因为感觉上总是比押注白球好一些。好一些的意思是,“获胜的机会”大一些?获胜的机会大却不能推导出获胜的概率一定大 :P(第二是红球) > 1/2,否则就结论不吻合了。想多了掉头发,关于这个问题,有兴趣一起交流一下。
说这么多,意思是即便是一个样本,也是有意义的。那么守株待兔错在了哪里?
错在作为宋国人,你知道的太多了。。尤其是关于兔子的常识。已经有那么多跟兔子打交道的经历了,还在用刚刚发生的单一样本生成模型,就很可能过拟合了。说“很可能”而不是“一定”是因为这个样本太新了,也许从那一刻开始,全世界的兔子突然喜欢上撞树了。不过在几千年后的我们看来,这没发生。对于当年的农夫来说,这是一场豪赌,扯远了。
那么有没有一种动物(或一种场合),可以守株而“待”之呢?遍寻古籍,我终于找到一种动物,撞树之后,在树下等它未必没有道理,它就是——年兽!因为对“年兽”了解的太少了,对它喜欢做什么几乎没有任何了解。它撞树是事实,那么它闲的没事儿喜欢撞树这个最可能导致“撞树”的原因就最有可能是事实。“某年月日,一兽触株,或谓之曰年,于是,耕田者释其耒而守株。。。复得年”。
其实生活中很多情况都在有意无意的利用一个样本做估计。比如某个周三下午,你经过某个街角的cafe,与一个人擦肩而过。那一瞬间你似乎听到了上天的耳语,感受到了永恒的存在。可是在来得及反应之前,就已无影无踪。于是你“寤寐思服,辗转反侧”,然后在下次路过那个街角时,下意识的张望。。。
当当当当,一个样本的作用!!!
问题3:除了那个街角,你还能去哪呢?天安门广场?还是东方明珠塔?于是你唱完《You're beautiful》开始唱《Right here waiting》。。。你这次吃鸡的房子,还是你下次吃鸡的地方吗?
结语:虽然一个样本也是有意义的,但是要说它的效果嘛,你看看身边多少单身的程序员就知道了。