连续型特征属性和零概率事件处理
上面讲的特征属性值,都是离散的,账号真假检测例子中把连续的转换成区间,每个区间也可以看成离散的,但是如果在不能这样转换的情况下怎么解决?如果特征属性值是不是离散的,而是连续的怎么办?
我们是站在巨人的肩膀上,前人早已经为我们找到了应对之策
当特征属性为连续值时,通常假定其值服从高斯分布(也称正态分布)。即:
而
因此只要计算出训练样本中各个类别中此特征项划分的各均值和标准差,代入上述公式即可得到需要的估计值。(ak为观察到的属性值)
另一个需要讨论的问题就是当P(a|y)=0怎么办,当某个类别下某个特征项划分没有出现时,就是产生这种现象,这会令分类器质量大大降低。为了解决这个问题,引入了拉普拉斯校准,它的思想非常简单,就是对没类别下所有划分(概率为零的)的计数加1,这样如果训练样本集数量充分大时,并不会对结果产生影响,并且解决了上述频率为零的尴尬局面。
买电脑是否和收入相关的例子
验证买电脑,是否和收入有关的场景下:
类 buys_computer=yes包含1000个元组,有0个元组income=low ,990个元组 income=medium,10个元组income=high,这些事件的概率分别是0, 0.990, 0.010.
有概率为0,肯定不行.使用拉普拉斯校准,对每个收入-值对应加1个元组,分别得到如下概率
- 1/1003=0.001
- 999/1003=0.998
- 11/1003=0.011
这些校准的概率估计与对应的未校准的估计很接近,但是避免了零概率值
性别分类的例子
再看一个阮一峰老师的朴素贝叶斯应用一文中摘自维基百科的例子,关于处理连续变量的另一种方法。
下面是一组人类身体特征的统计资料。
- 性别 身高(英尺) 体重(磅) 脚掌(英寸)
- 男 6 180 12
- 男 5.92 190 11
- 男 5.58 170 12
- 男 5.92 165 10
- 女 5 100 6
- 女 5.5 150 8
- 女 5.42 130 7
- 女 5.75 150 9
已知某人身高6英尺、体重130磅,脚掌8英寸,请问该人是男是女?
根据朴素贝叶斯分类器,计算下面这个式子的值。
P(身高|性别) x P(体重|性别) x P(脚掌|性别) x P(性别)
这里的困难在于,由于身高、体重、脚掌都是连续变量,不能采用离散变量的方法计算概率。而且由于样本太少,所以也无法分成区间计算。怎么办?
这时,可以假设男性和女性的身高、体重、脚掌都是正态分布,通过样本计算出均值和方差,也就是得到正态分布的密度函数。有了密度函数,就可以把值代入,算出某一点的密度函数的值。
比如,男性的身高是均值5.855、方差0.035的正态分布。所以,男性的身高为6英尺的概率的相对值等于1.5789(大于1并没有关系,因为这里是密度函数的值,只用来反映各个值的相对可能性)。
有了这些数据以后,就可以计算性别的分类了。
P(身高=6|男) x P(体重=130|男) x P(脚掌=8|男) x P(男)
= 6.1984 x e-9P(身高=6|女) x P(体重=130|女) x P(脚掌=8|女) x P(女)
= 5.3778 x e-4
可以看到,女性的概率比男性要高出将近10000倍,所以判断该人为女性。
下一篇会写贝叶斯网络。
参考文章:
http://www.ruanyifeng.com/blog/2011/08/bayesian_inference_part_one.html
http://www.ruanyifeng.com/blog/2013/12/naive_bayes_classifier.html
http://www.cnblogs.com/leoo2sk/archive/2010/09/17/naive-bayesian-classifier.html
http://blog.csdn.NET/zdy0_2004/article/details/41096141
参考书籍:数据挖掘概念与技术。数据挖掘十大算法,统计学概率论方面的数学知识
码字不易,转载请指明出自http://blog.csdn.Net/tanggao1314/article/details/66478782