统计学习方法——朴素贝叶斯

今天介绍的朴素贝叶斯算法是基于贝叶斯定理和条件独立性假设的分类算法。它是一种典型的生成式算法,首先基于条件独立性假设用训练数据学习联合概率分布P(X, Y),然后根据此模型通过最大化后验概率对新来的数据x进行预测。

联合概率分布

根据贝叶斯算法思想,第一步是要学习P(X, Y),根据条件概率公式p(x,y) = p(x|y)p(y),我们可以通过求出条件概率p(x|y)和先验概率p(y)来得到联合概率分布,那么条件概率和先验概率我们怎么计算呢?用极大似然估计或者贝叶斯估计的方法!先验概率计算公式比较简单,用训练集中标签为C_{k}的样本数比上样本总量即可:

p(y=C_{k}) =\frac{\sum_{i=1}^{N}I(y_{i}=C_{k})}{N}                      (1)

但是条件概率的计算就比较麻烦了,我们先看一下计算公式:

p(X=x|y=C_{k}) = p(X^{(1)}=x^{(1)},X^{(2)}=x^{(2)},...,X^{(m)}=x^{(m)}|y=C_{k})              (2)

m代表特征的维度,计算条件概率时,我们需要考虑每维特征的取值,假设标签有K个取值,每维特征有S_{i}个取值,我们排列组合一下,相当于一共有K\prod_{i=1}^{m}S_{i}。为了简化计算,朴素贝叶斯算法做出了条件独立性假设。条件独立性假设是指用于分类的特征在类别确定的情况是条件独立的。如果还是不明白,我们来看一下公式吧:

p(X=x|y=C_{k})=\prod_{j=1}^{m}p(X^{(j)}=x^{(j)}|y=C_{k})                           (3)

这样我们就可以单独学习每一维特征对应的条件概率p(X^{(j)}=x^{(j)}|Y=C_{k})再将它们作为当前特征对应标签下的条件概率。现在问题转为学习每一维特征对应的条件概率。设第j维特征可能取值的集合为x^{(j)} \in \left \{ a_{j1}, a_{j2}, a_{j3},...,a_{jS_{j}} \right \},条件概率p(x^{(j)}=a_{jl}|Y=C_{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})}                      (4)

j=1,2,...,m; l=1,2,...,S_{j}; k=1,2,...,K

这是一个非常强的假设,在我们现实情况下,很少会出现特征之前完全不想关的情况,不过不可否认,在很多情况下,朴素贝叶斯的效果还是很好的,比如垃圾邮件过滤。

所以根据先验概率和条件概率,我们可以得到联合概率分布的公式:

p(X=x,Y=C_{k})=p(Y=C_{k})\prod_{j=1}^{m}p(X^{(j)}=x^{(j)}|Y=C_{k})                           (5)

接下来我们看一下如何最大化后验概率对新数据进行预测。

最大化后验概率

后验概率的计算公式是p(Y=C_{k}|X=x) = \frac{p(X=x,Y=C_{k})}{p(X=x)},我们把先验概率和条件概率带入

p(Y=C_{k}|X=x)\\ =\frac{p(Y=C_{k})p(X=x|Y=C_{k})}{p(X=x)}\\ =\frac{p(Y=C_{k})\prod_{j=1}^{m}p(X^{(j)}=x^{(j)}|Y=C_{k})}{\sum_{k=1}^{K}p(X=x|Y=C_{k})p(Y=C_{k})}\\ =\frac{p(Y=C_{k})\prod_{j=1}^{m}p(X^{(j)}=x^{(j)}|Y=C_{k})}{\sum_{k=1}^{K}p(Y=C_{k})\prod_{j=1}^{m}p(X^{(j)}=x^{(j)}|Y=C_{k})}                           

最大化后验概率得预测结果:

y =arg\max_{C_{k}}\frac{p(Y=C_{k})\prod_{j=1}^{m}p(X^{(j)}=x^{(j)}|Y=C_{k})}{\sum_{k=1}^{K}p(Y=C_{k})\prod_{j=1}^{m}p(X^{(j)}=x^{(j)}|Y=C_{k})}                         (6)

