朴素贝叶斯总结

1. 简介

朴素贝叶斯是一种基于贝叶斯定理特征条件独立假设的分类算法。对于给定的训练数据,朴素贝叶斯先基于特征条件独立假设学习输入和输出的联合概率分布,然后基于此分布对于新的实例,利用贝叶斯定理计算出最大的后验概率。朴素贝叶斯不会直接学习输入输出的联合概率分布,而是通过学习类的先验概率和类条件概率来完成。

贝叶斯定理:
P ( c ∣ x ) = P ( x , c ) P ( x ) = P ( x ∣ c ) P ( c ) P ( x )          ( 1 − 1 ) P(c \mid x)=\frac{P(x, c)}{P(x)}=\frac{P(x \mid c) P(c)}{P(x)} \,\,\,\,\,\,\,\,(1-1) P(cx)=P(x)P(x,c)=P(x)P(xc)P(c)(11)
在这里插入图片描述
特征条件假设:条件独立假设就是说用于分类的特征在类确定的条件下都是条件独立的

2. 贝叶斯算法具体步骤

  • 首先计算类先验概率: 直接在训练数据中统计得出每个类出现的频率
    p ( y = c k ) = 1 N ∑ i = 1 N I ( y ~ i = c k ) , k = 1 , 2 , ⋯   , K p\left(y=c_{k}\right)=\frac{1}{N} \sum_{i=1}^{N} I\left(\tilde{y}_{i}=c_{k}\right), k=1,2, \cdots, K p(y=ck)=N1i=1NI(y~i=ck),k=1,2,,K

  • 然后计算类条件概率:在训练数据中统计出在已知某个类的情况下各个特征出现的概率,分母是类 c k c_k ck在训练集中出现的次数,分子是类为 c k c_k ck且特征为 a j a_j aj的样本在训练集中出现的次数
    p ( x j = a j , l ∣ y = c k ) = ∑ i = 1 N I ( x i , j = a j , l , y ~ i = c k ) ∑ i = 1 N I ( y ~ i = c k ) j = 1 , 2 , ⋯   , n ; l = 1 , 2 , ⋯   , s j ; k = 1 , 2 , ⋯   , K \begin{gathered} p\left(x_{j}=a_{j, l} \mid y=c_{k}\right)=\frac{\sum_{i=1}^{N} I\left(x_{i, j}=a_{j, l}, \tilde{y}_{i}=c_{k}\right)}{\sum_{i=1}^{N} I\left(\tilde{y}_{i}=c_{k}\right)} \\ j=1,2, \cdots, n ; l=1,2, \cdots, s_{j} ; k=1,2, \cdots, K \end{gathered} p(xj=aj,ly=ck)=i=1NI(y~i=ck)i=1NI(xi,j=aj,l,y~i=ck)j=1,2,,n;l=1,2,,sj;k=1,2,,K

  • 最后给定新的实例,计算其对应的最大后验概率 P ( c i ∣ x ) P(c_i|x) P(cix),然后判断其所属的类别:从式(1-1)中可以看出,无论 c i c_i ci是何类别,分母都是P(x),因此,在计算后验概率时可以对每个类别都不要除以P(x),这样最后得出的结果同样正确
    y ^ = arg ⁡ max ⁡ c k   p ( y = c k ) ∏ j = 1 n p ( x j ∣ y = c k ) \hat{y}=\arg \max _{c_{k}} \, p\left(y=c_{k}\right) \prod_{j=1}^{n} p\left(x_{j} \mid y=c_{k}\right) y^=argckmaxp(y=ck)j=1np(xjy=ck)

3. 贝叶斯算法的一个实例

给定如下数据,男生向女生求婚,男生的四个特点分别是不帅,性格不好,身高矮,不上进,请你判断一下女生是嫁还是不嫁?
在这里插入图片描述
我们最终目标是比较p(嫁|(不帅、性格不好、身高矮、不上进))p(不嫁|(不帅、性格不好、身高矮、不上进))的概率哪个大

