苏格拉底(公元前469年~公元前399年),古希腊时期的思想家、哲学家和教育家,出身贫寒,是一位个性鲜明、从古至今被人毁誉不一的著名历史人物。苏格拉底是柏拉图的老师,他一生未曾著述,其言论和思想多见于柏拉图和色诺芬的著作,如《苏格拉底言行回忆录》。苏格拉与柏拉图、亚里士多德并称"希腊三贤"。

数学公式建模(数学家的相亲模型)(1)

01 麦穗问题的由来

苏格拉底的妻子是个心胸狭窄、冥顽不化,喜欢唠叨不休,动辄破口大骂的女人,而且常使堂堂的哲学家苏格拉底困窘不堪。一次,别人问苏格拉底"您当初为什么要选择这样一位妻子?"时,他回答说:"擅长马术的人总要挑烈马骑,骑惯了烈马,驾驭其他的马就不在话下了。我如果能忍受得了这样女人的话,恐怕天下就再也没有难于相处的人了。" 在西方,"苏格拉底的妻子"是悍妇、坏老婆的代名词。

有一天,柏拉图问苏格拉底:"什么是爱情?"苏格拉底说:

"前面有一片麦田,你走一趟,选最大最漂亮的一根麦回来,但选一根后不能改变主意,也不准走回头路。"

结果柏拉图空手而归:"我每次看见一根好麦,总觉得之后会遇上更好的,三心两意下,走完麦田都没拿到。"苏格拉底告诉柏拉图:"这便是爱情"。

又有一天,柏拉图又问老师苏格拉底:"什么是婚姻呢?"苏格拉底这次让柏拉图去森林,按照上次的规则,要其选最大最漂亮的一棵树回来。这次,柏拉图果然有收获:"经过上次失败的教训,我选了一棵不特别漂亮的树便算了。"苏格拉底笑了:"这便是婚姻"。

数学公式建模(数学家的相亲模型)(2)

两位哲学家用麦穗和树枝问题来形象地比喻了爱情和婚姻的不同:前者是错过了的美好,后者是人生旅途中权衡之后某个时候的抉择。

1611年,伟大的天文物理学家约翰尼斯·开普勒的妻子去世,两年后科学家准备续弦,重新组建家庭。由于开普勒的上一段婚姻并不幸福,所以这次他对交往的女士详细考察,力求找到完美的对象。开普勒像面试一样挨个交往相亲对象,在见到第5名女性时,他眼前一亮,被对方的勤俭持家、善良忠诚所打动。他本想就此收手,但"下一个是不是更棒?"的想法,最终驱使他继续去寻找更优秀的。

数学公式建模(数学家的相亲模型)(3)

最后,开普勒一共交往了11名女士,但他并没有找到更好的,反而一直对第5名女士牵肠挂肚。在某天去演讲的途中,他突然下定决心,调头前往第5名女士的家里,厚着脸皮向这位被他拒绝过的女士求婚。幸运的是,对方答应了。就这样,开普勒跟这名叫做苏珊·罗伊特林格的女子结婚了,两人生育了6名子女,生活幸福,携手到老。可是,并不是每个人都能像开普勒这样幸运,回头时那个人刚好还在等你,更多是至尊宝式的遗憾:"曾经有一份真诚的爱情摆在我面前,我没有珍惜,等我失去之后,我才追悔莫及。人世间最痛苦的事莫过于此。" 人生没有最优解,只有满意解。

数学公式建模(数学家的相亲模型)(4)

02 数学家对于"麦穗问题"给出了合理解释

人文学者及公众都为这段颇富哲理的名人小故事津津乐道,但数学家们却另辟蹊径,从完全不同的、概率及统计的角度来解读它。

麦穗问题虽然很普通,但也连得上貌似高深的"随机过程"。每棵麦穗的大小都可以看作是随机的,因此当柏拉图在麦田中走一圈时,碰到一个又一个排成序列的随机变量,这不就是一个随机过程吗?

在麦田的前1/e部分不要做决定(其中e为自然对数的底数,约等于2.71),只是把它作为参考,看看这1/e部分中哪个最大,然后在后面的部分如果能遇到一个相似大小的,这就是我们理论上能寻求到的最大的麦穗。

理论上,你可以获得一个最优解,但现实中我们很多人都会成为"柏拉图"。

近日苏黎世大学的一项研究表明,人们在等待决策的过程中,标准会越来越低。

他们招募了129名参与者来进行模拟购物实验,他们需要尽可能以最少的钱下单机票。起飞日期确定,但机票的价格存在波动(像极了我每天在做的事)。

数据显示,人们决策时使用的是一个"线性阈值模型":越接近起飞日期,你能够接受的心理价位就越高(它也意味着,人们所设定的标准越来越低了)。

数学公式建模(数学家的相亲模型)(5)

