朴素贝叶斯

来源:互联网 发布:怎样制作淘宝网页 编辑:程序博客网 时间:2024/05/16 12:01

一个利用贝叶斯公式来进行分类的naive方法,它建立在一个很强悍的假设条件上:即特征之间都是相互独立的,且特征们是同等重要的

贝叶斯公式

P(y|x1,...,xn)=P(y)P(x1,...,xn|y)P(x1,...,xn)

xi是我们的特征,也是一个随机变量,上述式子所表明的意义:若已知y发生的概率以及y取定为某值时所有的xi取值的概率,那么为因此如果把特征独立的条件带入上面的式子,我们就可求出在xi为某值时取到y的概率。

好吧,上面这段写的自己都看不明白了。以文本分析为例,如果要给一些文本去按主题分类,这里的y就是类别集合了,xi就是文档中出现的词汇。上述的公式就可以解释为,在知道某一主题出现的概率P(y)以及该主题中出现xi这些词的概率。那么我们就可以求出当一个文档出现了某些词时属于各个主题的概率。而要把朴素贝叶斯作为一个分类器去用的话,我们就应该找到那个使P(y|x1,...,xn)最大y.

maxP(y|x1,...,xn)=maxP(y)P(x1,...,xn|y)P(x1,...,xn)

既然我们只想知道哪个y使P(y|x1,...,xn)最大,而不用求出具体的概率值,因此上式等号右边的分母是可以忽略的,求解麻烦且毫无用处。于是

maxP(y|x1,...,xn)maxP(y)P(x1,...,xn|y)

然而这个条件联合概率P(x1,...,xn|y)也不是好求的啊,这时候朴素里的条件独立性假设就派上用场了,既然条件独立,那么

P(x1,...,xn|y)=i=1nP(xi|y)

这样,目标函数就出炉了:

y^=argmaxyP(y)i=1nP(xi|y)

当然,这个条件独立性假设其实是不太合理,有些时候有些词之间就是会有很强的相关性。针对这种情况,我们可以调整一下朴素贝叶斯的词典设置,不仅以单个的词汇做特征,还可以以连续的两个词等,此为ngram,在之后的sklearn naive bayes库里会提到。
另外还可以根据词汇之间的相关性绘制概率图模型,偶们称之为贝叶斯网络,较出名的即为马尔科夫模型,此为后话。

根据P(xi|y)服从的概率分布不一样,朴素贝叶斯方法也可分为以下几类

  • 高斯NB
    P(xi|y)=12πδ2yexp((xiμy)22δ2y)

其中的参数是通过极大似然估计获得的。

  • 多项式NB

将词汇出现的频率作为概率

P(xi|y)=Nyi+αNy+αn

这里Nyi=xTxi 是训练集中第y类里第i个特征出现的次数。Ny=|T|i=1Nyiy中所有特征的总数。

分子分母都加上一个数主要是因为,若y里面根本没有出现这个featurei,则整个样本概率会为0。当文本分析中用的词典库是一个人为确定的预设词典库时,就有可能出现这种情况了。α=1时被称为拉普拉斯平滑。

  • 伯努利NB
    不管频率多少,只看出现或是不出现,这就是伯努利贝叶斯的方法:
    P(xi|y)=P(i|y)xi+(1P(i|y))(1xi)

公式不是很懂,意思就是那么个意思,留个疑问吧。这种binary的方法一般在文档较短的时候效果可能会好。因此做文本分析时可以都尝试一下。

0 0