《统计学习方法(第二版)》学习笔记 第四章 朴素贝叶斯法

朴素贝叶斯法是基于贝叶斯定理和特征条件独立假设的生成模型,概率估计采用的是极大似然估计方法,即用频率作为概率的近似值。在我理解里,其实朴素贝叶斯法和KNN算法一样,都没有显式的参数学习过程,都是基于实例的,即当前数据集如果确定了的话,则模型也是确定的,这和神经网络是明显不一样的。朴素贝叶斯法思想虽然简单,但却很经典,值的我们花时间去学习和深入理解。

朴素贝叶斯法

1. 基本方法

​ 首先,我们给出常规的分类任务的定义:设输入空间 χ ⊆ R n \chi \subseteq R^{n} χRn为n维向量的集合,输出空间为类标记集合 Y = { c 1 , c 2 , ⋯   , c k } Y=\{ c_{1},c_{2},\cdots ,c_{k} \} Y={c1,c2,,ck}。输入为特征向量 x ∈ χ x\in \chi xχ,输出为类标记 y ∈ ν y\in \nu yν。设 X X X是定义在输入空间的随机向量,Y是定义在输出空间上的随机向量, P ( X , Y ) P(X,Y) P(X,Y) X X X Y Y Y的联合概率分布。训练数据集

T = { ( x 1 , y 1 ) , ( x 2 , y 2 ) , ⋯   , ( x N , y N ) } T=\{ (x_{1},y_{1}),(x_{2},y_{2}),\cdots , (x_{N},y_{N}) \} T={(x1,y1),(x2,y2),,(xN,yN)}

​ 由 P ( X , Y ) P(X,Y) P(X,Y)独立同分布产生。

​ 分类的目标为:根据当前的输入向量 x x x,得到对应的条件概率 P ( Y = c i ∣ X = x ) P(Y=c_{i}|X=x) P(Y=ciX=x)最大的类别 c i c_{i} ci,即为输入向量的最终分类结果。

​ 根据贝叶斯公式:

P ( Y = c i ∣ X = x ) = P ( Y = c i , X = x ) P ( X = x ) = P ( X = x ∣ Y = c i ) P ( Y = c i ) P ( X = x ) P(Y=c_{i}|X=x)=\frac{P(Y=c_{i},X=x)}{P(X=x)}=\frac{P(X=x|Y=c_{i})P(Y=c_{i})}{P(X=x)} P(Y=ciX=x)=P(X=x)P(Y=ci,X=x)=P(X=x)P(X=xY=ci)P(Y=ci)

​ 设输入向量 x = { x 1 , x 2 , ⋯   , x n } x=\{x^{1},x^{2}, \cdots,x^{n}\} x={x1,x2,,xn},则上面的公式可以改写为:

在这里插入图片描述
​ 公式推导中最重要的一步为 ( 2 ) → ( 3 ) (2)\rightarrow (3) (2)(3),这一步是基于朴素贝叶斯法对特征的条件独立性假设而来的,这也是朴素贝叶斯法中"朴素"的由来。条件独立性假设中假设条件之间是相互独立的,即:

P ( X 1 = x 1 , X 2 = x 2 , ⋯   , X n = x n ) = ∏ j P ( X j ) P(X^{1}=x^{1},X^{2}=x^{2}, \cdots, X^{n}=x^{n})=\prod_{j}P(X^{j}) P(X1=x1,X2=x2,,Xn=xn)=jP(Xj)

条件独立性假设中假定特征之间是相互独立的,这使得朴素贝叶斯法中的参数量大大减少,模型变的更简单。

​ 假设输入向量 x x x的第 j j j维值为 x j x^{j} xj,可取值有 S j S^{j} Sj个, Y Y Y的可取值有 K K K个。

​ 无论特征是否条件独立, P ( X = x ) P(X=x) P(X=x) P ( Y = c i ) P(Y=c_{i}) P(Y=ci)都是由样本直接得到,参数量的区别在于 P ( X = x ∣ Y = c i ) P(X=x|Y=c_{i}) P(X=xY=ci)的求解过程:

  • 在特征之间是条件独立的情况下 P ( X = x ∣ Y = c i ) P(X=x|Y=c_{i}) P(X=xY=ci)可由 P ( X j = x j ∣ Y = c i ) P(X^{j}=x^{j}|Y=c_{i}) P(Xj=xjY=ci)连乘得到,我们需要学习的参数为 P ( X j = x j ∣ Y = c i ) P(X^{j}=x^{j}|Y=c_{i}) P(Xj=xjY=ci),则总的参数量为 K ∑ j n S j K\sum_{j}^{n}S_{j} KjnSj

  • 在特征不是条件独立的情况下 P ( X = x ∣ Y = c i ) P(X=x|Y=c_{i}) P(X=xY=ci)只能由样本学习而来,所以每种 X X X的取值都是一个参数,总的参数量为 K ∏ j n S j K\prod _{j}^{n}S_{j} KjnSj

    连乘在一般情况下的值肯定比连加要大得多,所以可得在基于特征的条件独立假设的情况下,参数量会少很多,模型变得更简单。

