朴素贝叶斯分类(NBC)是机器学习中最基本的分类方法,是其他众多分类算法分类性能的对比基础,其他的算法在评价性能时都在NBC的基础上进行。同时,对于所有机器学习方法,到处都蕴含着Bayes统计的思想。
朴素贝叶斯基于贝叶斯地理和特征条件独立性假设,首先基于条件独立性假设学习输入X和输出Y的联合分布P(X,Y),同时利用先验概率P(Y),根据贝叶斯定理计算出后验概率P(Y|X),找出每个类别的最大的后验概率即确定为相应的类别。算法实现简单,学习和预测的效率都很高,
基本定义
输入空间Rn为特征化的n维向量样本集合,输出空间为类别集合Y={c1,c2,...cK},K为类别数目。任意一个样本X可以表示如下:
Xi={x(1)i,x(2)i,x(3)i,...,x(n)i}
每一个
x(d)i代表第
i个样本的第
d个特征分量的值,
d=1,2,3...n;n为特征数目。
整个样本集可以表示如下:
T={(X1,y1),(X2,y2),...,(XN,yN)}
其中
N为样本集中样本的数目。
模型
根据统计学中的大数定律,当样本量足够大时,样本的各个统计量,如xˉ=1n∑ni=0xi和Dˉ=1n∑ni=0(xi?xˉ)2分别可以近似该样本的理论分布的期望和方差。大数定律基于每个样本都是从独立同分布的理论分布产生。
朴素贝叶斯方法假设了上述训练集T是从输入空间和输出空间的联合概率分布P(X,Y)产生,通过训练集T学习联合概率分布。通过条件概率分布
P(X|Y=ck)
和先验分布
P(Y=ck)
就可以得到联合分布
P(X,Y)。
其中的条件概率分布理论上有指数级个数的参数,假设
x(j)有
Sj个取值可能性,那么对于K个类别的参数总个数为
K∏nj=1Sj个。
为了简化计算和方便实现,
朴素贝叶斯假定每个特征相互独立,这就是朴素贝叶斯的来历。根据独立性的定义可以得到
P(X|Y=ck)=P(X(1),X(2),...,X(n)|Y=ck)
=P(X(1)|Y=ck)?P(X(2)|Y=ck)...P(X(n)|Y=ck)
虽然简化了计算,但是在某些问题中这样的假设并不成立,因此会牺牲一定的准确度。贝叶斯实际上学习到的是根据训练集生成的分布,属于
生成式模型。
通过贝叶斯定理和全概率公式,根据上述学习到的参数计算每个类别下的后验概率:
P(Y=ck|Xi)=P(Y=ck)?∏jP(X(j)i|Y=ck)∑kP(Y=ck)?∏jP(X(j)i|Y=ck)
这就是朴素贝叶斯分类器的数学模型。对于最终的分类函数可以标识如下:
y=f(X)=argmaxckP(Y=ck)?∏jP(X(j)i|Y=ck)∑kP(Y=ck)?∏jP(X(j)i|Y=ck)
由于上式中对于所有的
ck,分母都是一样的值,故只有分子对最后的分类产生作用。因此
y=f(X)=argmaxckP(Y=ck)?∏jP(X(j)i|Y=ck)
模型的另一种解释
上述关于朴素贝叶斯分类器的模型是从概率统计和独立性假设推出,可以从机器学习的角度重新推导。机器学习的三要素就是模型+策略+算法,这里的模型是指对于问题的分析后确定的需要学习到的模型类别,此处可以确定为生成式模型,学习到一个条件概率分布;策略选择0-1损失函数进行度量:
L(Y,f(X))={0,1, if Y=f(X) if Y≠f(X)
从而学习到最优的模型,选择期望风险最小化损失函数:
Remp(f)=E[L(Y,f(X))]=EX∑k=1KP(ck|X)?L(ck,f(X))
为了使得上述风险最小,只需要对
Xi逐个极小化,从而得到:
f(x)=argminck∈Y∑k=1KL(ck,Y)P(ck|X=x)=argminck∈Y∑k=1KP(Y≠ck|X=x)=argminck∈Y(1?P(Y=ck|X=x))=argmaxck∈YP(Y=ck|X=x)
因此,使用基于贝叶斯定理得到的最大后验概率分类器与使用0-1损失函数的期望风险最小化策略是等价的。
参数估计
先验概率的估计:
P(Y=ck)=∑Ni=1I(yi=ck)N,k=1,2...K
条件概率估计:
设第
j个特征
x(j)的取值集合为
{aj1,aj2,...ajSj},则有:
P(X(j)=ajl|Y=ck)=∑Ni=1I(x(j)=ajl,yi=ck)∑Ni=1I(yi=ck)
平滑方法:
当进行分类时,如果某个特征出现的值在训练中没有出现,那么就会出现零概率,这样计算得到的所有最终结果就为0,为了避免这种偏差,使用平滑方法进行修正,最常用的就是加一平滑,即对没有出现的特征项的计数值采用1代替,对于分母上的总样本数进行相应的增加。