朴素贝叶斯分类算法


版权声明:本文为CSDN博主「JensLee」的原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/LEE18254290736/article/details/82414685

 

贝叶斯分类是一类分类算法的总称,这类算法均以贝叶斯定理为基础,故统称为贝叶斯分类。而朴素贝叶斯分类是贝叶斯分类中最简单,也是常见的一种分类方法。这篇文章我尽可能用直白的话语总结一下我们学习会上讲到的朴素贝叶斯分类算法,希望有利于他人理解。

 

1、分类问题综述

 既然是贝叶斯分类算法,那么分类的数学描述又是什么呢?

从数学角度来说,分类问题可做如下定义:已知集合,确定映射规则y = f(x),使得任意有且仅有一个,使得成立。

其中C叫做类别集合,其中每一个元素是一个类别,而I叫做项集合(特征集合),其中每一个元素是一个待分类项,f叫做分类器。分类算法的任务就是构造分类器 f。

分类算法的内容是要求给定特征,让我们得出类别,这也是所有分类问题的关键。那么如何由指定特征,得到我们最终的类别,也是我们下面要讲的,每一个不同的分类算法,对应着不同的核心思想。

 

2、朴素贝叶斯分类

那么既然是朴素贝叶斯分类算法,它的核心算法又是什么呢?

是下面这个贝叶斯公式:

换个表达形式就会明朗很多,如下:

我们最终求的p(类别|特征)即可!就相当于完成了我们的任务。

 

3、实例

给定数据如下:

问题:如果一对男女朋友,男生想女生求婚,男生的四个特点分别是不帅,性格不好,身高矮,不上进,请你判断一下女生是嫁还是不嫁?

这是一个典型的分类问题,转为数学问题就是比较p(嫁|(不帅、性格不好、身高矮、不上进))与p(不嫁|(不帅、性格不好、身高矮、不上进))的概率,谁的概率大,我就能给出嫁或者不嫁的答案!

这里我们联系到朴素贝叶斯公式:

