代码改变世界

贝叶斯分类

2013-03-06 13:57  ggzwtj  阅读(403)  评论(0编辑  收藏  举报

  贝叶斯分类是指利用概率统计知识来进行分类的算法,基于贝叶斯定理。但是由于贝叶斯定理有一个假设:每个属性对类的影响互相独立。但在实际中,这个假设基本不成立,所以贝叶斯分类的准确度也可能因此有所下降。贝叶斯定理如下:

  P(A|B) = P(B) × P(B|A) / P(A)

证明非常简单:

  P(A∩B) = P(A) × P(B|A) = P(B) × P(A|B)。

贝叶斯分类问题的定义如下:

  1. 定义特征属性x = {ai},0 < i < m;
  2. 预先定义类别集合c = {yi},0 < i < n;
  3. 计算{P(yi|x)},0 < i < n;
  4. 如果P(yk|x) ≥ P(yi|x),则x属于k类;

计算P(yi|x)是比较麻烦的,可以使用贝叶斯定理将其进行转换:

  P(yi|x) = P(x|yi) × P(yi) / P(x)

对于所有的P(yi|x)来说,分母是一样的,所以最后找到最大的P(x|yi) × P(yi)就可以了。

下面通过一个实例来说明具体的过程,有两个邮件样本:

  1. ABC(垃圾样本);
  2. AD(非垃圾样本);

这样,特征属性x={A,B,C,D},类别集合c = {0,1}。那么可以得到:

  1. P(A|0) = P(B|0) = P(C|0) = 0.33
  2. P(A|1) = P(D|1) = 0.5
  3. P(0) = 0.6
  4. P(1) = 0.4

那么,再判断新的样本{A}的时候得到:

  1. P(0|A) = P(A|0) × P(0) = 0.33 × 0.6 = 0.198
  2. P(1|A) = P(A|1) × P(1) = 0.5 × 0.4 = 0.20

注:其实这里知道P(0|A)的含义,那么这个算法就大概懂了。

----- -- -

END