朴素贝叶斯分类

贝叶斯分类算法,是一类以贝叶斯定理为基础的分类算法,因为有非常扎实的数学理论基础,所以分类效果非常不错而且计算的开销也比较低。算法的难点是需要足够大的数据集以及如何表示概率,基于纯概率的一个算法

一、分类问题

最简单的分类问题,采用西瓜书的例子。你去选瓜的话,会根据瓜的各种特征(纹路,颜色,瓜蒂是否卷曲,拍打声。。。)来判断这个瓜是否成熟。基于的原理是我们的经验,每次我都买这样的瓜都是熟的。朴素贝叶斯也是这样的原理。
利用数学进行描述,已知集合C={y1,y2,…,yn}和I={X1,X2,…Xm}。其中每个X是一个样本,里面有含有不同的特征{x1,x2,…,xt}。我们希望找到一个映射y=f(X)。这个f其实就是我们的经验。

二、贝叶斯决策

2.1 后验概率

P{H0|x}是给定观测值x条件下H0出现的概率,统称为后验概率。学过概率论的对于这种形式知道这个是条件概率。

2.2 贝叶斯定理

贝叶斯分类的基础就是贝叶斯定理。
条件概率定义:
事件A在另外一个事件B已经发生条件下的发生概率。条件概率表示为P(A|B),读作“在B条件下A发生的概率”。
在这里插入图片描述
所以可以很简单的知道
P ( A ∣ B )    =    P ( A ∩ B ) / P ( B ) P\left( A|B \right) \,\,=\,\,P\left( A\cap B \right) /P\left( B \right) P(AB)=P(AB)/P(B)
所以可以得到以下公式
P ( B ∣ A ) ⋅ P ( A )    =    P ( A ∩ B )    =    P ( A ∣ B ) ⋅ P ( B ) P\left( B|A \right) \cdot P\left( A \right) \,\,=\,\,P\left( A\cap B \right) \,\,=\,\,P\left( A|B \right) \cdot P\left( B \right) P(BA)P(A)=P(AB)=P(AB)P(B)
则可以得到贝叶斯定理
P ( B ∣ A )    =    P ( A ∣ B ) ⋅ P ( B ) P ( A ) P\left( B|A \right) \,\,=\,\,\frac{P\left( A|B \right) \cdot P\left( B \right)}{P\left( A \right)} P(BA)=P(A)P(AB)P(B)

朴素贝叶斯分类

朴素贝叶斯就是将贝叶斯算法应用到分类之中。

(1)x=(x1,x2,…xD)表示含有D维属性的数据对象。训练集S含有K个类别,表示为y=(y1,y2,…yK)。

(2)已知待分类数据对象xx,预测xx所属类别,计算方式如下:
y k    =    a r g    max ⁡ y k ∈ y ( P ( y k ∣ x ) ) y_k\,\,=\,\,\underset{y_k\in y}{arg\,\,\max}\left( P\left( y_k|\text{x} \right) \right) yk=ykyargmax(P(ykx))

所得yk即为x所属类别。上式表示,已知待分类数据对象x的情况下,分别计算x属于y1、y2、…、yK的概率,选取其中概率的最大值,此时所对应的yk,即为x所属类别。

(3)根据贝叶斯定理,P(yk|x)计算方式如下:
P ( y k ∣ x )    =    P ( x ∣ y k ) ⋅ P ( y k ) P ( x ) P\left( y_k|\text{x} \right) \,\,=\,\,\frac{P\left( \text{x}|y_k \right) \cdot P\left( y_k \right)}{P\left( \text{x} \right)} P(ykx)=P(x)P(xyk)P(yk)

计算过程中,P(x)对于P(yk|x),相当于常数。因此,若想得到P(yk|x)最大值,只需计算P(x|yk)P(yk)最大值。如果类别的先验概率未知,即P(yk)未知,则通常假定这些类别是等概率的,即P(y1)=P(y2)=…=P(yK)。

(4)假设数据对象xx的各属性之间相互独立,P(x|yk)计算方式如下:
P ( x ∣ y k )    =    ∏ d = 1 D P ( x d ∣ y k ) P\left( \text{x}|y_k \right) \,\,=\,\,\prod_{d=1}^D{P\left( x_d|y_k \right)} P(xyk)=d=1DP(xdyk)

(5)P(xd|yk)的计算方式如下:
如果属性Ad是离散属性或分类属性。训练集中属于类别ykyk的数据对象,在属性AdAd下的相异属性值共有n个;训练集中属于类别yk,且在属性Ad下的属性值为xdxd的数据对象共有m个。因此,P(xd|yk)计算方式如下:
P ( x d ∣ y k )    =    m n P\left( x_d|y_k \right) \,\,=\,\,\frac{m}{n} P(xdyk)=nm

如果属性AdAd是连续属性。通常假设连续属性均服从均值为μμ、标准差为σσ的高斯分布, 即
G ( x ) = 1 2 π σ e − ( x − μ ) 2 2 σ 2 G\left( x \right) =\frac{1}{\sqrt{2\pi}\sigma}e^{-\frac{\left( x-\mu \right) ^2}{2\sigma ^2}} G(x)=2π σ1e2σ2(xμ)2
因此,P(xd|yk)P(xd|yk)计算方式如下:
P ( x d ∣ y k ) = G ( x d , μ y k , σ y k ) P\left( x_d|y_k \right) =G\left( x_d,\mu _{y_k},\sigma _{y_k} \right) P(xdyk)=G(xd,μyk,σyk)
其中,μykμyk、σykσyk表示训练集中属于类别ykyk的数据对象在属性AdAd下的均值和标准差。

四、优缺点

优点:

(1) 算法逻辑简单,易于实现(算法思路很简单,只要使用贝叶斯公式转化一下即可!)

(2)分类过程中时空开销小(假设特征相互独立,只会涉及到二维存储)

缺点:
朴素贝叶斯为什么朴素,就是认为特征之间是相互独立的,这个是非常武断的。在数据简单的时候效果非常好,但是我们现在面对的任务数据非常的复杂,算法效果就真很好了。

参考文献:
https://blog.csdn.net/qq_17073497/article/details/81076250
https://blog.csdn.net/tanggao1314/article/details/66478782

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值