您的位置:首页 > 大数据 > 人工智能

数据挖掘十大经典算法学习之Naive Bayes朴素贝叶斯

2012-11-22 16:50 411 查看
贝叶斯方法的提出:

正概率问题:假如袋子里有M个黑球、N给白球,你伸手进去摸一个,摸出黑球的概率有多大?摸出白球的的概率有多大?

解答:黑球概率P(A)=M/(M+N)
,白球概率P(B)=N/(M+N)。——(1)

逆概率问题:事先不知道袋子里有多少个黑球、多少个白球,你怎样通过实验,预测黑白球的比例?

解答:采用不放回地摸取,摸出k个球,其中m个黑球,n个白球,通过计算m、n占k的比例,来推断袋子里黑球、白球的比例。

朴素贝叶斯分类器是基于贝叶斯定理的分类器。该分类器基于条件独立的假设,既样本的每个特征都与其它特征无关。贝叶斯分类器通过某对象的先验概率,来计算其后验概率。

先验概率:在实验之前,对过去资料统计或主观判断所得到的概率。(1)中P(A)、P(B)就是先验概率。

后验概率:由已知结果再追溯原因出在何处,由此修正先验概率。后验概率就是条件概率。条件概率P(A|B)=P(B|A)*P(A)/P(B),由乘法公式P(AB)=P(A)*P(B|A)=P(B)*P(A|B)推导出。

贝叶斯分类是监督学习的一种。给定一个测试样例d,估计它的后验概率,Pr(C=cj|d)。

考察什么类别对于d的概率最大,便将该类别赋予样例d。

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

根据贝叶斯准则,Pr(C=cj|d)也就是Pr(C=cj| A1=a1,…,A|A|=a|A|)可以表示为:

Pr(C=cj| A1=a1,…,A|A|=a|A|)= Pr(A1=a1,…,A|A|=a|A||C=cj)Pr(C=cj)/ Pr(A1=a1,…,A|A|=a|A|)

因为我们仅仅对分类感兴趣,那么Pr(A1=a1,…,A|A|=a|A|)对于分类决策就无关紧要了,因为它对于每个类都是一样的。

Pr(A1=a1,…,A|A|=a|A||C=cj)可以展开为Pr(A1=a1| A2=a2,…,A|A|=a|A|,C=cj)*Pr(A2=a2,…,A|A|=a|A||C=cj),
Pr(A2=a2,…,A|A|=a|A||C=cj)可以展开为Pr(A2=a2|A3=a3,…,A|A|=a|A|,C=cj)*Pr(A3=a3,…,A|A|=a|A||C=cj),依此类推。

因为,由此计算的概率非常小,不适合比较。所以,我们假设所有属性都是独立于类别C=cj。

即Pr(A1=a1| A2=a2,…,A|A|=a|A|,C=cj)= Pr(A1=a1|C=cj),类似地,Pr(A2=a2|A3=a3,…,A|A|=a|A|,C=cj)=
Pr(A2=a2|C=cj)。……

于是,可以得到Pr(A1=a1,…,A|A|=a|A||C=cj)=∏Pr(Ai=ai|C=cj), (i=1,…,|A|)。

因此,测试样例d最有可能的类别c=argmaxcj Pr(C=cj) ∏Pr(Ai=ai|C=cj), (i=1,…,|A|)。

零概率问题:测试数据中出现的属性值可能并不在训练数据中出现,导致∏Pr(Ai=ai|C=cj), (i=1,…,|A|)为0。解决方法是加入一个小样本校正。未校正前:Pr(Ai=ai|C=cj)= nij/ nj, 校正后Pr(Ai=ai|C=cj)=nij+λ/nj+λmi。

为什么分子加λ,分母加λmi呢?是为了不影响整体概率,校验后∑Pr(Ai=ai|C=cj)与校验前都等于1。

例如下例:Pr(sunny|yes)+ Pr(overcast|yes)+ Pr(rainy|yes)=3/12 + 5/12 + 4/12 = 1

nij为同时满足Ai=ai和C=cj的样本数量,nj为训练数据中C=cj的数据总数。mi是Ai可能值得总数。λ是一个因子,一般设为1/n,n是训练数据的总数。当λ=1时,得到Laplace平滑。

例如:给定下列关于数据集D,该数据集是一个关于天气情况对是否适宜出去玩的统计。该数据集有4个属性,A1=“阴晴”,A2=“温度”,……,A4=“刮风”。C为具有2个类别的属性,c1=yes,
c2=no。

给定一个测试样例d=<阴晴=sunny,温度=cool,湿度=high,刮风=TRUE>,预测该天气是否适合出去玩,也就是cj=
c1或c2,哪个的可能性最大。

阴晴

温度

湿度

刮风

出去玩
1

sunny

hot

high

FALSE

no
2

sunny

hot

high

TRUE

no
3

overcast

hot

high

FALSE

yes
4

rainy

mild

high

FALSE

yes
5

rainy

cool

normal

FALSE

yes
6

rainy

cool

normal

TRUE

no
7

overcast

cool

normal

TRUE

yes
8

sunny

mild

high

FALSE

no
9

sunny

cool

normal

FALSE

yes
10

rainy

mild

normal

FALSE

yes
11

sunny

mild

normal

TRUE

yes
12

overcast

mild

high

TRUE

yes
13

overcast

hot

normal

FALSE

yes
14

rainy

mild

high

TRUE

no
//c1=yes, c2=no。

Pr(cj=c1)=9/14=0.64

Pr(cj=c2)=5/14=0.36

Pr(cj=c1 |d)= Pr(cj=c1)∏Pr(Ai=ai | cj=c1)

=Pr(yes)Pr(sunny|yes)Pr(cool|yes)Pr(high|yes)Pr(TRUE|yes)

=(9/14)*(3/12)*(4/12)*(4/11)*(4/11)=0.0071

Pr(cj=c2 |d)= Pr(cj=c2)∏Pr(Ai=ai | cj=c2)

=Pr(no)Pr(sunny|no)Pr(cool|no)Pr(high|no)Pr(TRUE|no)

=(5/14)*(4/8)*(2/8)*(5/7)*(4/7)=0.0182

Pr(cj=c2 |d)>Pr(cj=c1 |d),所以该实例被划分为c2,也就是no。表示在该天气下,不适合出去玩。

Acknowledgements&References:
部分材料采自于实验室小哇同学的讲座,谢谢小哇友情提供资料。理论知识部分摘自于刘冰的《Web数据挖掘》。该文中关于“天气-出去玩”的例子来自于数据挖掘工具Weka的weather数据集。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: