朴素贝叶斯算法原理和实现

朴素贝叶斯算法简单高效,在处理分类问题上,应该是首先要考虑的方法之一

1. 准备知识

贝叶斯分类是一类算法的总称,这类算法均以贝叶斯定理为基础,故称贝叶斯分类
这个定理解决了生活里经常遇到的问题:已知某条件概率,如何得到两个事件交换后的概率,也就是在已知P(X|Y)的情况下如何求得P(Y|X)。这里先解释什么是条件概率。

P(X∣Y)=P(XY)P(Y)P(X|Y)=\frac{P(XY)}{P(Y)}P(XY)=P(Y)P(XY)

P(Y|X)表示事件X已经发生的条件下,事件Y发生的概率,其基本的求解公式维:
P(Y∣X)=P(X∣Y)P(Y)P(X)P(Y|X)=\frac{P(X|Y)P(Y)}{P(X)}P(YX)=P(X)P(XY)P(Y)

它其实是由以下的联合概率推导出来:
P(Y,X)=P(Y∣X)P(X)=P(X∣Y)P(Y)P(Y,X)=P(Y|X)P(X)=P(X|Y)P(Y)P(Y,X)=P(YX)P(X)=P(XY)P(Y)

其中P(Y)叫做类标签的先验(prior)概率(可以根据数据计算出来的概率),P(Y|X)叫做后验概率(根据先验概率计算出来的概率),P(Y,X)叫做联合概率。P(X|Y)是样本X相对于类标签Y的类条件概率。P(X)是用于归一化的证据因子,它于类的标签无关。
因此估计P(Y|X)问题就转化为如何基于训练数据D来估计先验概率P(Y)和条件概率P(X|Y)。

2. 极大似然估计

估计类标签的条件概率的一种常用策略是先假定其具有某种确定的概率分布,再基于训练样本对概率分布的参数进行估计。令DcD_{c}Dc表示训练集D中第c类样本组成的集合,假设这些样本是独立同分布的,则参数θc\theta_{c}θc对于数据集DcD_{c}Dc的似然是P(Dc∣θc)=∏x=DcP(x∣θc)P(D_{c}|\theta_{c})=\prod_{x=D_{c}} P(x|\theta_{c}) P(Dcθc)=x=DcP(xθc)
极大似然估计试图在θc\theta_{c}θc的所有可能取值中,找到一个能使得数据出现的可能性最大的值。

3.朴素贝叶斯分类

使用贝叶斯准则来最小化决策风险,首先就要获得后验概率P(Y|X)。然而在现实任务中通常很难直接获得。机器学习所要实现的就是基于有限的训练样本集尽可能准确的估计出后验概率P(Y|X)。

主要有两种方案:第一,给定X,可以直接通过建模P(Y|X)来预测Y,这样得到的是“判别式模型”。第二,先对联合概率P(X,Y)建模,然后获得后验概率,这样得到的是“生成式模型”。决策树、BP神经网络、支持向量机都是判别式模型。

之所以叫朴素贝叶斯分类,是因为贝叶斯公式来估计后验概率P(Y|X)的主要困难在于类标签的条件概率P(X|Y)是所有属性上的联合概率。难以从有限的训练样本中直接估计而得出。为了解决这个问题,朴素贝叶斯采用了“属性条件独立性假设”,即对已知类别,假设所有属性相互独立,换言之,假设每个属性独立的对分类结果产生影响。

基于独立性假设,贝叶斯定理可以写成:
P(Y∣X)=P(X∣Y)P(Y)P(X)=P(Y)P(X)∏i=1dP(xi∣y)P(Y|X)=\frac{P(X|Y)P(Y)}{P(X)}=\frac{P(Y)}{P(X)}\prod_{i=1}^{d}P(x_{i}|y)P(YX)=P(X)P(XY)P(Y)=P(X)P(Y)i=1dP(xi)
  其中d为属性数目,xix_{i}xi为X在第i个属性上的取值。

3.1朴素贝叶斯的分类步骤

  1. xi=a1,a2,...,amx_{i}={a_{1},a_{2},...,a_{m}}xi=a1,a2,...,am是一个待分类项,而每个aaaXXX的一个特征属性
  2. 有类别集合C=y1,y2,...,ynC={y_{1},y_{2},...,y_{n}}C=y1,y2,...,yn
  3. 计算P(y1∣xi),P(y2∣xi),...,P(yn∣xi)P(y_{1}|x_{i}),P(y_{2}|x_{i}),...,P(y_{n}|x_{i})P(y1xi),P(y2xi),...,P(ynxi)条件概率
  4. 如果P(yk∣xi)=max{ P(y1∣xi),P(y2∣xi),...,P(yn∣xi)}P(y_{k}|x_{i})=max\{P(y_{1}|x_{i}),P(y_{2}|x_{i}),...,P(y_{n}|x_{i})\}P(ykxi)=max{ P(y1xi),P(y2xi),...,P(ynx
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值