当前位置:   article > 正文

朴素贝叶斯分类【原理推导+实例】_朴素贝叶斯分类器

朴素贝叶斯分类器

机器学习笔记——朴素贝叶斯分类器

第一章 机器学习简介
第二章 感知机
第三章 支持向量机
第四章 朴素贝叶斯分类器
第五章 Logistic回归
第六章 线性回归和岭回归
第七章 多层感知机与反向传播【Python实例】
第八章 主成分分析【PCA降维】
第九章 隐马尔可夫模型
第十章 奇异值分解


回顾支持向量机模型中,从训练样本集 { ( x i , y i ) } i = 1 N \{(x_i,y_i)\}_{i=1}^N {(xi,yi)}i=1N 直接学得决策函数
f ( x ) = sign ⁡ ( ∑ i = 1 N α i y i ( x i ⋅ x ) + b ) , f( x) = \operatorname{sign}( \sum _{i= 1}^N\alpha_iy_i (x_i\cdot x) + b), f(x)=sign(i=1Nαiyi(xix)+b),对新数据实例 x x x的预测 y ^ \hat{y} y^直接由决策函数给出,即 y ^ = f ( x ) \hat{y}=f(x) y^=f(x)。而朴素贝叶斯分类是以条件概率分布 P ( Y ∣ X ) P(Y|X) P(YX)而非决策函数 f ( x ) f(x) f(x)为模型的分类方法:

  • 通常先从训练样本集 T = { ( x i , y i ) } i = 1 N T=\{(x_i,y_i)\}_{i=1}^N T={(xi,yi)}i=1N学得条件概率分布 P ( Y ∣ X ) . P(Y|X). P(YX).
  • 再对新数据实例 x x x 按照后验概率最大化原则确定预测 y ^ \hat{y} y^, 即
    y ^ = argmax ⁡ y ∈ Y P ( y ∣ x ) . \hat{y}=\operatorname*{argmax}_{y\in\mathcal{Y}}P(y|x). y^=yYargmaxP(yx).

一、后验概率最大化分类准则

假设有 N N N 种可能的类别标记,即 Y = { y 1 , y 2 , … , y N } , λ i j \mathcal{Y}=\{y_1,y_2,\ldots,y_N\},\lambda_{ij} Y={y1,y2,,yN},λij 是将一个真实标记为 y j y_j yj的样本误分类为 y i y_i yi所产生的损失。基于后验概率 P ( y i ∣ x ) P(y_i\mid\boldsymbol{x}) P(yix) 可获得将样本 x \boldsymbol{x} x 分类为 y i y_i yi 所产生的期望损失, 即在样本 x x x 上的“条件风险”。那么我们可以得到将 x x x的类别预测为 y i y_i yi所产生的风险(期望损失)为
R ( Y = y i ∣ x ) = ∑ j = 1 K λ i j P ( Y = y j ∣ x ) , R(Y=y_i|x)=\sum_{j=1}^K\lambda_{ij}P(Y=y_j|x), R(Y=yix)=j=1KλijP(Y=yjx),最优预测依据贝叶斯决策论(期望损失最小化),对输入实例 x x x的最优预测 y ^ \hat{y} y^应该满足:

