并不朴素的朴素贝叶斯

为什么叫做朴素贝叶斯呢?Naive Bayes,主要是突出算法的简易型,因为该算法基于一个很朴素的假设:所有的变量都是相互独立的,呵呵,很明显,事实上几乎不可能,所以他很naive。But,他有时候并不simple,so we need to read many passages about it and write down this passage.

引言

朴素贝叶斯在处理离散数据时,很简单,就依据当前的数据集推测概率,然后再估算各个特征的值为当前样本时,属于各个类别的概率,从而进行判别,但是,当他存在特征的值为连续的时候呢?该值在数据集中没出现过则使得概率为0

所以,会用到高斯朴素贝叶斯(Gaussian Naive Bayes)、伯努利、多项式模型

(之前看github上《统计学习方法》的算法代码,一直一扫过去以为是高阶朴素贝叶斯,然后看了半天发现没有之前统计类别然后计算概率的感觉,然后突然发现。。。竟然是高斯朴素贝叶斯,因为iris数据集里的特征数值全是连续的啊!!!以后看问题,应该自己先认真思考,然后再认真看示例!)

真·朴素贝叶斯

贝叶斯定理由英国数学家贝叶斯 ( Thomas Bayes 1702-1761 ) 发展,用来描述两个条件概率之间的关系,比如 P(A|B) 和 P(B|A)。按照乘法法则,可以立刻导出:P(A∩B) = P(A)P(B|A)=P(B)P(A|B)。如上公式也可变形为:P(B|A) = P(A|B)*P(B) / P(A)。

特征值为离散的朴素贝叶斯推导如下

微信图片_20190315191052

真·“朴素”·贝叶斯

接下来就是一点都不朴素的贝叶斯了。。。

由于特征的取值可能存在没出现过或者是连续值的情况,这个时候就不能再简单地通过先验数据统计的方法来估算了。前者还比较好解决,可以:

多项式模型:

当特征是离散的的时候,可以使用多项式模型,多项式模型在计算先验概率和条件概率时,会做一些平滑处理

N是总的样本个数,k是总的类别个数,$N{y{k}}$是类别为$y_{k}$的样本个数,$\alpha$是平滑值。

$N{y{k}}$是类别为$y{k}$的样本个数,n是特征的维数,$N{y{k},x{i}}$是类别为$y{k}$的样本中,第i维特征的值是$x{i}$的样本个数,$\alpha$是平滑值。

当$\alpha=1$时,称作Laplace平滑,当$0<\alpha<1$时,称作Lidstone平滑,$\alpha=0$时不做平滑。

如果不做平滑,当某一维特征的值$x{i}$没在训练样本中出现过时,会导致$P(x{i}|y_{k})=0$从而导致后验概率为0。加上平滑就可以克服这个问题。

高斯模型

当特征是连续变量的时候,运用多项式模型就会导致很多$P(xi|yk)=0P(xi|yk)=0$(不做平滑的情况下),此时即使做平滑,所得到的条件概率也难以描述真实情况。所以处理连续的特征变量,应该采用高斯模型。

下面是一组人类身体特征的统计资料。

已知某人身高6英尺、体重130磅,脚掌8英寸,请问该人是男是女? 根据朴素贝叶斯分类器,计算下面这个式子的值。

1
P(身高|性别) x P(体重|性别) x P(脚掌|性别) x P(性别)

这里的困难在于,由于身高、体重、脚掌都是连续变量,不能采用离散变量的方法计算概率。而且由于样本太少,所以也无法分成区间计算。怎么办? 这时,可以假设男性和女性的身高、体重、脚掌都是正态分布,通过样本计算出均值和方差,也就是得到正态分布的密度函数。有了密度函数,就可以把值代入,算出某一点的密度函数的值。 比如,男性的身高是均值5.855、方差0.035的正态分布。所以,男性的身高为6英尺的概率的相对值等于1.5789(大于1并没有关系,因为这里是密度函数的值,只用来反映各个值的相对可能性)。

20150909092824838

对于脚掌和体重同样可以计算其均值与方差。有了这些数据以后,就可以计算性别的分类了。

1
2
3
4
P(身高=6|男) x P(体重=130|男) x P(脚掌=8|男) x P(男) 
    = 6.1984 x e-9
  P(身高=6|女) x P(体重=130|女) x P(脚掌=8|女) x P(女)
    = 5.3778 x e-4

可以看到,女性的概率比男性要高出将近10000倍,所以判断该人为女性。

高斯模型总结

高斯模型假设每一维特征都服从高斯分布(正态分布):

$\mu{y{k},i}$表示类别为$y{k}$的样本中,第i维特征的均值。 $\sigma{y{k},i}^{2}$表示类别为$y{k}$的样本中,第i维特征的方差。

伯努利模型

与多项式模型一样,伯努利模型适用于离散特征的情况,所不同的是,伯努利模型中每个特征的取值只能是1和0(以文本分类为例,某个单词在文档中出现过,则其特征值为1,否则为0).

伯努利模型中,条件概率P(xi|yk)的计算方式是:

当特征值xi为1时,

当特征值xi为0时,

最后

emmm,其实朴素贝叶斯还是挺朴素的,只不过是当时自己看错了而且不知道高斯朴素贝叶斯,其实也就是一个概率密度的式子来推算连续型的概率而已,还是好好学习吧 :)

参考:

https://blog.csdn.net/u012162613/article/details/48323777 朴素贝叶斯理论推导与三种常见模型

0%