我们需要求p(嫁|(不帅、性格不好、身高矮、不上进),这是我们不知道的,但是通过朴素贝叶斯公式可以转化为好求的三个量。

p(不帅、性格不好、身高矮、不上进|嫁)、p(不帅、性格不好、身高矮、不上进)、p(嫁)(至于为什么能求,后面会讲,那么就太好了,将待求的量转化为其它可求的值,这就相当于解决了我们的问题!)

 

4、朴素贝叶斯算法的朴素一词解释

(1)那么这三个量是如何求得?

是根据已知训练数据统计得来,下面详细给出该例子的求解过程。

 

(2)回忆一下我们要求的公式如下:

那么我只要求得p(不帅、性格不好、身高矮、不上进|嫁)、p(不帅、性格不好、身高矮、不上进)、p(嫁)即可,好的,下面我分别求出这几个概率,最后一比,就得到最终结果。

p(不帅、性格不好、身高矮、不上进|嫁) = p(不帅|嫁)*p(性格不好|嫁)*p(身高矮|嫁)*p(不上进|嫁),那么我就要分别统计后面几个概率,也就得到了左边的概率!

等等,为什么这个成立呢?学过概率论的同学可能有感觉了,这个等式成立的条件需要特征之间相互独立吧!

对的!这也就是为什么朴素贝叶斯分类有朴素一词的来源,朴素贝叶斯算法是假设各个特征之间相互独立,那么这个等式就成立了!

 

(3)但是为什么需要假设特征之间相互独立呢?

1、我们这么想,假如没有这个假设,那么我们对右边这些概率的估计其实是不可做的,这么说,我们这个例子有4个特征,其中帅包括{帅,不帅},性格包括{不好,好,爆好},身高包括{高,矮,中},上进包括{不上进,上进},那么四个特征的联合概率分布总共是4维空间,总个数为2*3*3*2=36个。

36个,计算机扫描统计还可以,但是现实生活中,往往有非常多的特征,每一个特征的取值也是非常之多,那么通过统计来估计后面概率的值,变得几乎不可做,这也是为什么需要假设特征之间独立的原因。

2、假如我们没有假设特征之间相互独立,那么我们统计的时候,就需要在整个特征空间中去找,比如统计p(不帅、性格不好、身高矮、不上进|嫁),

我们就需要在嫁的条件下,去找四种特征全满足分别是不帅,性格不好,身高矮,不上进的人的个数,这样的话,由于数据的稀疏性,很容易统计到0的情况。 这样是不合适的。

根据上面俩个原因,朴素贝叶斯法对条件概率分布做了条件独立性的假设,由于这是一个较强的假设,朴素贝叶斯也由此得名!这一假设使得朴素贝叶斯法变得简单,但有时会牺牲一定的分类准确率。

 

(4)好的,上面我解释了为什么可以拆成分开连乘形式。那么下面我们就开始求解!

我们将上面公式整理一下如下:

下面我将一个个的进行统计计算:

  • p(嫁) = 6/12(总样本数) = 1/2
  • 则p(不帅|嫁) = 3/6 = 1/2
  • 则p(性格不好|嫁)= 1/6
  • 则p(矮|嫁) = 1/6
  • 则p(不上进|嫁) = 1/6

下面开始求分母,p(不帅),p(性格不好),p(矮),p(不上进):

  • p(不帅) = 4/12 = 1/3
  • p(性格不好) = 4/12 = 1/3
  • p(身高矮) = 7/12
  • p(不上进) = 4/12 = 1/3

到这里,要求p(不帅、性格不好、身高矮、不上进|嫁)的所需项全部求出来了,下面我带入进去即可,

= (1/2*1/6*1/6*1/6*1/2)/(1/3*1/3*7/12*1/3)

 

(5)下面我们根据同样的方法来求p(不嫁|不帅,性格不好,身高矮,不上进),完全一样的做法,为了方便理解,我这里也走一遍帮助理解。首先公式如下:

下面我也一个一个来进行统计计算,这里与上面公式中,分母是一样的,于是我们分母不需要重新统计计算!

p(不嫁)=6/12 = 1/2

p(不帅|不嫁) = 1/6

p(性格不好|不嫁) =3/6 = 1/2

p(矮|不嫁) = 6/6 = 1

p(不上进|不嫁) = 3/6 = 1/2

那么根据公式:

p (不嫁|不帅、性格不好、身高矮、不上进) = ((1/6*1/2*1*1/2)*1/2)/(1/3*1/3*7/12*1/3)

 

(6)很显然(1/6*1/2*1*1/2) > (1/2*1/6*1/6*1/6*1/2)

于是有p (不嫁|不帅、性格不好、身高矮、不上进)>p (嫁|不帅、性格不好、身高矮、不上进)

所以我们根据朴素贝叶斯算法可以给这个女生答案,是不嫁!!!!

 

5、高斯朴素贝叶斯分类器

(1)若x为离散属性(朴素贝叶斯分类器)

在估计条件概率时,若为离散值属性,那么我们只需计算每个属性取值占所有样本的数量比例:


表示训练集D中第c类样本组成的集合,外加两条竖线表示的是集合的元素数量。表示的是中在第i个属性值上取值为xi的的样本组成的集合。

(2)若x为连续属性(高斯朴素贝叶斯分类器​​​​​​​)

为连续值属性,我们就得用概率密度函数了。

我们不妨假设服从高斯分布,基于这个分布,我们就可以构造一个高斯朴素贝叶斯分类器了。

假定服从这样的高斯分布,分别是第c类样本在第i个属性上取值的均值和方差。

的概率密度函数为:

这样我们就可以计算出各个p(xi|c),然后利用上面的公式:

建立一个高斯朴素贝叶斯分类器,我们用已知的类变量c的所有可能的值计算概率,并选择输出概率是最大的结果。

 

 

6、朴素贝叶斯分类的优缺点

优点:

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

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

缺点:

理论上,朴素贝叶斯模型与其他分类方法相比具有最小的误差率。但是实际上并非总是如此,这是因为朴素贝叶斯模型假设属性之间相互独立,这个假设在实际应用中往往是不成立的,在属性个数比较多或者属性之间相关性较大时,分类效果不好。

而在属性相关性较小时,朴素贝叶斯性能最为良好。对于这一点,有半朴素贝叶斯之类的算法通过考虑部分关联性适度改进。

 

 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值