​ 由式子 ( 4 ) (4) (4),可得朴素贝叶斯的目标函数为:

y = f ( x ) = a r g m a x c k    ∏ j P ( X j = x j ∣ Y = c i ) P ( Y = c i ) ∑ k P ( Y = c k ) ∏ j P ( X j = x j ∣ Y = c k ) y=f(x)=\underset{c_{k}}{argmax} \ \ \frac{\prod_{j}P(X^{j}=x^{j}|Y=c_{i})P(Y=c_{i})}{\sum_{k}P(Y=c_{k})\prod_{j}P(X^{j}=x^{j}|Y=c_{k})} y=f(x)=ckargmax  kP(Y=ck)jP(Xj=xjY=ck)jP(Xj=xjY=ci)P(Y=ci)

​ 而对于同一个输入 x x x,可知这个式子中分母是不变的,相同的不变的分母对值的大小关系是没有影响的,所以我们可以忽略掉这个分母值,新的目标函数变为:

y = f ( x ) = a r g m a x c k    ∏ j P ( X j = x j ∣ Y = c k ) P ( Y = c k ) y=f(x)=\underset{c_{k}}{argmax} \ \ \prod_{j}P(X^{j}=x^{j}|Y=c_{k})P(Y=c_{k}) y=f(x)=ckargmax  jP(Xj=xjY=ck)P(Y=ck)

​ 综上可得,如果我们要得到一个输入向量 x x x对应的标签 y y y,我们需要每个类别 c k c_{k} ck对应的值包括先验概率分布 P ( Y = c k ) P(Y=c_{k}) P(Y=ck)和每个类别对应每个特征的条件概率分布 P ( X j = x j ∣ Y = c k ) P(X^{j}=x^{j}|Y=c_{k}) P(Xj=xjY=ck)。这些概率值都是可以通过样本学习而来的。

2. 参数估计方法

2.1 取值为离散量

​ 朴素贝叶斯法应用极大似然估计来得到近似的概率值,简而言之一句话,就是用样本的频度来估计概率,比如有10个样本,其中包括2个红色的样本,则红色出现的概率即为 1 5 \frac{1}{5} 51。朴素贝叶斯法中的参数估计也是基于样本的,具体形式如下:

P ( Y = c k ) = ∑ i = 1 N I ( y i = c k ) N P(Y=c_{k})=\frac{\sum_{i=1}^{N}I(y_{i}=c_{k})}{N} P(Y=ck)=Ni=1NI(yi=ck)

P ( X ( j ) = a j l ∣ Y = c k ) = ∑ i = 1 N I ( x i ( j ) = a j l , y = c k ) ∑ i = 1 N I ( y i = c k ) P(X^{(j)}=a_{jl}|Y=c_{k})=\frac{\sum _{i=1}^{N}I(x^{(j)}_{i}=a_{jl},y=c_{k})}{\sum_{i=1}^{N}I(y_{i}=c_{k})} P(X(j)=ajlY=ck)=i=1NI(yi=ck)i=1NI(xi(j)=ajl,y=ck)

​ 其中, x i ( j ) x_{i}^{(j)} xi(j)为第 i i i个样本的第 j j j个特征, a j l a_{jl} ajl为第 j j j个特征可能取的第 l l l个值。

另一种方法是通过将连续值离散化,然后用相应的离散区间替换连续属性值(比如值在区间 [ 0 , 1 ] [0,1] [0,1]之间的所有连续值都离散化为1),这样就能将连续值问题转化为离散值问题求解。但这种方法不好控制离散区间的划分粒度,粒度过细或过粗都会产生问题。如果粒度过细,则每个区间中包含的样本太少,这会使得离散特征值并不具有代表性,不能得到有效可靠的概率值;如果粒度过粗,那么区间汇总会包含来自不同类别的记录,使得特征值失去了正确的决策边界。