对任意C_{k}分母都是一样的,所以我们的目标等价于:

y =arg\max_{C_{k}}p(Y=C_{k})\prod_{j=1}^{m}p(X^{(j)}=x^{(j)}|Y=C_{k})                             (7)

现在模型的学习和预测流程我们已经清晰了,在讲解联合概率分布这一部分的时候,我们提到了可以用极大似然估计和贝叶斯估计进行参数估计,不过只用到了极大似然估计,参照前面的公式(1)(4)。

我们以垃圾邮件过滤为例来说明一下极大似然估计的局限性。假设现在我们已经有一个用极大似然估计来进行参数估计的朴素贝叶斯模型,当我们第一次收到来自诈骗公司Fraud company的垃圾邮件,我们从邮件中提取到了公司名称Fraud company作为一维特征加入到模型训练中。因为这各特征之前没有出现过,所以对\forall C_{k}, p(x^{j}='Fraud company'|y=C_{k})=0。这导致在后面最大化后验概率时\forall C_{k},p(y=C_{k}|X=x)=0,那我们的模型就无法正确预测出这是一封垃圾邮件了。

为了解决这一问题,引入了贝叶斯估计。不同于最大似然估计,贝叶斯估计会在分子和分母上各加一个常数项\lambda来保障即使是新加入的特征参数估计值也不会为0

p(y=C_{k}) =\frac{\sum_{i=1}^{N}I(y_{i}=C_{k})+\lambda }{N+K\lambda }                           (8)

p(x^{(j)}=a_{jl}|Y=C_{k})=\frac{\sum_{i=1}^{N}I(x^{(j)}=a_{jl},y_{i}=C_{k})+\lambda }{\sum_{i=1}^{N}I(y_{i}=C_{k})+\lambda S_{j}}                    (9)

同时保证了\sum_{k=1}^{K}p(y=C_{k})=1\sum_{l=1}^{S_{j}}p(X^{j}=a_{jl}|Y=C_{k})=1

后验概率最大化含义

在《统计学习方法》中,作者证明了后验概率最大化等价于0-1损失函数下的期望风险最小化,我们先看一下0-1损失函数:

L(Y,f(X))=\left \{ \begin{matrix} 1, f(X)=Y\\ 0, f(X)\neq Y \end{matrix} \right.                                 (10)

式中的f(x)是分类决策函数,可以认为就是模型的预测结果。这时,期望风险函数:

R_{exp}(f)=E\left [ L(Y,f(X)) \right ]=E_{X}\sum_{k=1}^{K}L(Y,f(X))P(c_{k}|X)                (11)

为了最小化期望风险,只需要对每一个X=x逐个最小化:

f(x)\\ =arg\min_{c_{k}}\sum_{k=1}^{K}L(f(x),c_{k})p(c_{k}|X=x)\\ =arg\min_{c_{k}}\sum_{k=1}^{K}p(f(x)\neq c_{k})p(C_{k}|X=x)\\ =arg\min_{c_{k}}\sum_{k=1}^{K}p(f(x)\neq y|X=x)\\ =arg\max_{c_{k}}\sum_{k=1}^{K}p(f(x)=y|X=x)}|X=x)\\ =arg\min_{c_{k}}\sum_{k=1}^{K}p(f(x)\neq y|X=x) \\ =arg\max_{c_{k}}\sum_{k=1}^{K}p(f(x)= y|X=x)

对于特定的x,模型预测结果只能有一个,所以在这种情况下,arg\max_{c_{k}}\sum_{k=1}^{K}p(f(x)= y|X=x)=arg\max_{c_{k}}p(f(x)= y|X=x)即选择X=x条件下,标签最多的类,这和我们前面定义的最大化后验概率是一样的。至此,我们得以证明后验概率最大化等价于0-1损失函数下的期望风险最小化。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值