在这一章将介绍另外一种分类算法——朴素贝叶斯分类算法。朴素贝叶斯分类算法的原理同样非常简单,有很多人工智能领域的分类算法都是以此为基础进行改进的,它也是分类问题中的基础算法之一。
贝叶斯分类基于概率中的一个基本公式,叫作贝叶斯公式(又称为贝叶斯定理)。这个公式的名称源于英国的概率统计学家、哲学家和牧师托马斯·贝叶斯(图4-1),他在一篇名为《论机遇问题的求解》的论文中给出了贝叶斯公式在特殊情形下的描述。他的这个重要结果其实并未在生前发表,而是由他的朋友、哲学家理查德·普莱斯在他去世后从他的笔记中整理并于1763年正式发表的。贝叶斯公式应用广泛,统计学者由此发展出一套系统的统计推理方法,叫作贝叶斯方法。美国《技术评论》在2003年还曾把贝叶斯统计技术称为全球九大开拓性新兴科技领域。
图4-1 托马斯·贝叶斯
为了描述贝叶斯公式,首先需要了解条件概率的概念。设A和B是两个随机事件,分别用P(A)和P(B)表示它们发生的概率,并且假设P(A)·P(B)≠0(这是为了保证分式中的分母不为零)。用P(A|B)和P(B|A)分别表示B或A发生的条件下另外一个随机事件发生的概率。直观的经验表明,P(A)和条件概率P(A|B)通常是不相等的。例如,一个篮球爱好者去打篮球的概率(P(A))与他在预报有雨的条件下去打篮球的条件概率(P(A|B))显然是不同的。
图4-2 韦恩图
结合上面的韦恩图(图4-2)可以直观地理解条件概率的含义。设S是某个随机试验的样本空间(所有可能出现的结果),A和B两个随机事件所对应的概率可以分别理解为红色的圆形和蓝色圆形占整个样本空间的比例。当考虑A发生的条件下B发生的概率时,所有可能出现的试验结果都落在红色圆形中,在这样的条件下,可以认为此时“样本空间”变成了红色圆形。而在这样的条件下如果B发生,试验结果只可能出现在红色圆形与蓝色圆形的交叉区域内,所以P(B|A)就是交叉区域在红色圆形中所占的比例。条件概率的计算公式为
类似地,以事件B作为条件,事件A发生的条件概率为
上面两个计算公式经过变形后可以给出如下计算P(AB)的乘法公式。
P(AB)=P(A|B)P(B)=P(B|A)P(A)
结合这几个公式,可以得到贝叶斯公式,形式如下。
它的意义在于可以通过改变条件和随机事件的相对位置来计算所需的条件概率,即可以通过事件A在事件B发生的条件下的概率计算事件B在事件A发生的条件下的概率。可以通过下面的例子体会这种转换的意义。日常生活中听到的天气预报,经常是这样描述天气:“明天的降水概率为80%。”这是如何做到的呢?在对明天的天气进行预测时,我们不可能通过计算频率(把明天重复100次),发现其中大约有80次下雨,从而预测出明天的降水概率为80%。实际上,我们是通过仪器测量气象数据(如温度、湿度、风力等)计算在这些气象条件(A)下,明天降水(B)的概率。而这个条件概率,就可以使用贝叶斯公式,利用已经记录在案的历史天气数据来计算。
为了进一步熟悉贝叶斯公式的使用方法,下面以疾病检测作为例子进行具体地计算。
设某种疾病在人群中的患病率是0.5%,现通过一种检测试剂对这种疾病的患者进行筛查。如果已知真正的患者用这种试剂检测呈阳性的概率为99%,未患病的人试剂检测呈阴性的概率为98%,那么检测结果呈阳性的人患病的概率为多少呢?
P(B)=0.005
依据例中给出的说明,可知
P(A|B)=0.99
在计算P(A)时需要用到另一个概率中的重要公式——全概率公式。因为在贝叶斯分类算法中其实并不需要真正计算出概率P(A),所以不再详细说明全概率公式的含义,而是直接给出它的表达式
P(A)=P(A|B)P(B)+P(A|B)P(B)
其中B表示B的对立事件,即没有患病。按照这个公式通过计算可得
P(A)=0.02485
最终,把这些计算结果代入贝叶斯公式,可以算出检测结果呈阳性的人患病的概率为19.9%。
由上例中给出的已知条件可以看出,无论是患者检测呈阳性还是未患病的人检测呈阴性的概率都很高,看起来通过这种试剂检测该病患者的准确率应该也很高。但是通过贝叶斯公式的计算结果可以看出,实际上检测结果为阳性的人真正患有这种疾病的概率并不是特别高,只有不到20%。有80%检测结果呈阳性的人其实并未患病,这在医学上称为假阳性。这个例子其实给出了科学评价医学检测手段的准确性的一种方法。