贝叶斯方法的提出:
正概率问题:假如袋子里有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数据集。