贝叶斯定理
朴素贝叶斯定理主要是在已知某条件概率的前提下,如何得到两个事件交换后的概率,也就是在已知P(A/B)的情况下如何求得P(B/A).
贝叶斯定理之所以那么有用,是因为我们在生活中经常遇到这种情况:我们可以很容易的直接得到P(A/B),P(B/A)则很难直接得出,而我们更关心的是后者。贝叶斯就为我们解决了该问题,打通从P(A/B)到P(B/A)的道路,下面给出贝叶斯定理:
朴素贝叶斯分类的原理
朴素贝叶斯的分类思想很简单,思想基础是这样的:对于给出的待分类项,求解在此项出现的条件下各个类别出现的概率,哪个概率值最大就认为此待分类项属于哪个类。就好比这么个道理,你在街上看到一个黑人,让你猜猜这哥们是哪儿来的,你十有八九猜非洲。为什么呢?因为黑人中非洲人的比率最高。当然他也可能是美洲人或亚洲人,但在没有其他信息可用的条件下,我们会选择条件概率最大的类别。这就是朴素贝叶斯分类的基本思想。
朴素贝叶斯分类的定义如下:
1.设x={a1,a2...,an}为一个待分类项,而每个a为x的一个特征属性。则P(x/y)=P(a1/y).P(a2/y)....P(an/y)
2.有类别集合C={y1,y2,...ym}。
3.计算P(y1/x),P(y2/x),...P(ym/x)。如果P(yk/x)=max{P(y1/x),P(y2/x),...P(ym/x)}则x属于yk
下面关键的就是如何计算步骤3中各个条件概率,我们可以这么做:
1.找到一些已知分类的待分类项集合,这个集合叫做训练样本。
2.利用上面的样本统计得到各个特征属性的条件概率估计。即
P(a1/y1),P(a2/y1),...P(an/y1).P(a1/y2),P(a2/y2),...P(an/y2)...P(a1/ym),P(a2/ym),...P(an/ym)
3.假设各个属性特征是条件独立的,则贝叶斯定理有如下:
P(yi/x)=P(x/yi)P(yi)/P(x)
因为分母对所有类别是一样的,这里我们只需求出分子最大值即可。又因为各个属性特征是相互独立的,所以有:
P(x/yi)P(yi)=P(a1/yi).P(a2/yi)....P(an/yi).P(yi)
朴素贝叶斯分类的流程可以如下图所示:
由上图可以看出朴素贝叶斯分类分为三个阶段:
1.准备工作阶段,这个阶段的任务是为朴素贝叶斯分类做必要的准备,主要的工作是根据具体的情况确定特征属性,并对每个特征属性进行适当的划分,然后人工对待分类项进行分类,形成训练样本集合,这一阶段的输入是所有待分类数据,输出是特征属性和训练样本。这一阶段是唯一需要人工完成的阶段,其质量对整个过程将有重要影响,分类器的质量很大程度上由特征属性、特征属性划分和训练样本质量决定。
2.分类器训练阶段,这一阶段的任务就是生成分类器。主要工作是计算每个类别在训练样本中的出现频率以及每个特征属性划分对每个类别的条件概率估计,并记录结果。其输入是属性特征和训练样本,输出是分类器。这一阶段是机械性阶段,根据前面讨论的公式可以由程序自动计算完成。
3.应用阶段,这个阶段的任务是使用分类器对待分类项进行分类,其输入是分类器和待分类项进行分类,其输出是待分类项与类别的映射关系。这一阶段也是机械性阶段,由程序完成。
拉普拉斯平滑在朴素贝叶斯分类中的应用。
朴素贝叶斯有个致命的问题就是对数据稀疏问题过于敏感。
比如对于邮件分类,现在新来了一封邮件,邮件标题是“NIPS call for papers”。我们使用更大的网络词典(词的数目由5000变为35000)来分类。假设NIPS这个词在字典中的位置是35000.然而NIPS这个词没有在训练数据中出现过,那么我们在算概率的时候,在为该单词进行分类时概率均为0.在这种情况出现的情况下,最终的条件概率也是0,原因就是我们的特征概率条件独立,使用的是相乘的方式得到的结果。
为了解决上述问题,我们打算给为出现特征值,附一个小的值而不是0.
具体的平滑方式为:设有k个分类结果{1、2、3......k}那在我们算条件概率的时候首先在分子上+1即默认为已经出现一次,在分子上+k,k为分类数。当然还有别的平滑方法这里就不再详述。
朴素贝叶斯分类应用
假设我们统计了14天的气象数据,指标包括指标包括outlook,temperature,humidity,windy。并已知这些天气是否打球(play)。如果给出新一天的气象指标数据:sunny,cool,high,TRUE,判断一下会不会去打球。统计的气象数据如下图所示:
第一步:对每项指标分别统计,在不同取值下打球和不打球的概率:
outlook | temperature | humidity | windy | play | ||||||||||
yes | no | yes | no | yes | no | yes | no | yes | no | |||||
sunday | 2 | 3 | hot | 2 | 2 | hign | 3 | 4 | TURE | 3 | 3 | 9 | 5 | |
overcast | 4 | 0 | mild | 4 | 2 | normal | 6 | 1 | FALSE | 2 | 6 | |||
rainy | 3 | 2 | cool | 3 | 1 |
第二步:分别计算在给定指标下,打球和不打球的概率:这里的指标是E={sunny,cool,high,TRUE}
P(yes/E)=P(E/yes).P(yes)/P(E)
P(no/E)=P(E/no).P(no)/P(E)
因为P(E)是一样的,不影响其大小的比较,这里可以忽略不算。
P(E/yes).P(yes)=2/9*3/9*3/9*3/5*9/14=0.0053
P(E/no).P(no)=3/5×1/5×4/5×3/5×5/14=0.0206
由上述计算可得:不打球的概率更大。
数值属性
当属性的取值为连续的变量时,称这种属性为“数值属性“。通常我们假设数值属性的取值服从正态分布。
对于可计算均值和方差的可直接计算,不容易计算的则可以采用似然估计,在给定的训练样本中,假设概率最大,对各个参数求导得出参数值。
用于文本分类
朴素贝叶斯分类是一种基于概率的有监督分类器。
词条集合W,文档集合D,类别集合C。
根据(1)式(去掉分母)得文档d属于类别cj的概率为:
p(cj)表示类别j出现的概率,让属于类别j的文档数量除以总文档数量即可。
而已知类别cj的情况下词条wt出现的后验概率为:类别cj中包含wt的文档数目 除以 类别cj中包含的文档总数目 。
参考文献:
[1] http://www.cnblogs.com/zhangchaoyang/articles/2586402.html
[2] http://www.cnblogs.com/leoo2sk/archive/2010/09/17/naive-bayesian-classifier.html
[3] http://baike.baidu.com/view/992724.htm