研究人员表示,这一原则不仅适用于采购决策,也适用于选择去哪家公司、挑选伴侣等情况

"刚开始的时候,你的择偶标准可能很高。但随着时间推移,它可能会慢慢降低,以至于你答应一个当初会拒绝的人。"

数学公式建模(数学家的相亲模型)(6)

03 "傻博士相亲"的故事来诠释这一麦穗问题本质

 英国伦敦大学学院的美女讲师汉娜·弗莱博士最近出了本《真爱中的数学》,用数学模型帮"单身狗"们寻找真爱。

  抛开书中那一串串同样令人目眩神迷的数学公式,不妨直接看看弗莱博士给出了哪些建议。

首先是相亲的策略,带一位颜值低于你的朋友同行,相亲成功的几率会大大提高,这似乎是某种不太地道的"常识",但弗莱博士却通过复杂的计算,证实了它的科学性。

  其次是最佳的结婚时间,计算发现,人们应该在计划婚期之前所有约会时间过完37%之后再结婚。也就是说,如果一个人打算在35岁结婚,而他从15岁开始约会,那么22.4岁之前所有的约会对象,都将不幸地成为他人幸福路上的垫脚石。

  可别以为结了婚就万事大吉,好事儿的数学家们对婚姻能否持续另有一套数学模型。据说,这套模型曾用于预测国家之间的军备竞赛。

利用数学的观点抽象之后的麦穗问题,等效于概率及博弈论中著名的秘书问题。它还有多种变换版本:未婚夫问题、止步策略、苏丹嫁妆问题,等等。

数学公式建模(数学家的相亲模型)(7)

下面我们用"傻博士相亲"的故事来叙述它。并借助微积分的基本概念用于求解分析这一问题过程。

且说几年前留学人员中有一位外号"傻博士"的学生,精通数学,小有成就,唯有一老大难问题尚未解决:将近40岁还没有交上女朋友。于是,那年他奉母命回国相亲,据说半个月之内来了100名佳丽应召。后来,这位傻博士经过严格的数学论证,采用了一种他认为的"最佳策略",终于百里挑一,赢得美人归。

这里还需加上一段话,描述傻博士母亲设定的条件。母亲要求他在15天之内,要对这100位佳丽一个一个地面试,每位佳丽只能见一次面,面试一个佳丽之后立即给出"不要"或"要"的答案。如果"不要",则以后再无机会面试该女子;如果答案是"要",则意味着博士选中了这位女子,相亲过程便到此结束。

看到这里,你也许已经能领会到这个"博士相亲"与"麦穗问题"本质上是一致的了。那么,对于母亲这种"见好就收,一锤定音"的要求,傻博士的"最佳策略"又是怎么样的呢?

既然是"最佳",那应该用得上微积分中的最优化、求极值的技巧吧。果然如此!我们首先看看,傻博士是如何建造这个问题的数学模型的。

这看起来是个概率的问题。假设,按照傻博士对女孩的标准,他将100个女孩做了一个排行榜,从1到100编上号,"#1"是最好的,然后,"#2"、"#3"……当然,傻博士并不知道当时每一次面试的女孩是多少号。这些号码随机地分布在傻博士安排的另一个面试序列(1,2,3,…,r,…,i,…,n)中,见图3-5-1。傻博士的目的就是要寻找一种策略,使得这"一锤定音"定在"#1"的概率最高。

数学公式建模(数学家的相亲模型)(8)

设想一下,傻博士可以有好多种方法做这件事。比如说,他可以想得简单一点,预先随意认定一个数字r(比如将r固定为等于20),当他面试到第r个人的时候,就定下来算了。这时候,因为r是100中挑出来的任意一个,所以,这个人是"#1"的概率应该是1/100。这种简单策略的概率很小,傻博士觉得太吃亏。比如说,当他面试到第20个人时,如果看到的是个丑八怪(或者疯女子)也就这么定下来吗?显然这不是一个好办法。那么,将上面的方法做点修正吧:仍然选择一个数字(比如r=20),但这次的策略是:他从第20个人开始认真考察,将后面的面试者与前面面试过的所有人加以比较。比如说,如果傻博士觉得这第20个面试者比前面19个人都好,那便可以"见好就收"。否则,他将继续面试第21个,将她与前面20人相比较;如果不如前面的,继续面试第22个,将她与前面21人相比较……如此继续下去,直到面试到比前面的面试者都要更好的人为止。

根据图3-5-1,总结一下傻博士策略的基本思想:对开始的r-1个面试者,答复都是"不要",等于是"忽略"掉这些佳丽,只是了解一下而已,直到第r个人开始,才认真考虑和比较。如果从r开始面试到第i个人的时候,觉得这是一个比前面的人都要更中意的人,便决定说"要",从而停止这场游戏。图3-5-1中还标出了一个"临时最佳者",这和实际上隐藏着的排行榜中的"#1"是不同的。"临时最佳者"指的是傻博士一个一个面试之后到达某个时刻所看到的最好的佳丽,是随着傻博士已经面试过的人数的增加而变化的。