y ^ = argmin ⁡ y i R ( Y = y i ∣ x ) \hat{y}=\operatorname*{argmin}_{y_i}R(Y=y_i|x) y^=yiargminR(Y=yix)
如果我们采用0-1损失函数,即 λ i j = { 1 , i ≠ j 0 , i = j . \lambda_{ij}=\left\{1,ij0,i=j

\right. . λij={1,0,i=ji=j.
R ( Y = y i ∣ x ) = ∑ j ≠ i 1 × P ( Y = y j ∣ x ) + 0 × P ( Y = y i ∣ x ) = ∑ j ≠ i P ( Y = y j ∣ x ) = 1 − P ( Y = y i ∣ x ) . R(Y=yi|x)=ji1×P(Y=yj|x)+0×P(Y=yi|x)=jiP(Y=yj|x)=1P(Y=yi|x).
R(Y=yix)===j=i1×P(Y=yjx)+0×P(Y=yix)j=iP(Y=yjx)1P(Y=yix).

相应地,输入实例 x x x的最优预测 y ^ \hat{y} y^应该满足:
y ^ = argmin ⁡ y i R ( Y = y i ∣ x ) = argmin ⁡ y i [ 1 − P ( Y = y i ∣ x ) ] = argmax ⁡ y i P ( Y = y i ∣ x ) ( 1 ) ˆy=argminyiR(Y=yi|x)=argminyi[1P(Y=yi|x)]=argmaxyiP(Y=yi|x)
\qquad (1)
y^=yiargminR(Y=yix)=yiargmin[1P(Y=yix)]=yiargmaxP(Y=yix)(1)

  • 输入实例 x x x的最优预测 y ^ \hat{y} y^为使得后验概率 P ( y ∣ x ) P(y|x) P(yx)最大的类标记,也就是把后验概率最大那个类别当作预测类别;
  • 关键是怎么求这个后验概率 P ( y ∣ x ) P(y|x) P(yx).

二、生成式模型和判别式模型

如何计算相应的后验概率 P ( Y = y i ∣ x ) ? P(Y=y_i|x)? P(Y=yix)?

  1. 判别式模型
  • 直接从训练样本集 D = { ( x i , y i ) } i = 1 N D=\{(x_i,y_i)\}_{i=1}^N D={(xi,yi)}i=1N学习出后验概率 P ( Y = y i ∣ x ) P(Y=y_i|x) P(Y=yix)
  • 也就是说学一个后验概率的函数,这个函数给定形式,学习参数,比如Logistic回归。
  1. 生成式模型
  • 不直接学习后验概率 P ( Y = y i ∣ x ) P(Y=y_i|x) P(Y=yix),而是需要学习出联合概率分布 P ( Y = y i , x ) P(Y=y_i,x) P(Y=yi,x)
  • 然后利用贝叶斯公式
    P ( Y = y i ∣ x ) = P ( Y = y i , x ) P ( x ) , P(Y=y_i|x)=\frac{P(Y=y_i,x)}{P(x)}, P(Y=yix)=P(x)P(Y=yi,x), 计算出 P ( Y = y i ∣ x ) . P(Y=y_i|x). P(Y=yix).

朴素别叶斯模型就是很典型的生成式模型,而支持向量机、Logistic回归等属于判别式模型。

三、 朴素贝叶斯分类原理

下面我们介绍怎么学习联合概率 P ( Y = c i , x ) P(Y=c_i,x) P(Y=ci,x),回顾一下贝叶斯公式:
P ( A ∣ B ) = P ( A , B ) P ( B ) = P ( B ∣ A ) P ( A ) P ( B ) P(A \mid B)=\frac{P(A, B)}{P(B)}=\frac{P(B|A)P(A)}{P(B)} P(AB)=P(B)P(A,B)=P(B)P(BA)P(A)

在分类问题中(这里先假设特征是离散的),可以这样来看:
P ( 类别 ∣ 特征 ) = P ( 类别 , 特征 ) P ( 特征 ) = P ( 特征 ∣ 类别 ) P ( 类别 ) P ( 特征 ) P(类别 \mid 特征)=\frac{P(类别, 特征)}{P(特征)}=\frac{P(特征|类别)P(类别)}{P(特征)} P(类别特征)=P(特征)P(类别,特征)=P(特征)P(特征类别)P(类别)

用类别集合: Y = { y 1 , y 2 … , y n } \mathcal{Y}=\{y_1,y_2…,y_n\} Y={y1,y2,yn}和特征集合 X = { x 1 , x 2 , ⋯   , x d } X=\{x_1,x_2,\cdots,x_d\} X={x1,x2,,xd}来写,后验概率计算如下:
P ( y i ∣ X ) = P ( y i , X ) P ( X ) = P ( X ∣ y i ) P ( y i ) P ( X ) = P ( x 1 , x 2 ⋯ x d ∣ y i ) P ( y i ) P ( X ) P(y_i \mid X)=\frac{P(y_i, X)}{P(X)}=\frac{P(X|y_i)P(y_i)}{P(X)}=\frac{P(x_1,x_2\cdots x_d|y_i)P(y_i)}{P(X)} P(yiX)=P(X)P(yi,X)=P(X)P(Xyi)P(yi)=P(X)P(x1,x2xdyi)P(yi)

观察一下最右边的式子:

  • P ( x 1 , x 2 ⋯ x n ∣ y i ) P(x_1,x_2\cdots x_n|y_i) P(x1,x2xnyi):某个类别下特征的联合概率,特征组合比较多的话,比如每个特征 x i x_i xi有两个取值,那么特征一共有 2 d 2^d 2d种组合,特征数比较多的话,样本中有些组合根本不会出现,所以不好算.
  • P ( y i ) P(y_i) P(yi):样本中每个类别的概率,可以从样本中直接统计频率当作概率(大数定理).
  • P ( X ) P(X) P(X)计算每一个类别的 P ( y i ∣ X ) P(y_i \mid X) P(yiX)都有的,我们通过(1)式比较大小,相同的可以不用计算.

条件独立性假设

刚刚提到 P ( X ∣ y i ) = P ( x 1 , x 2 ⋯ x n ∣ y i ) P(X|y_i)=P(x_1,x_2\cdots x_n|y_i) P(Xyi)=P(x1,x2xnyi)是联合概率,不好求,所以朴素贝叶斯分类做了一个很强的假设:假设特征是相互独立的!(所以叫朴素贝叶斯),那么联合概率就能拆开了:
P ( y i ∣ X ) = P ( x 1 , x 2 ⋯ x d ∣ y i ) P ( y i ) P ( X ) = P ( y i ) ∏ j = 1 d P ( x j ∣ y i ) P ( X ) P(y_i \mid X)=\frac{P(x_1,x_2\cdots x_d|y_i)P(y_i)}{P(X)}=\frac{P(y_i)\prod_{j=1}^dP(x_j|y_i)}{P(X)} P(yiX)=P(X)P(x1,x2xdyi)P(yi)=P(X)P(yi)j=1dP(xjyi)

这样给定特征后,可以在训练集中通过右边的公式计算每一类的概率,从而给出预测的类别。

四、 典例:垃圾邮件分类

1 实例

通过一封邮件的内容来判断是正常邮件还是垃圾邮件,由后验概率 P ( y ^ ∣ X ) P(\hat{y}|X) P(y^X)的形式我们知道

  • 这个问题特征 X X X为邮件的内容;
  • y ^ \hat{y} y^:垃圾邮件或者不是垃圾邮件两种取值;

特征是每封邮件的内容,而内容我们可以细分为句子,而句子可以进一步细分为。如下面垃圾邮件截图:

截屏2022-04-11 下午4.17.20

以这句话为例,设这句话分词集合为 X X X,判断是不是垃圾邮件,计算:
P ( 垃圾邮件 ∣ X ) = P ( X ∣ 垃圾邮件 ) P ( 垃圾邮件 ) P ( X ) = P ( 垃圾邮件 ) ∏ j = 1 n P ( x j ∣ 垃圾邮件 ) P ( X ) P(垃圾邮件|X)=\frac{P(X|垃圾邮件)P(垃圾邮件)}{P(X)}=\frac{P(垃圾邮件)\prod_{j=1}^nP(x_j|垃圾邮件)}{P(X)} P(垃圾邮件X)=P(X)P(X垃圾邮件)P(垃圾邮件)=P(X)P(垃圾邮件)j=1nP(xj垃圾邮件)
假设训练集给出24封垃圾邮件和24封正常邮件,则

  • P ( 垃圾邮件 ) = 1 2 P(垃圾邮件)=\frac{1}{2} P(垃圾邮件)=21.
  • ∏ j = 1 n P ( x j ∣ 垃圾邮件) \prod_{j=1}^nP(x_j|垃圾邮件) j=1nP(xj垃圾邮件)就去统计训练集中垃圾邮件这些词出现的概率
    P ( x j ∣ 垃圾邮件) = ∣ x j ∣ n , P(x_j|垃圾邮件)=\frac{|x_j|}{n}, P(xj垃圾邮件)=nxj,
    其中 ∣ x j ∣ 为词 x j |x_j|为词x_j xj为词xj在垃圾邮件中出现的次数,n为垃圾邮件的总词数,用频率估计概率。
  • 前面我们说过 P ( X ) P(X) P(X)对于每一类来说都是一样的,所以可以不计算相同的这一项!

2 拉普拉斯平滑

而这里有个问题是,如果有一个词在训练集中没有出现过,那么 P ( x j ∣ 垃圾邮件 ) = 0 P(x_j|垃圾邮件)=0 P(xj垃圾邮件)=0导致整个 P ( 垃圾邮件 ∣ X ) = 0 P(垃圾邮件|X)=0 P(垃圾邮件X)=0,这显然不合理,所以我们需要平滑

零概率问题,就是在计算实例的概率时,如果某个量x,在观察样本库训练集中没有出现过,会导致整个实例的概率结果是0。在文本分类的问题中,当一个词语没有在训练样本中出现,该词语调概率为0,使用连乘计算文本出现概率时也为0。这是不合理的,不能因为一个事件没有观察到就武断的认为该事件的概率是0。

为了解决零概率的问题,法国数学家拉普拉斯最早提出用加1的方法估计没有出现过的现象的概率,所以加法平滑也叫做拉普拉斯平滑。 假定训练样本很大时,每个分量x的计数加1造成的估计概率变化可以忽略不计,但可以方便有效的避免零概率问题。

所以在垃圾邮件分类的问题中,可以得到:
P ( x j ∣ 垃圾邮件) = ∣ x j ∣ + 1 n P(x_j|垃圾邮件)=\frac{|x_j|+1}{n} P(xj垃圾邮件)=nxj+1
其中 ∣ x j ∣ 为词 x j |x_j|为词x_j xj为词xj在垃圾邮件中出现的次数,n为垃圾邮件的总词数。

五、朴素贝叶斯的两种模型

上面的例子我们假设特征取值是离散值,当特征取连续值时,概率的计算方式不同。而根据特征的取值不同,朴素贝叶斯可以分为两种模型:

  1. 多项式模型(multinomial model):特征取值为离散值;
  2. 高斯模型(Gaussian model):特征取值为连续变量.

1 多项式模型

在多项式模型中,特征取值为离散值,概率计算就同上面一样,统计每一个特征的频率当作概率。该模型常用于文本分类,特征是单词,值是单词的出现次数。设某文档 d = { t 1 , t 2 , . . . , t k } d=\{t_1,t_2,...,t_k\} d={t1,t2,...,tk} ,其中 t i t_i ti为在该文档d中出现的单词,允许重复,上面垃圾邮件分类就属于多项式模型。

2 高斯模型

当特征是连续变量的时候,运用多项式模型就会导致很多0(不做平滑的情况下),此时即使做平滑,所得到的条件概率也难以描述真实情况。所以处理连续的特征变量,应该采用高斯模型。

高斯朴素贝叶斯模型是假设每个特征的条件概率 P ( x i ∣ y i ) P(x_i\mid y_i) P(xiyi) 服从高斯分布 N ( μ t , σ t 2 ) N\left(\mu_{t}, \sigma_{t}^{2}\right) N(μt,σt2)。在 c c c 类下第 i \mathrm{i} i 个词对应的高斯分布为:
P ( x i ∣ y i ) = 1 σ i , y i 2 π e − ( x i − μ i , y i ) 2 2 σ i , y i 2 P(x_i\mid y_i)=\frac{1}{\sigma_{i, y_i} \sqrt{2 \pi}} e ^{-\frac{\left(x_{i}-\mu_{i, y_i}\right)^{2}}{2 \sigma_{i, y_i}^{2}}} P(xiyi)=σi,yi2π 1e2σi,yi2(xiμi,yi)2
其中, μ i , y i , σ i , y i 2 \mu_{i, y_i} , \sigma_{i, y_i}^{2} μi,yiσi,yi2 表示 y i y_i yi类下第 i \mathrm{i} i 个特征的均值和方差。所以关键是对高斯分布的均值和方差的估计,采用的方法极大似然估计,由概统的知识可得:

  • 均值的估计 μ i , y i \mu_{i, y_i} μi,yi 是在样本类别 y i y_i yi 中,所有 x i x_{i} xi 的平均值;
  • 方差的估计 σ i , y i 2 \sigma_{i, y_i}^{2} σi,yi2 为样本类别 y i y_i yi 中所有 x i x_{i} xi 的方差;

对于一个连续的样本值, 带入高斯分布,就可以求出它的概率分布了,所有参数估计完成之后,就可以计算给定样本的条件概率 P ( x 1 , x 2 ⋯   , x d ∣ y i ) P\left(x_1,x_2\cdots,x_d \mid y_i\right) P(x1,x2,xdyi) ,进而可以计算 P ( y i ) P ( x 1 , x 2 ⋯   , x d ∣ y i ) P(y_i)P\left(x_1,x_2\cdots,x_d \mid y_i\right) P(yi)P(x1,x2,xdyi),之后就可以确定样本类别,完成模型预测。

六、参考资料

  1. 周志华.机器学习.清华大学出版社,2016.
  2. 朴素贝叶斯分类算法
  3. 朴素贝叶斯原理
  4. 朴素贝叶斯之拉普拉斯平滑
声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/小蓝xlanll/article/detail/538815
推荐阅读
相关标签
  

闽ICP备14008679号