朴素贝叶斯分类器原理

写在最前

朴素贝叶斯分类器,实际上也是对人们常识做的一个算法的完善。其以一种更为精准的量化来判断分类,使用的方法是后验概率。本文从与决策树的比较出发,介绍先验概率和后验概率的关系,再详细介绍一下朴素贝叶斯算法的流程。

朴素贝叶斯算法比较简单,所以此文多是留以面试前复习之用。理清各个问题之间的关系是重点。

与决策树的比较

我们在学习完经典的决策树算法之后,可以有这样一个认识:决策树的特点是它总是在沿着特征做切分。随着层层递进,这个划分会越来越细。大体上就像这样:

分类决策树的划分策略
对于决策树不是很了解的朋友们可以看我这篇文章 《经典决策树算法》

我今天在此基础上,在介绍一种在概率框架下实施决策的基本方法。同样的,这也很符合我们人类的经验思维。这就是贝叶斯分类器。相比于决策树,其分类示意如下:

贝叶斯分类器的划分策略

此处的的蓝色与红色交织,就代表着概率的大小。贝叶斯分类器的名字很高大上,其实背后的原理非常简单。就是根据概率来选择我们要将某一个个体分在哪一类中。

我们可以这样去理解贝叶斯分类器。西瓜藤新鲜的瓜甜的概率为0.7,若只看瓜藤,我们就将瓜藤新鲜的瓜判定为甜瓜。我们引入西瓜纹理这一个第二个特征,假设纹理整齐的瓜甜的概率为0.8。则这时候我们要算出瓜藤新鲜且纹理整齐的瓜甜的概率,比如为0.9(为什么要大于前两个概率大家可以思考一下),这样我们看到纹理和瓜藤这两个特征的时候就可以有概率的判断瓜是否甜了。

这里我们可以类比一下分类决策树。对于决策树不是很了解的朋友们可以看我这篇文章《经典决策树算法》相比于决策树将瓜藤新鲜的瓜甜的概率直接转化成瓜藤新鲜我们就判断成瓜甜,我们的贝叶斯更是有了一种概率性的容错性,使得结果更加准确可靠一点。但是贝叶斯分类器对数据有着比决策树更高的要求,其需要一个比较容易解释,而且不同维度之间相关性较小的模型。这个我们在之后会细细提及。

先验概率与后验概率

我们来看贝叶斯公式:

P(B|A)= \frac{P(A|B) \centerdot P(B)}{P(A)}
  1. P(B|A)就是后验概率
  2. P(B)为先验概率,一般都是人主观给出的。贝叶斯中的先验概率一般特指它。
  3. P(A|B)是条件概率,又叫似然概率,一般是通过历史数据统计得到。一般不把它叫做先验概率,但从定义上也符合先验定义。
  4. P(A)其实也是先验概率,只是在贝叶斯的很多应用中不重要(因为只要最大后验不求绝对值),需要时往往用全概率公式计算得到。

可见,先验概率,后验概率和似然概率关系密切的很。值得注意的是,A和B的顺序和这个先验后验是有关系的。A和B反了,先验与后验也需要反过来。举个例子来说: 桌子上如果有一块肉和一瓶醋,你如果吃了一块肉,然后你觉得是酸的,那你觉得肉里加了醋的概率有多大?

对于这个问题,在吃起来是酸的条件下肉里面放了醋的概率,便是后验概率。肉加了醋的前提下吃起来是酸的概率便是似然概率,肉里面加了醋的概率和吃起来是酸的概率便是先验概率。

我们可以总结一下,A事件是导致的结果,B事件是导致的原因之一。这里我们吃到肉是酸的,则是各种原因的结果,而肉里面放了醋则是导致这个A结果的诸多原因之一。为什么说是之一呢,因为除了放了醋,也有可能是肉变质了等等。

朴素贝叶斯分类算法

先通过一个经典例子来解释朴素贝叶斯分类的算法。由如下表格中的数据学习一个朴素贝叶斯的分类器并确定x=(2,S)^T的w类标记y,表格中X^{(1)}X^{(2)}为特征,取值的集合分别为A_1={(1,2,3)}, A_2={(S,M,L)},Y为类标记,Y\in C = (-1,1)

此时我们对于给定的x= (2,S)^T可以如下计算:

P(Y=1)P(X^{(1)}=2|Y=1)P(X^{(2)}=S|Y=1) = \frac{9}{15} \centerdot \frac{3}{9} \centerdot \frac{1}{9} = \frac{1}{45}
P(Y=-1)P(X^{(1)}=2|Y=-1)P(X^{(2)}=S|Y=-1) = \frac{6}{15} \centerdot \frac{2}{6} \centerdot \frac{3}{6} = \frac{1}{15}

可见P(Y=-1)时候后验概率更大一些。所以y=-1

通过以上例子,我们会发现朴素贝叶斯的方法其实就是一种常规做法,拉普拉斯曾经说过,概率论就是将人们的常识使用数学公式表达。接下来我们来看看最完整的朴素贝叶斯分类算法的数学表达。

朴素贝叶斯算法

朴素的含义指的是对条件概率分布作了条件独立性的假设。朴素贝叶斯算法实际上学习到生成数据的机制,属于生成模型。条件独立假设等于是说用于分类的特征在类确定的条件下都是条件独立的。

输入:训练数据T=\lbrace(x_1,y_1),(x_2,y_2),...,(x_N,y_N)\rbrace,其中x_i=(x_i^{(1)},x_i^{(2)},...,x_i^{(n)})^T,x_i^{(j)}是第i个样本的第j个特征,x_i^{(j)} \in \lbrace \alpha_{j1}, \alpha_{j2},..., \alpha_{js_j} \rbrace,\alpha_{jl}是第j个特征可能取的第l个值,j=1,2,...S_j, y_i \in \lbrace c_1, c_2,..., c_K \rbrace, 测试实例x

输出:测试实例x的分类

  1. 计算先验概率及条件概率
P(Y=c_k) = \frac{\sum_{i=1}^n I(y_i=c_k)}{N}, k=1,2,...,K
P(X^{(j)}=a_{jl}|Y=c_k) = \frac{\sum_{i=1}^n I(X^{(j)}=a_{jl},y_i=c_k)}{\sum_{i=1}^n I(y_i=c_k)}
j=1,2,...,n; l= 1,2,...,S;  k = 1,2,...,K
  1. 对于给定的实例x= (x_{(1)},x_{(2)},...,x_{(n)})^T,计算
P(Y=c_k) \prod_{j=1}^n P(X_{j}= x_{(j)}|Y=c_k), k=1,2,...,K
  1. 确定实例x的类
y= arg \max_{c_k} \prod_{j=1}^n P(X_{j}= x_{(j)}|Y=c_k)

猜你喜欢

转载自juejin.im/post/5a82fc716fb9a0634912a1e6