相比于只使用一种属性作为判别依据的1R 算法,另外一种分类算法是使用所有的属性作为判别的依据,并且每一种属性对决策都同等重要,且假设他们相互独立。
算法概述
对每一个属性的所有的值对结果的影响做统计,并根据统计的结果对未知属性进行预测。假如有数据如下表。
NO. | outlook | temperature | humidity | windy | play |
1 | sunny | hot | high | false | no |
2 | sunny | hot | high | true | no |
3 | overcaset | hot | high | false | yes |
4 | rainy | mild | high | false | yes |
5 | rainy | cool | normal | false | yes |
6 | rainy | cool | normal | true | no |
7 | overcaset | 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 | overcaset | mild | high | true | yes |
13 | overcaset | hot | normal | false | yes |
14 | rainy | mild | high | true | no |
对表格做统计:在所有样例中,yes的总数为9,no的总数为5 [yes=9,no=5]
在outlook属性中,sunny共有yes为2天,no 为3天,则sunny的yes的两天占总的yes的比率为2/9,no占总的no的比率为3/5,同理其他属性的对应比率也可以算出来
outlook属性中:sunny 【yes=2,no=3】2/9,3/5
overcast 【yes=4,no=0】4/9,0/5
rainy 【yes=3,no=2】3/9,2/5
temperature属性:hot 2/9,2/5
mild 4/9,2/5
cool 3/9,1/5
humidity属性:high 3/9,4/5
normal 6/9,1/5
windy属性:false 6/9,2/5
true 3/9,3/5
那么,通过下面计算概率的方法来预测下面的天气情况的play情况。
NO. | outlook | temperature | humidity | windy | play |
sunny | cool | high | true | ? |
如果是yes = 2/9 x 3/9 x 3/9 x 3/9 x 9/14 = 0.0053
如果是no = 3/5 x 1/5 x 4/5 x 3/5 x 5/14 = 0.0206
等式的最后一项表示 yes和no占总天数的比率。从比例可以看出预测为no是比较合理的。
算法原理
基于条件贝叶斯的规则,如果存在假说H,和基于假说的证据E,有,其实就是贝叶斯公式。
假说玩的结果是yes。那么pr[H|E],表示在需要预测那天的天气情况下,play为yes的概率。这个概率等于,play为yes的情况下预测该天天气出现的概率,乘以play为yes的概率,除以预测该天天气出现的概率。
而等号右边的值可以通过训练样本进行统计得出,从而计算出预测该天play为yes,和play为no的概率,通过选择概率较大的值作为预测结果。这中方法称为朴素贝叶斯
算法问题分析
1.属性值出现为比率0的问题
如果一个属性值为零,那么无论其他的概率多大,计算的结果都是零,这就使得该属性掌握了一票否决权,这是不合理的。一般的处理办法是,对这些概率使用拉普拉斯估计器做一些微小的调整。这种方法没有什么特别好的理由,但是却有不错的效果,就是在该属性的分子分母中加上一个很小的整数,分母保留整数,分子将整数按照一定的权值分下去,对于outlook属性中的no:从3/5,0/5,2/5,经过变换为
这样就能使得属性比率为0的情况也拥有一个较小的概率。
2.连续值的问题。
对于连续值属性的问题,关键是求得的值。这时可以假设属性服从某一种分布,通过样本值求得分布参数,然后通过概率密度函数计算在预测属性值的概率密度来代表其出现的概率。比如假说一种连续属性服从正态分布,那么正态分布有2个参数,期望和标准差,通过训练样本估计出期望和标准差,求得该分布;然后使用该分布求得对应情况下的概率密度。用该密度来表示其出现的概率。
3.缺失值问题
如果属性有缺失,则忽略该属性的比率和概率情况。