朴素贝叶斯分类

bayes 贝叶斯定理

英国数学家贝叶斯(Thomas Bayes)曾经给出如下定理:

P(A) 表示 A 事件发生的概率,P(B) 表示 B 事件发生的概率;P(A|B) 表示在 B 事件已经确定发生的情况下,发生 A 事件的概率;P(B|A) 表示在 A 事件已经确定发生的情况下,发生 B 事件的概率;P(AB) 表示 AB 事件同时发生的概率。所以:

P(A)P(B|A)=P(AB)=P(B)P(A|B)

也就是说,A 事件发生的概率乘以 A 事件已发生条件下 B 事件发生的概率,和 B 事件发生的概率乘以 B 事件已发生条件下 A 事件发生的概率,这二者是相等的,都等于 AB 事件同时发生的概率。

(特例:如果 A、B 是独立事件,互不相关,那么 P(A)=P(A|B),P(B)=P(B|A),于是:P(A)P(B)=P(AB)。)

变换一下得到:

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

在很多场景下,P(A|B) 是容易得出的,但是 P(B|A) 不容易获得,这时可以利用贝叶斯公式求得。

我们还可以把贝叶斯定理推论到三元情形:

P(A|B,C)=P(B|A)P(A)P(C|A,B) / (P(B)P(C|B))

 

朴素贝叶斯分类(Naive Bayesian Classification)

假设具备如下分类:C1, C2, C3, … Cn,

同时,待分类项 x 具备如下相关属性分类项:a1, a2, a3, … an,

接着我们定义 x 属于 Ck 分类,当且仅当:P(Ck|x)=max{P(C1|x), P(C2|x), … P(C3|x)}。这一步是属于对分类器的应用。

也就是说,根据 x 的相关属性分类项来判断,和哪一分类最匹配时,x 就算属于该分类。

下面我们开始进行分类器的构建:

1、确定相关特征属性分类项。 就是上述的 a1, a2, … an,对于 x 出现在某分类 Ci 中的概率,等于每个特征属性出现在该分类中的概率之积:

P(x|Ci)=P(a1|Ci)P(a2|Ci)…P(an|Ci) —— 公式 A

2、整理取得训练样本。 这个样本的数量和准确性会大大影响到分类的准确性,很多时候需要清洗样本数据。

3、分别计算每个类别下每个相关属性的概率 ,即:

P(ak|Ci),其中 1<=k<=m,ak 表示任一相关属性,1<=i<=n,Ci 表示任一分类。

根据贝叶斯定理和公式 A,可以得到 x 事件出现在 Ci 分类中的概率:

P(Ci|x)P(x)=P(Ci)P(x|Ci)=P(Ci)P(a1|Ci)P(a2|Ci)…P(an|Ci) —— 公式 B

通过比较对任意的 i,1<=i<=n 的时候,P(Ci|x)P(x) 的取值,从中找到最大值,就可以找到 x 的分类——因为对于不同的 i,P(x) 在是恒定值,所以对此问题而言,比较 P(Ci|x)P(x) 的最大值和比较 P(Ci|x) 的最大值是一致的。

举一个具体的例子:

一批商品,分类 C1 是正品,C2 是次品。现在有两个属性分类项:a1 表示质量,划为<1 千克和>=1 千克两个分类;a2 表示体积,划为<1cm³和>=1cm³两个分类。

经过 100 个商品的样本统计,其中正品有 80 个,其中有 60 个质量<1 千克,20 个质量>=1 千克,有 40 个体积<1cm³,40 个体积>=1cm³;而余下的次品 20 个中,有 5 个质量<1 千克,15 个质量>=1 千克,4 个体积<1cm³,16 个体积>=1cm³。

也就是说:

P(C1)=80/100, P(a1<1|C1)=60/80, P(a1>=1|C1)=20/80, P(a2<1|C1)=40/80, P(a2>=1|C1)=40/80

P(C2)=20/100, P(a1<1|C2)=5/20, P(a1>=1|C2)=15/20, P(a2<1|C2)=4/20, P(a2>=1|C2)=16/20

下面使用已经计算完成的分类器进行分类:

有一个待分类的商品 x,它的质量是 0.8 千克,体积是 1.1cm³,那么:

根据公式 B:

P(x)P(C1|x)=P(C1)P(x|C1)=P(C1)P(a1<1|C1)P(a2>=1|C1)=0.3

P(x)P(C2|x)=P(C2)P(x|C2)=P(C2)P(a1<1|C2)P(a2>=1|C2)=0.12

所以,该商品判断为 C1 正品。

文章未经特殊标明皆为本人原创,未经许可不得用于任何商业用途,转载请保持完整性并注明来源链接 《四火的唠叨》

13,204 次阅读

3 thoughts on “朴素贝叶斯分类

  1. Pingback: 朴素贝叶斯分类

发表评论

电子邮件地址不会被公开。

back to top