这里便有了一个问题:对100个人而言,到底前面应该"忽略"掉多少个人,才是最佳的呢?也就是说,对n个面试者,r应该等于多大,才能使得最终被选定的那个面试者,是"#1"的概率最大?r太小了当然不好,比如说,如果令r=2,那就是说,只忽略第一个,如果第二个比第一个好的话,就定下了第二个。当然也可能继续下去,但很有可能使你的决定下得太快了,似乎还没有真正开始面试,过程就结束了!r太大显然也不行,比如说令r=99,那就是说,从第99个人才开始比较。如此办法,因为忽略的人数太多,当然,"#1"被忽略掉的可能性也非常大,面试了这么多的人,将傻博士累得半死,选出#1的概率只是大约为2/100而已。

也许,应该忽略掉一半,从中点开始考察?也许,这个数k符合黄金分割原则:0.618?也许与另外某个有名的数学常数(π或e)有关?然而,这都是一些缺乏论据的主观猜测,傻博士是科学家,还是让数学来说话吧。

我们首先粗略地考察一下,如果使用这种方法的话,对某个给定的r,应该如何估算最后选中"#1"的概率P(r)。对于给定的r,忽略了前面的r-1个佳丽之后,从第r个到第n个佳丽都有被选中的可能性。因此,在图3-5-1下方的公式中,这个总概率P(r)被表示成所有的P(i)之和。这里的i从r到n逐一变化,而P(i)则是选中第i个佳丽的可能性(概率)乘以这个佳丽是"#1"的可能性。

选中第i个佳丽的可能性是多少?取决于第i个佳丽被选中的条件,那应该是当且仅当第i个佳丽比前面i-1个都要更好,而且前面的人尚未被选中的情形下才会发生。也可以说,第i个佳丽被选中,当且仅当第i个佳丽比之前的"临时最佳者"更好,并且这个临时最佳者是在最开始被忽略的r-1个佳丽之中。因为如果这个临时最佳者是在从r到i之间的话,她面试后就应该被选中了,然后就停止了"相亲过程",第i个佳丽不会被面试。

此外,这第i个佳丽是"#1"的可能性是多少呢?实际上,按照等概率原理,每个佳丽是"#1"的可能性是一样的,都是1/n。因此根据上面的分析,我们便得到了图3-5-1所示的选中"#1"的概率公式。

从公式可知,选中"#1"的概率是萨博士策略中开始认真考虑的那个点r的函数。读者不妨试试在公式中代入不同的n及不同r的数值,可以得到相应情况下的Pn(r)。比如说,我们前面所举的当n=100时候的两种情形:P100(2)大约等于6/100;P100(99)大约等于2/100。

数学公式建模(数学家的相亲模型)(9)

下面问题就是要解决:r取什么数值,才能使得Pn(r)最大?如果我们按照图3-5-1中的公式计算出当n=100时,不同r所对应的概率数值,比如令r分别为2,8,12,22,…,将计算结果画在Pn(r)图上,如图3-5-2(a)所示。我们可以将这些离散点连接起来,成为一条连续曲线,然后估计出最大值出现在哪一个点r。这是求得P(r)最大值的一种实验方法。

数学公式建模(数学家的相亲模型)(10)

然而,我们更感兴趣从理论上分析更为一般的问题,那就要用到微积分了。如果能给随机变量建立一套类似于普通微积分的理论,让我们能够像对普通变量做微积分那样对随机变量做微积分就好了。

在普通微积分里面,最基本的理论基础是"收敛"和"极限"的概念,所有其他的概念都是基于这两个基本概念的。对于随机过程的微积分,在数学家们建立了基于实分析和测度论的概率论体系之后,就可以像当初发展普通微积分那样先建立"收敛"和"极限"这两个概念。与普通数学分析不同的是,现在我们打交道的是随机变量,比以前的普通变量要复杂得多,相应建立起来的"收敛"和"极限"的概念也要复杂得多。

在随机微积分中的积分变量是随机过程,比如说无规行走。无规行走是时间的一个函数,却有一个特殊的性质:处处连续但是处处不可导,正是这个特殊的性质使得随机微积分与普通微积分大不相同。

实际上,随机微积分一般都既牵涉到普通变量时间t,又牵涉到随机变量W(t)。所以,进行随机微积分时,如果碰到跟t有关的部分就用普通微积分的法则,而碰到跟W(t)有关的部分时就使用随机微积分的法则。

数学公式建模(数学家的相亲模型)(11)

04 变式---炮灰模型

来源于1949年的一个数学家提出的未婚妻模型。两者本质是一样的。下面介绍下未婚妻模型。