p ( 嫁 ∣ ( 不 帅 、 性 格 不 好 、 身 高 矮 、 不 上 进 ) ) = p ( 嫁 ) p ( 不 帅 、 性 格 不 好 、 身 高 矮 、 不 上 进 ∣ 嫁 ) p ( 不 帅 、 性 格 不 好 、 身 高 矮 、 不 上 进 )          ( 3 − 1 ) p(嫁|(不帅、性格不好、身高矮、不上进))=\frac{p(嫁)p(不帅、性格不好、身高矮、不上进|嫁)}{p(不帅、性格不好、身高矮、不上进)} \,\,\,\,\,\,\,\,(3-1) p(())=p()p()p()(31)

p ( 不 嫁 ∣ ( 不 帅 、 性 格 不 好 、 身 高 矮 、 不 上 进 ) ) = p ( 不 嫁 ) p ( 不 帅 、 性 格 不 好 、 身 高 矮 、 不 上 进 ∣ 不 嫁 ) p ( 不 帅 、 性 格 不 好 、 身 高 矮 、 不 上 进 )          ( 3 − 2 ) p(不嫁|(不帅、性格不好、身高矮、不上进))=\frac{p(不嫁)p(不帅、性格不好、身高矮、不上进|不嫁)}{p(不帅、性格不好、身高矮、不上进)} \,\,\,\,\,\,\,\,(3-2) p(())=p()p()p()(32)

发现了没,两个公式的分母相同,所以可以直接比较分子的大小即可,无需计算分母(与第二节中的第三点对应)

下面以式(3-1)为例进行讲解:
根据独立性假设, p ( 不 帅 、 性 格 不 好 、 身 高 矮 、 不 上 进 ∣ 嫁 ) = p ( 不 帅 ∣ 嫁 ) p ( 性 格 不 好 ∣ 嫁 ) p ( 身 高 矮 ∣ 嫁 ) p ( 不 上 进 ∣ 嫁 ) p(不帅、性格不好、身高矮、不上进|嫁)=p(不帅|嫁)p(性格不好|嫁)p(身高矮|嫁)p(不上进|嫁) p()=p()p()p()p()

我们从给定的数据集中统计得出:p(嫁) = 6/12(总样本数) = 1/2p(不帅|嫁) = 3/6 = 1/2p(性格不好|嫁)= 1/6p(矮|嫁) = 1/6p(不上进|嫁) = 1/6

所以我们可以得出 p ( 嫁 ∣ ( 不 帅 、 性 格 不 好 、 身 高 矮 、 不 上 进 ) ) p(嫁|(不帅、性格不好、身高矮、不上进)) p(()),同理可得出 p ( 不 嫁 ∣ ( 不 帅 、 性 格 不 好 、 身 高 矮 、 不 上 进 ) ) p(不嫁|(不帅、性格不好、身高矮、不上进)) p(()),最后比较两者大小即可

4. QA

4.1 为什么需要假设特征之间相互独立呢?

假如没有这个假设,那么我们对右边这些概率的估计其实是不可做的,这么说,我们这个例子有4个特征,其中帅包括{帅,不帅},性格包括{不好,好,爆好},身高包括{高,矮,中},上进包括{不上进,上进},那么四个特征的联合概率分布总共是4维空间,总个数为233*2=36个,计算机扫描统计还可以,但是现实生活中,往往有非常多的特征,每一个特征的取值也是非常之多,那么通过统计来估计后面概率的值,变得几乎不可做,这也是为什么需要假设特征之间独立的原因。

假如我们没有假设特征之间相互独立,那么我们统计的时候,就需要在整个特征空间中去找,比如统计p(不帅、性格不好、身高矮、不上进|嫁),我们就需要在嫁的条件下,去找四种特征全满足分别是不帅,性格不好,身高矮,不上进的人的个数,这样的话,由于数据的稀疏性,很容易统计到0的情况, 这样是不合适的 。

4.2 朴素贝叶斯分类的优缺点

  • 算法逻辑简单,易于实现
  • 分类过程中时空开销小
  • 朴素贝叶斯模型假设属性之间相互独立,这个假设在实际应用中往往是不成立的,在属性个数比较多或者属性之间相关性较大时,分类效果不好

5. 简单实现

//todo...

参考

带你理解朴素贝叶斯分类算法
数学推导+纯Python实现机器学习算法11:朴素贝叶斯

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值