朴素贝叶斯分类

朴素贝叶斯分类

  • 1. 推导
  • 2. 例题
  • 3. 优势
  • 4. 一些问题

本文所讲述的朴素贝叶斯分类算法是基于《Web数据挖掘》(Bing Liu著)一书的。

1. 推导

监督学习可以很自然地从概率角度来认识。
分类的任务可以被看作,给定一个测试样例d后估计它的后验概率 Pr(C=cj l d),然后我们选择使对应概率最大的类cj,作为类别赋予样例d

形式化地,在数据集D中,令A1, A2, …, A|A|为用离散值表示的属性集合,令C为具有|C|个不同值的类别属性,即c1, c2, …,c|C|
给定一个测试样例d,观察到属性值a1到a|A|(其中ai是Ai的一个可能的取值),也就是说 d=1=a1, …, A|A|=a|A|>,
那么预测值就是使得 Pr(C=cj l A1=a1, …, A|A|=a|A|) 最大的类别cj。cj被称为最大后验概率(MAP)假设。

根据贝叶斯准则,上述概率可以被表示为:
朴素贝叶斯分类_第1张图片

Tips: P(A|B) = P(AB) / P(B) = P(B|A) x P(A) / P(B)

注意,对于一个数据样例d来说,分母是相同的,所以在实际分类中没必要计算。只需要计算Pr(A1=a1, …, A|A|=a|A| | C=cj)即可,这个概率可以展开为:
变形2
上式第二项同样可以递归展开,以此类推…

Tips: P(AB|C) = P(ABC) / P(C ) = P(A|BC) x P(BC) / P(C ) = P(A|BC) x P(B|C)

但是,为了进一步推导,我们需要作一个重要的假设。
条件独立假设假设所有属性都条件独立于类别 C=cj。准确地说,我们假设
Pr(A1=a1 | A2=a2, …, A|A|=a|A|, C=cj) = Pr(A1=a1 | C=cj)
类似地对A2到A|A|都有相同的结论。然后我们得到,
朴素贝叶斯分类_第2张图片

于是,我们只需要从训练数据中估计先验概率Pr(C=cj)和条件概率Pr(Ai=ai | C=cj),这些估计可以直接得到:

Pr(C=cj) = 属于类别Cj的样例总数 / 数据集中的样例总数
Pr(Ai=ai | C=cj) = Ai=ai并且属于Cj的样例总数 / 属于类别Cj的样例总数

2. 例题

A B C
m b t
m s t
g q t
h s t
g q t
g q f
g s f
h b f
h q f
m b f

例1:假如有训练数据如上表,有两个属性A和B,还有类别C。
我们计算所有所需的概率值来学习一个朴素贝叶斯分类器:
Pr(C=t)=1/2,Pr(C=f)=1/2
Pr(A=m|C=t)=2/5,Pr(A=g|C=t)=2/5,Pr(A=h|C=t)=1/5
Pr(A=m|C=f)=1/5,Pr(A=g|C=f)=2/5,Pr(A=h|C=f)=2/5
Pr(B=b|C=t)=1/5,Pr(B=s|C=t)=2/5,Pr(B=q|C=t)=2/5
Pr(B=b|C=f)=2/5,Pr(B=s|C=f)=1/5,Pr(B=q|C=f)=2/5
现在有一个测试样例:A=m, B=q, C=?
我们想要知道它的类别,则计算:
对于类别C=t,Pr(C=t l d) = Pr(C=t) x Pr(A=m|C=t) x Pr(B=q|C=t) = 2/25
对于类别C=f,Pr(C=f l d) = Pr(C=f) x Pr(A=m|C=f) x Pr(B=q|C=f) = 1/25
所以 C=t 可能性更大,也就是测试样例的预测类别。

3. 优势

容易看到,构造朴素贝叶斯分类器所需要的先验概率值Pr(C=cj)和条件概率值Pr(Ai=ai | C=cj)可以经过一次扫描数据得到。所以算法相对训练样本的数量是线性的,这是朴素贝叶斯分类器的优势之一,效率很高。就分类准确率而言,尽管算法做出了很强的条件独立假设,但是一些研究者发现它的分类效果非常好。

4. 一些问题

为了研究实际可用的朴素贝叶斯分类器,需要解决一些别的问题。
处理数值属性:离散化,形成区间。
估计产生的零概率:一个在测试数据中出现属性值可能并不在训练数据中出现。如果估计时将该属性值对应的概率计为0的话,分类时会出现问题。一个主要的解决办法是对所有概率加入一个小样本校正

就是,给Pr(C=cj l d)加一个常数,一般取1/n,n是训练数据D的总数

丢失的属性值:丢失的属性值可以被忽略,无论是在训练时估计概率还是分类时计算概率。

你可能感兴趣的:(分类,算法)