先做几个假设:

1. 相亲男在打算谈恋爱到结婚的这段时间里([0,m],m是时间点),假设可以遇到N个女生。比如,N = 0,1,2,3...这个N个人中的某一个,就是你的未婚妻。

2. 这N个女生,虽有优劣,均是随机的被相亲男碰到的。

3. 相亲男碰到的每一个女生,均有两种选择,要么表白,要么拒绝。一旦表白,则结束这个"征婚游戏";一旦拒绝,则继续考虑下一个女生。(根据事件独立性原则,不考虑脚踏两只船的情况)。

一般情况下,相亲男会跟前几个女生都接触下,试试水,同时逐渐了解下自己的需求,再开始认真考虑,从下一个开始,只要一碰到一个女生比自己之前遇到的人都合适,那么就表白,其发展关系。

这个问题就变成了数学问题:先拒绝前k个人(k<=N-1),从k 1个人开始,一旦看到比之前所有人都要好的人,就毫不犹豫地选择。

那么,这个问题就变成了,如何确定k值,使得未婚妻出现的概率最大(即P(k)最大)。

算法如下:

我们假设,未婚妻出现在第i个位置。

一般情况下,每个人被选择的概率,是1/N。

因为要拒绝掉前k个人,那么k <i<=N,以及 k<=i-1。

又因为,未婚妻比前k个人都要好,这种选择的概率为k/(i-1)。

未婚妻出现的总概率为

P(k) = Σ(1/N)(k/(i-1)) = (k/N)Σ(1/(i-1))。

其中求和从i=k 1开始。

(后面实际上是一个调和平均数)。啰嗦一句,调和平均数的本质在于总体等效。比如,初中时候的并联电阻。其关键一点在于,在一个等效系统中,最重要的是考虑弱小的一方。有点类似短桶效应。

举例子:比如,相亲男要进行20次相亲,即N = 20,他打算与前3个进行试探下,并不打算表白。即k=3。那么P(k=3) = (3/20)[1/(4-1) 1/(5-1) 1/(6-1) ... 1/(20-1)]=我就不计算了。

用 x 来表示 k/n 的值,从极限角度考虑,当N = 无穷大时,上述P(k)可以用微积分写:P(x) = x∫(1/t)dt = -xlnx

求最大值嘛,那么就求导,对P(x)求导,就是对-xlnx求导,求导后令x=0,得到P(x)的最大值就是P(k)。

这个最大值为:(1-1/e) = 1/2.718 = 1- 0.3679 = 0.6321

换句话说,如果相亲男拼命去相亲(N = 无穷大),最多有63.21%的概率,碰到自己认为最合适的未婚妻。

但是建议量力而行,根据自己的实际情况确定N的值。。

最后,再说下这个模型的非常明显的缺点:如果最佳人选本来就在这前36.79%的人里面,错过这 36.79% 的人之后,再也碰不上更好的了。(终身遗憾)

05 数据挖掘算法

决策树是直观运用概率分析的树形分类器,是很常用的分类方法,属于监管学习,决策树分类过程是从根节点开始,根据特征属性值选择输出分支,直到到达叶子节点,将叶子节点存放的类别作为决策结果.

如图1-11所示的树状图展现了当代女大学生相亲的决策行为。其考虑的首要因素的是长相,其他考虑因素依次为专业、年龄差和星座,同意与否都根据相应变量的取值而定。

决策树算法模拟了上述的决策行为,按照这些要求,可以对候选相亲男性的数据进行分类预测,然后根据预测结果找出女大学生心仪的男性。

数学公式建模(数学家的相亲模型)(12)

决策树以女性相亲为例,那么对于一个在婚恋交友网站注册的男性,如何预测该男性的相亲成功率呢?这里使用KNN算法(K-NearestNeighor,最邻近算法)进行预测。

数学公式建模(数学家的相亲模型)(13)

这里采用三个变量或属性来描述一个男性,即收入、背景和长相。

在已有的数据中,深灰色点代表相亲成功的人,白点代表相亲不成功的人,中间连接线条的黑点代表一个新来的男性,KNN算法在预测这个新人相亲是否成功时,会找到他和附近的K个点,并根据这些点是否相亲成功来设定新人约会成功的概率。

比如图1-12中黑点与两个深灰色点、一个白点最近,因此该点相亲成功的可能性占2/3。

KNN算法属于惰性算法,其特点是不事先建立全局的判别公式或规则。当新数据需要分类时,根据每个样本和原有样本之间的距离,取最近K个样本点的众数(Y为分类变量)或均值(Y为连续变量)作为新样本的预测值。该预测方法体现了一句中国的老话"近朱者赤,近墨者黑"。

参考文献:张天荣,《从掷骰子到阿尔法狗:趣谈概率》

,