2.2 取值为连续量

​ 当各个特征的取值为连续值时,我们不需要再去计算在每个类别下,每个特征的各个取值的出现概率,而是直接计算样本 x x x对应的概率。假设每个样本都服从正态分布:

P ( X = x ∣ Y = c k ) = 1 2 π σ k 2 e x p ( − ( x − μ k ) 2 2 σ k 2 ) P(X=x|Y=c_{k})=\frac{1}{\sqrt{2\pi \sigma _{k}^{2}}}exp(-\frac{(x-\mu _{k})^{2}}{2\sigma _{k}^{2}}) P(X=xY=ck)=2πσk2 1exp(2σk2(xμk)2)

​ 其中 μ k \mu_{k} μk为类别为 c k c_{k} ck的所有样本的第 j j j维的平均值, σ k 2 \sigma _{k}^{2} σk2为类别为 c k c_{k} ck的所有样本的第 j j j维的方差。

3. 学习分类算法

  1. 先从样本集中学习得到先验概率和条件概率

    1. 当特征为离散值时:

    P ( Y = c k ) = ∑ i = 1 N I ( y i = c k ) N P(Y=c_{k})=\frac{\sum_{i=1}^{N}I(y_{i}=c_{k})}{N} P(Y=ck)=Ni=1NI(yi=ck)

    P ( X ( j ) = a j l ∣ Y = c k ) = ∑ i = 1 N I ( x i ( j ) = a j l , y = c k ) ∑ i = 1 N I ( y i = c k ) P(X^{(j)}=a_{jl}|Y=c_{k})=\frac{\sum _{i=1}^{N}I(x^{(j)}_{i}=a_{jl},y=c_{k})}{\sum_{i=1}^{N}I(y_{i}=c_{k})} P(X(j)=ajlY=ck)=i=1NI(yi=ck)i=1NI(xi(j)=ajl,y=ck)

    1. 当特征为连续值时:

    ​ 只需计算类别为 c k c_{k} ck的所有样本的平均值 μ k \mu_{k} μk和方差 σ k 2 \sigma _{k}^{2} σk2,在根据正态分布公式直接计算样本每一维的概率相乘即可得到样本的概率。或者通过将连续值离散化来计算概率。

  2. 对于给定的实例 x = ( x ( 1 ) , x ( 2 ) , ⋯   , x ( n ) ) x=(x^{(1)},x^{(2)},\cdots, x^{(n)}) x=(x(1),x(2),,x(n)),计算

    P ( Y = c k ∏ j n P ( X j = x j ∣ Y = c k ) ) P(Y=c_{k}\prod_{j}^{n}P(X^{j}=x^{j}|Y=c_{k})) P(Y=ckjnP(Xj=xjY=ck))

  3. 确定实例 x x x的类

y = a r g m a x c k    ∏ j P ( X j = x j ∣ Y = c k ) P ( Y = c k ) y=\underset{c_{k}}{argmax} \ \ \prod_{j}P(X^{j}=x^{j}|Y=c_{k})P(Y=c_{k}) y=ckargmax  jP(Xj=xjY=ck)P(Y=ck)

​ 为了解决采用极大似然估计可能会出现的所要估计的概率值为0的情况,一般会引入__拉普拉斯平滑__方法,等价于在随机变量各个取值的频数上加上一个正数 λ > 0 \lambda >0 λ>0,常取 λ = 1 \lambda=1 λ=1。当 λ = 0 \lambda=0 λ=0时,即为极大似然估计。

P ( Y = c k ) = ∑ i = 1 N I ( y i = c k ) + λ N + K λ P(Y=c_{k})=\frac{\sum_{i=1}^{N}I(y_{i}=c_{k})+\lambda}{N+K\lambda} P(Y=ck)=N+Kλi=1NI(yi=ck)+λ

P ( X ( j ) = a j l ∣ Y = c k ) = ∑ i = 1 N I ( x i ( j ) = a j l , y = c k ) + λ ∑ i = 1 N I ( y i = c k ) + S j λ P(X^{(j)}=a_{jl}|Y=c_{k})=\frac{\sum _{i=1}^{N}I(x^{(j)}_{i}=a_{jl},y=c_{k})+\lambda}{\sum_{i=1}^{N}I(y_{i}=c_{k})+S_{j}\lambda} P(X(j)=ajlY=ck)=i=1NI(yi=ck)+Sjλi=1NI(xi(j)=ajl,y=ck)+λ

​ 其中 K K K为类别数

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值