机器学习朴素贝叶斯
Posted 李呆呆的学习笔记
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了机器学习朴素贝叶斯相关的知识,希望对你有一定的参考价值。
(1)、简介
贝叶斯分类是一类分类算法的总称,这类算法均以贝叶斯定理为基础,故统称为贝叶斯分类。而朴素贝叶斯分类是贝叶斯分类中最简单,也是常见的一种分类方法。
它的数学原理简单来说就是:如果你看到一个人总是做一些好事,则会推断那个人多半会是一个好人。这就是说,当你不能准确知悉一个事物的本质时,你可以依靠与事物特定本质相关的事件出现的多少去判断其本质属性的概率。
(2)、基本概念
既然是朴素贝叶斯分类算法,那么它的核心就是贝叶斯公式:
换种表达形式,如下:
求得p(类别|特征)就是朴素贝叶斯算法的目的。
P(类别)是一种先验概率,而p(类别|特征)为后验概率。
基于贝叶斯公式来估计后验概率p(类别|特征)的困难主要在于:类条件概率p(特征|类别)是所有属性上的联合概率,难以从有限的训练样本中直接估计出来。因此,朴素贝叶斯提出了“属性条件独立性假设”,即假设已知类别内的所有属性相互独立。这也是“朴素”一词的来源。
有了以上“各个特征之间相互独立”的假设,后验概率p(类别|特征)可以写成:
(3)、方法原理(例子)
离散型特征
数据如下:
现在有一个男的向一个女的求婚,已知这个男生的四个特别分别是:不帅、性格不好、身高矮、不上进。请根据朴素贝叶斯判断这个女生会不会嫁给这个男生?
根据基本概念里面提到的朴素贝叶斯公式,可以将这个问题用公式表示:
并且提出前提假设:帅不帅、性格、身高、上不上进四个特征之间是相互独立的。
我们只要算出p(嫁)、p(不帅|嫁)、p(性格不好|嫁)、p(身高矮|嫁)、p(不上进|嫁)、p(不帅)、p(性格不好)、p(身高矮)、p(不上进)就可以得到这个女生嫁给这个男生的概率。
下面将一个一个进行计算:
① 、首先是先验概率p(嫁):我们可以在总的12个样本中发现有6个样本是嫁,因此p(嫁)=6/12=0.5
② 在6个嫁的样本中有3个是不帅,因此P(不帅|嫁)=3/6=0.5
③ 在6个嫁的样本中有1个是性格不好的,因此p(性格不好|嫁)=1/6
④ 在6个嫁的样本中有1个是身高矮的,因此p(身高矮|嫁)=1/6
⑤ 在6个嫁的样本中有1个是不上进的,因此p(不上进|嫁)=1/6
⑥ 在12个样本中,有4个不帅,因此p(不帅)=4/12=1/3
⑦ 在12个样本中,有4个性格不好,因此p(性格不好)=4/12=1/3
⑧ 在12个样本中,有7个身高矮,因此p(身高矮)=7/12
⑨ 在12个样本中,有4个不上进,因此p(不上进)=4/12=1/3
以上已经将所需的概率全部算出来了,下面依次带入公式中,可以计算出这个女生嫁给男生的概率=(0.5*0.5*1/6*1/6*1/6)/(1/3*1/3*1/3*7/12)=0.05357143
同理,我们可以计算出这个女生不嫁给男生的概率
① 、首先是先验概率p(不嫁):我们可以在总的12个样本中发现有6个样本是不嫁,因此p(不嫁)=6/12=0.5
② 在6个不嫁的样本中有1个是不帅,因此P(不帅|不嫁)=1/6
③ 在6个不嫁的样本中有3个是性格不好的,因此p(性格不好|不嫁)=3/6=0.5
④ 在6个不嫁的样本中有6个是身高矮的,因此p(身高矮|不嫁)=6/6=1
⑤ 在6个不嫁的样本中有3个是不上进的,因此p(不上进|不嫁)=3/6=0.5
⑥ 在12个样本中,有4个不帅,因此p(不帅)=4/12=1/3
⑦ 在12个样本中,有4个性格不好,因此p(性格不好)=4/12=1/3
⑧ 在12个样本中,有7个身高矮,因此p(身高矮)=7/12
⑨ 在12个样本中,有4个不上进,因此p(不上进)=4/12=1/3
以上已经将所需的概率全部算出来了,下面依次带入公式中,可以计算出这个女生不嫁给男生的概率=(0.5*0.5*1/6*1*0.5)/(1/3*1/3*1/3*7/12)=0.9642857
因此最终得出这个女生不嫁!!!
连续型特征
上述的例子四个特征都是离散型的。那么,特征为连续型变量时,朴素贝叶斯的各个概率的算法应该怎么算呢?
特征为连续型变量时,通常假设这些连续型数据为高斯分布。
例如,假设训练集中某个连续特征x。首先我们对数据类别分类,然后计算每个类别中x的 均值和方差。令 mc表示为x在c类上的均值,s2c表示为x 在c类上的方差。在给定类中某个值的概率p=(x=v|c),可以通过将v 表示为均值为mc方差为s2c的正态分布计算出来。如下:
数据:
现在有一个人身高6英尺,体重130磅、脚的尺寸8英尺,根据朴素贝叶斯分类判断这个人是男生还是女生?
因为该例子中的三个特征都是连续型变量,所以,要假设这三个特征都是高斯分布,并且分别计算这三个特征的均值和方差,得到如下:
根据朴素贝叶斯公式可以得到下面的式子:
下面依次进行计算:
① 、先验概率p(男性)=p(女性)=0.5
②、p(身高=6|男性)可以通过将v=6,均值为5.855,方差为3.5033e-2的正态分布计算出来
这里是通过概率密度函数,而不是概率分布函数计算的,所以大于1也是正常的。
③、p(体重=130|男性)可以通过将v=130,均值为176.25,方差为1.2292e2的正态分布计算出来
④、p(体重=130|男性)可以通过将v=130,均值为176.25,方差为1.2292e2的正态分布计算出来
⑤、公式的分母是一个常数,因为计算男性和女性的概率时,分母是一样的,所以直接比较分子就可以。
最终p(男性|身高=6,体重=130,脚长=8)=(0.5*1.5789*5.988e-6*1.3112e-3)/分母=6.1984e-9/分母
同理,也可以算出p(女性|身高=6,体重=130,脚长=8)=(5.3778e-4)/分母
由于女性的后验概率比较大,因此根据朴素贝叶斯预测这个样本为女性。
(4)、优缺点
优点:
(1)算法逻辑简单,易于实现
(2)分类过程中时空开销小
缺点:
理论上,朴素贝叶斯模型与其他分类方法相比具有最小的误差率。但是实际上并非总是如此,这是因为朴素贝叶斯模型假设属性之间相互独立,这个假设在实际应用中往往是不成立的,在属性个数比较多或者属性之间相关性较大时,分类效果不好。在属性相关性较小时,朴素贝叶斯性能最为良好。
以上是关于机器学习朴素贝叶斯的主要内容,如果未能解决你的问题,请参考以下文章