Naive Bayes 算法(NB算法)

Naive Bayes 算法(NB算法)


俺不是大牛啊,只能写写这种浅显的文章了,算是抛砖引玉吧

naive bayes(朴素贝叶斯,下面简称NB ^_^)是ML中的一个非常基础和简单的算法,常常
用它来做分类,我用它做过text classification。现在的研究中大概已经很少有人用它来
实验了(除非是做base line),但确实是个很好的入门的算法,来帮助自己更加深刻的理
解ML的本质。

首先从bayes公式开头吧

      P(C/W) = P(C) * P(W/C) / P(W)

这个公式是ML中最基本也是最常用到的公式,怎么强调它的重要性都不过分。为了更容易理
解这个公式,我将bayes公式放在文本分类问题中进行解释。

公式的左边,C代表的是文本的类别(例如是体育或者娱乐),W往往是一个测试样本(例如
某一篇新闻),P(C/W)代表的是这个样本归属于该类别的概率,我们实际中的任务常常就是
要得到样本归属各个类别的概率值P(C1/W),P(C2/W)...P(CN/W),然后最大概率值所对应的
类别Ci就是该样本被分配的类。


计算这个概率值的方法就是bayes公式的右边。
P(C)表示C这个类别在所有文本中的概率,是先验概率。  实际中,这个值往往通过训练语
料计算得到,例如,将训练语料中所有的体育文本数除以训练语料总的文本数,就是体育这
个类别的先验概率。
P(W)则是通过这个公式计算:
        P(W) =  ∑P(W/Ci) * P(Ci)
可以看出,P(W)的计算可以通过 P(C)和P(W/C)得到。
P(W/C)的计算下面将重点介绍。

 

现在的问题是怎样计算P(W/C)。在现实中,W这个样本往往是用向量表示的,包括了很多的
分量 W = (w1, w2, w3,  ... wn), 所以 P(W/C) = P(w1, w2, w3,  ... wn / C),
NB的核心在于它假设向量的所有分量之间是独立的
      Wi is independent of Wj, if i != j
对!这个假设就是NB的全部内容了,是不是很简单。有了这个假设,P(W/C)的计算就变为:
      P(W/C) = ∏ P(wi / C)
有人可能会问,那么 P(Wi / C)怎么求呢。以文本分类为例,将文本作为一个向量,那么?
的分量就是一个词在这个文本中是否存在。例如:
     Wi =  1   if  "乔丹" 在文本中出现
              0   otherwise
对于这个Wi,它的P(Wi / C体育) 就是统计所有的体育文章中有多少篇出现了“乔丹”这?
词,然后用 出现篇章数 / 所有体育篇章数就是我们要的概率值了。

好了,终于写完了,回过头看,其实NB很简单,就是在bayes公式的基础上多了一个独立性
假设,很好理解的。至于它的性能,各有各的说法,我认为很多时候你对于特征的提取和?
法参数的设置更重要于算法本身,当然,that is another open question

你可能感兴趣的:(Naive Bayes 算法(NB算法))