导航

理解贝叶斯算法

Posted on 2023-03-07 15:43  蝈蝈俊  阅读(367)  评论(0编辑  收藏  举报

大数据、人工智能、海难搜救、生物医学、邮件过滤,这些看起来彼此不相关的领域之间都会用到同一个数学公式:“贝叶斯公式”,它是如何来的呢?有啥用途?我们就来逐层讲解。

一、贝叶斯公式的由来

贝叶斯算法起源于解决逆向概率问题,18世纪时,由英国数学家托马斯·贝叶斯(Thomas Bayes,1702~1761)提出这一研究成果。

贝叶斯是个很神奇的人,他的本职工作是一位英格兰长老会的牧师,他的经历类似梵高,生前不被重视,他的《论有关机遇问题的求解》论文,提出了一种解决问题的框架思路,即通过不断增加信息和经验,逐步逼近真相或理解未知。但这篇论文直到他死后的两年(1763年)才由他的朋友理查德·普莱斯帮助发表。这一发表不要紧,结果这篇论文的思想直接影响了接下来两个多世纪的统计学,是科学史上著名的论文之一。

我们平时工作生活中,也会用到贝叶斯算法,举个例子,如果你看到一个人总是花钱,那么会推断这个人多半是个有钱人。当然这也不是绝对,也就是说,当你不能准确预知一个事物本质的时候,你可以依靠和事物本质相关的事件来进行判断,如果事情发生的频次多,则证明这个属性更有可能存在

1.1、逆向概率问题

所谓“逆向概率”是相对“正向概率”而言。

什么是“正向概率”呢?

假设袋子里面有M只红球,N只白球,
它们除了颜色之外,其它性状完全一样。
你伸手进去摸一把,摸到红球的概率是多少是可以推算出来的。

但反过来是否也可以计算呢?我们可以将它视为“逆向概率”:

如果我们事先并不知道袋子里面红球和白球的比例,
而是闭着眼睛摸出一些球,
然后根据手中红球和白球的比例,
对袋子里红球和白球的比例作出推测。

这个问题就是逆向概率问题。

通俗地讲,当你不能准确知悉某个事物本质时,你可以依靠经验去判断其本质属性

1.2、贝叶斯公式

1774年,法国的大数学家拉普拉斯看到贝叶斯定理的价值,直接给出数学表达:

\[ P(A|B) = \frac{P(B|A)*P(A)}{P(B)} \]

  • P(A|B)称为后验概率(posterior),是在B发生的情况下A发生的概率,这是我们需要结合先验概率和证据计算之后才能知道的。
  • P(B|A)称为似然(likelihood),在事件A发生的情况下,事件B(或evidence)的概率有多大。
  • P(A)称为先验概率(prior), 事件A发生的概率有多大。比如在投掷骰子时,P(2) 指的是骰子出现数字“2”的概率,这个概率是六分之一。
  • P(B)称为证据(evidence),即无论事件如何,事件B(或evidence)的可能性有多大。

公式使用例子:

  • 假设某学校里有1000人,男生和女生的比例为3 : 2 ,即分别占到总人数的60%和40%。
  • 男生总是穿着长裤,女生则一半穿长裤一半穿裙子。

正向概率问题:随机取一个学生,穿长裤的概率和穿裙子的概率分别是多大?

穿长裤的总人数为男生人数加上女生人数中穿长裤的人数,即如下计算公式:

\[ \begin{align} P(pants) & = total\_population \times P(male) \times P(pants∣male) \\& + total\_population \times P(female) \times P(pants∣female) \\ & = 1000 \times 0.6 \times 1.0 + 1000 \times 0.4 \times 0.5 \\ & =800 \end{align} \]

那么这个学生穿长裤概率为: $$800 / 1000 = 0.8 $$,
我们也可以 $$0.6 + 0.4 × 0.5 = 0.8$$ 这样计算。

逆向概率问题:看到一个学生的背影,但是无法辨认男女,只看到穿着长裤,那么这个学生是女生的概率多大呢?

  • 首先,事件A是已发生的事件,记该学生穿着长裤为事件A,
  • 那么事件B就是这个学生是女生。
  • 这里的穿长裤就是一个限制条件将人数限制在了所有穿长裤的人的范围内。

穿长裤的男生人数为:

\[total\_population \times P(male) \times P(pants∣male) \]

  • \[ P(male) = 0.6 $$ ,表示男生比率是60%; \]

穿长裤的女生人数为:

\[total\_population \times P(female)\times P(pants|female) \]

接下来求穿长裤的人里面的女生的人数

穿长裤的总人数:

\[total\_population \times P(male) \times P(pants|male) + total\_population \times P(female) \times P(pants|female) \]

那么这个穿长裤的同学是女生的概率就是

\[ \begin{align} P(female|pants) & = \frac{穿长裤的女生} {总的穿长裤的人数} \\ & = \frac{total\_population×P(female)×P(pants|female)} {total\_population×P(male)×P(pants|male)+total\_population×P(female)×P(pants|female)} \\ & = \frac{P(female)×P(pants|female)} {P(male)×P(pants|male)+P(female)×P(pants|female)} \\ & = \frac{P(pants|female)}{P(pants)} \end{align} \]

可以看到,这个结果是与总人数没有关系的。
其实分母就是$$P(pants)$$,分子就是$$P(pants|female)$$。

于是看见一个穿裤子的女生比率就是:

\[\frac{0.4 \times 0.5}{(0.6 * 1.0) + (0.4 \times 0.5)} = 25\% \]

二、贝叶斯算法的日常运用

其实在日常生活中,我们也常使用贝叶斯公式进行决策。

钓鱼选择下诱区域

比如我们到河边钓鱼,根本就看不清楚河里哪里有鱼或者没鱼,似乎只能随机选择,但实际上我们会根据贝叶斯方法,利用以往积累经验找一个回水湾区开始垂钓。

这就是我们根据先验知识进行主观判断,在钓过以后对这个地方有了更多了解,然后再进行选择。

所以,在我们认识事物不全面的情况下,贝叶斯方法是一种非常理性且科学的方法。

疾病诊断

假设你感到身体不适,去医院看病。

医生进行检查后告诉你,你可能患有某种罕见疾病,只有1%的人会患上这种疾病。

但是,医生也告诉你,在过去的一年中,该疾病的检测结果有10%的误诊率。

如果你接受测试,并且测试显示你有该疾病,那么你的实际患病率是多少?

使用贝叶斯定理可以计算出,即使测试呈阳性,你患病的概率也只有9%。

垃圾邮件的识别

垃圾邮件曾经是一个令人头痛的问题,长期困扰着邮件运营商和用户。据统计,用户收到的电子邮件中80%以上是垃圾邮件。

传统的垃圾邮件过滤方法主要是"关键词法",即过滤特定的词语,(如垃圾邮件的关键词:“发票”,“贷款”,“利率”,“中奖”,“办证”,“抽奖”,“号码”,“钱”,“款”,“幸运”……等等。)

但这种方法效果很不理想,而且容易规避。

  • 一是正常邮件中也可能有这些关键词,非常容易误判。
  • 二是将关键词进行变形,如“代!开-发/票”,就很容易规避关键词过滤,如果将关键词的各种变形都找出来过滤,那是无穷无尽的,而且更容易误判正常邮件。

2002年,Paul Graham提出使用“贝叶斯方法”过滤垃圾邮件,而且这种过滤方法还具有自我学习能力,会根据新收到的邮件,不断调整。收到的垃圾邮件越多,它的准确率就越高。

具体策略:

预先提供两组已经识别好的邮件,一组是正常邮件,另一组是垃圾邮件。

我们用这两组邮件,对过滤器进行"训练"。这两组邮件的规模越大,训练效果就越好。Paul Graham使用的邮件规模,是正常邮件和垃圾邮件各4000封。

"训练"过程很简单。首先,解析所有邮件,提取每一个词。然后,计算每个词语在正常邮件和垃圾邮件中的出现频率。

比如,我们假定"贷款"这个词,在4000封垃圾邮件中,有200封包含这个词,那么它的出现频率就是5%;而在4000封正常邮件中,只有2封包含这个词,那么出现频率就是0.05%。(【注释】如果某个词只出现在垃圾邮件中,Paul Graham就假定,它在正常邮件的出现频率是1%,反之亦然。这样做是为了避免概率为0。随着邮件数量的增加,计算结果会自动调整。)

有了这个初步的统计结果,概率值计算问题就解决了。过滤器就可以投入使用了。

对于误判问题,可以采用“多特征判断”的思路。

比如:对于“发票”不好来判断,那就联合其他词语一起来判断,如果这封邮件中除了“发票”,还有“常年”,“代开”,“各种”,“行业”,“绝对正规”,“税点低”等词语,那么就通过这些词语联合认定这封邮件是垃圾邮件。

在基本方法计算的基础上,选取前n个(例如n=3,实际应用中是15个词/字以上)概率最高的词,假设为:“发票”,“常年”,“代开”。然后计算其联合条件概率。即在这3个词同时出现的条件下,这是一封垃圾邮件的概率。

三、理解贝叶斯思考方式

3.1、概率

人通常很少做出绝对的判断,但会做出相对可信的推断,并根据新的证据不断更新之前的结论。比方说,没有一个程序员能保证自己写出来的代码没有任何缺陷。但是我们可以对它进行大量验证,每通过一项测试,我们就更有把握确保这段代码的质量。

在贝叶斯的世界观中,概率是被解释为人们对一件事情发生的相信程度,也就是信心

假设你不确定一件事情的发生概率,但你知道一定存在这个概率值,于是你开始不断重复做试验,并记录下每次的结果。刚开始时,得到的后验概率是不稳定的。但随着试验次数的增加,观测值的出现概率会越来越接近它的真实概率值。在这个过程中,我们不是从随机性里推断出确定性,而是保留了不确定性。这是贝叶斯派的思考方式。

3.2、基于贝叶斯的推理与应用为何这些年才开始流行?

答案是因为大数据。过去难以采集大数据,也没法处理大数据,所以先验概率很难获得。这些年来,很多数据被人们积累下来,贝叶斯模型的运用领域也越来越广泛。

比如在一些语言翻译的网站、医疗诊断的仪器中,就会用到贝叶斯的统计方法。还有在电子邮件软件中,也集成了基于贝叶斯方法的垃圾邮件过滤功能。

正是下面两个成功案例,促进了贝叶斯模型的广泛运用。

  • 联邦党人文集作者公案,可以看出其中处理大数据的困难,汉密尔顿和麦迪逊写这些文章,用了大约一年的时间,而Mosteller和Wallance甄别出作者的身份花了10多年的时间。
  • 天蝎号核潜艇搜救,由于这种基于贝叶斯公式的方法在后来多次搜救实践中被成功应用,现在已经成为海难空难搜救的通行做法。

3.3、新老证据更重要?

贝叶斯定理告诉我们,即便获得了新的证据,也不要完全放弃初始的信念。新的证据会让我们对某些结果更有信心,或帮助我们修正初始信念的错误。

就是说,我们既要关注新的证据,又不能忽略初始信念。新的证据很重要,因为初始信念可能是错的,这些证据可以用于做出修正。但同时,初始信念仍然是重要的基础,不能只根据新证据就草率地做出判断。

比如,假设一个盒子里放了很多球,其中红球占85%,绿球占15%。有人从盒子中拿出一个球,这个人有色弱,假设他分辨颜色的准确率是80%。如果这个人说这是一个绿球,那么这个球是绿色的概率是多少呢?

让我们来做一次计算:由于红色的球被看成是绿色的概率是85%×20%,绿色的球被看成是绿色的概率是15%×80%,所以这个球是绿色的概率是0.15×0.8/(0.85×0.2+0.15×0.8)=41.38%。

也就是说,尽管这个人看到的是绿球,而且他分辨颜色的准确率达到80%,因为绿球本身的基数小,所以这个球是红球的可能性更大。

3.4、 贝叶斯对我们认知决策帮助

贝叶斯公式为我们提供了一些决策原则:

平时注意观察和思考,建立自己的思维框架,这样在面临选择时就容易形成一个接近实际情况的先验概率,这样经过少量的试错和纠错的迭代循环就可能得到理想的结果;在经过很多次选择和实践的历练后就能够形成自己的直觉,在面对陌生情况时,根据自己的经验和少量信息就能够快速地做出比较准确的判断。

大数据时代获得信息的成本越来越低,社会也变得更加开放和包容,初始状态(先验概率)的重要性下降了,即使最初选择不理想,只要根据新情况不断进行调整,仍然可以取得成功。所以如果当下觉得很难做出选择,那就倾听内心的声音,让直觉来选择,这有利于治疗选择恐惧症。

以开发App的例子来说,先按照自己的想法弄个可用的原型出来,然后充分利用互联网的力量,让活跃的用户社区帮助它快速迭代,逐渐使它的功能和体验越来越好。

对新鲜事物保持开放的心态,愿意根据新信息对自己的策略和行为进行调整。

大胆假设,小心求证”,“不断试错,快速迭代”,这些都可以看成贝叶斯公式的不同表述。

英国哲学家以赛亚·伯林(Isaish Berlin)曾经援引古希腊诗人的断简残片“狐狸多知而刺猬有一大知”,将人的策略分为狐狸和刺猬两类。

  • 刺猬用一个宏大的概念解释所有现象,
  • 而狐狸知道很多事情,用多元化的视角看待问题,它也愿意包容新的证据以使得自己的模型与之相适应。

在这个快速变化的时代,固守一个不变的信条的刺猬很难适应环境的变化,而使用贝叶斯公式的灵活的狐狸才更容易生存。

四、总结

贝叶斯定理的过程可以归纳为:“过去经验”加上“新的证据”得到“修正后的判断”。它提供了一种将新观察到的证据和已有的经验结合起来进行推断的客观方法。

比如说,我们认为在年终的时候有50%的可能会得到升职;如果我们从老板那里得到了正面且积极的反馈,我们可能会上调这个概率值,反之会下调。随着我们获得信息的增多,我们不断调整我们的估计值,直到它接近真正的答案。