分类算法之朴素贝叶斯分类(Naive Bayesian Classification)
1、什么是分类
分类是一种重要的数据分析形式,它提取刻画重要数据类的模型。这种模型称为分类器,预测分类的(离散的,无序的)类标号。例如医生对病人进行诊断是一个典型的分类过程,医生不是一眼就看出病人得了哪种病,而是要根据病人的症状和化验单结果诊断病人得了哪种病,采用哪种治疗方案。再比如,零售业中的销售经理需要分析客户数据,以便帮助他猜测具有某些特征的客户会购买某种商品。
2、如何进行分类
数据分类是一个两阶段过程,包括学习阶段(构建分类模型)和分类阶段(使用模型预测给定数据的类标号)
3、贝叶斯分类的基本概念
贝叶斯分类法是统计学分类方法,它可以预测类隶属关系的概率,如一个给定元组属于一个特定类的概率。贝叶斯分类基于贝叶斯定理。朴素贝叶斯分类法假定一个属性值在给定类上的概率独立于其他属性的值,这一假定称为类条件独立性。
4、贝叶斯定理
贝叶斯定理特别好用,但并不复杂,它解决了生活中经常碰到的问题:已知某条件下的概率,如何得到两条件交换后的概率,也就是在已知P(A|B)的情况下如何求得P(B|A)的概率。P(A|B)是后验概率(posterior probability),也就是我们常说的条件概率,即在条件B下,事件A发生的概率。相反P(A)或P(B)称为先验概率(prior probability·)。贝叶斯定理之所以有用,是因为我们在生活中经常遇到这种情况:我们可以很容易直接得出P(A|B),P(B|A)则很难直接得出,但我们更关心P(B|A),贝叶斯定理就为我们打通从P(A|B)获得P(B|A)的道路。
下面不加证明地直接给出贝叶斯定理:
5、朴素贝叶斯分类的思想和工作过程。
朴素贝叶斯分类的思想真的很朴素,它的思想基础是这样的:对于给出的待分类项,求解此项出现的条件下各个类别出现的概率,哪个最大,就认为此待分类属于哪个类别。
朴素贝叶斯分类的工作过程如下:
(1)、设D是训练元组和它们相关联的类标号的集合。每个元组用一个n维属性向量X={x1,x2,...,xn}表示。
(2)、假定有m个类C1 ,C2,...Cm。给定元组X,分类法将预测X属于具有最高后验概率的类。也就是说,朴素贝叶斯分类法预测X属于类Ci,当且仅当
P(Ci|X)>P(Cj|X) 1≤j≤m, j≠i
这样,P(Ci|X)最大的类C1称为最大后验概率。根据贝叶斯定理
(3)、由于P(X)对所有类为常数,所以只需要P(Ci|X)P(Ci)最大即可。若类的先验概率未知,则通常假定这些类是等概率的,即P(C1)=P(C2)=...=P(Cm),并据此对P(Ci|X)最大化,否则最大化P(Ci|X)P(Ci)
(4)、给定具有很多属性的数据集,计算P(Ci|X)的开销非常大。为了降低计算开销,可以做类条件独立的朴素假定。给定元组的类标号,假定属性值有条件地相互独立。因此,
考察该属性是分类的还是连续值的,例如为了计算P(X|Ci),考虑如下两种情况:
(a)、如果Ak是分类属性,则P(xk|Ci)是D中属性Ak的值为xk的Ci类的元组数除以D中Ci类的元组数|Ci,D|
(b)、如果Ak是连续值属性,则假定连续值属性服从均值为η、标准差为σ的高斯分布,由下式定义:
即P(xk |Ci)=g(xk,ηci,σci)
(5)、为了预测X得类标号,对每个类Ci,计算P(Ci|X)P(Ci)。该分类法预测输入元组X的类为Ci,当且仅当,P(X|Ci)P(Ci)>P(X|Cj)P(Cj), 1≤j≤m, j≠i。即是,被预测的类标号是使P(X|Ci)P(Ci)最大的类Ci。
6、拉普拉斯校准(laplace)
当P(xk|Ci)=0怎么办,当某个类别下某个特征项没有出现时就出现这种现象,这时会出现的情况是:尽管没有这个零概率,仍然可能得到一个表明X属于Ci类的高概率。有一个简单的技巧来避免该问题,可以假定训练数据库D很大,以至于对每个计数加1造成的估计概率的变化可以忽略不计。但可以方便地避免概率值为0.这种概率估计计数称为拉普拉斯校准或拉普拉斯估计法。
7、朴素贝叶斯分类的流程
可以看到,整个朴素贝叶斯分类分为三个阶段:
第一阶段——准备工作阶段,这个阶段的任务是为朴素贝叶斯分类做必要的准备,主要工作是根据具体情况确定特征属性,并对每个特征属性进行适当划分,然后由人工对一部分待分类项进行分类,形成训练样本集合。这一阶段的输入是所有待分类数据,输出是特征属性和训练样本。这一阶段是整个朴素贝叶斯分类中唯一需要人工完成的阶段,其质量对整个过程将有重要影响,分类器的质量很大程度上由特征属性、特征属性划分及训练样本质量决定。
第二阶段——分类器训练阶段,这个阶段的任务就是生成分类器,主要工作是计算每个类别在训练样本中的出现频率及每个特征属性划分对每个类别的条件概率估计,并将结果记录。其输入是特征属性和训练样本,输出是分类器。这一阶段是机械性阶段,根据前面讨论的公式可以由程序自动计算完成。
第三阶段——应用阶段。这个阶段的任务是使用分类器对待分类项进行分类,其输入是分类器和待分类项,输出是待分类项与类别的映射关系。这一阶段也是机械性阶段,由程序完成。