朴素贝叶斯的基本思想是根据贝叶斯定理以及基于特征条件独立假设的分类方法。对于给定数据集,首先根据特征条件独立假设,学习输入
X
和输出Y的联合概率分布
P(X,Y)
,然后基于此模型,对于输入
x
,利用贝叶斯定理求出后验概率最大的输出y。
设输入空间
χ⊆Rn
为
n
维向量的集合,输出空间为类标记集合γ={c1,c2,⋯,cK},输入为特征向量
x∈χ
,输出为类标记
y∈γ
,
X
定义为输入空间γ上的随机变量,
Y
定义为在输出空间γ上的随机变量。对于训练集
T={(x1,y1),(x2,y2),⋯,(xN,yN)}
由
P(X,Y)
独立同分布产生。
概率基础
先验概率
对于先验概率,可以理解为在事件发生前,根据以往经验总结的概率。则先验概率分布为:
P(Y=ck),k=1,2,⋯,K
后验概率
对于后验概率,可以理解为事件发生后,分局事件所发生的情况,对先验概率的一种修正。则可以理解为对于事件
x
发生之后,对于事件Y的发生概率的修正。后验概率分布为:
P(Y=ck|X=x),k=1,2,⋯,K
联合概率分布
对于每个事件
X=x
,
Y=y
的概率,有
P(X=x|Y=ck)P(Y=ck)=P(X=x,Y=ck)P(X|Y)P(Y)=P(X,Y)
对于
P(X,Y)
的边际分布,有
P(X=x)=∑k=1KP(X=x|Y=ck)P(Y=ck)
引入条件独立性假设
为了求后验概率,可以应用贝叶斯定理,采取如下方法
P(Y=ck|X=x)==P(Y=ck,X=x)P(X=x)P(X=x|Y=ck)P(Y=ck)∑Kk=1P(X=x|Y=ck)P(Y=ck)
求解该模型,则转化为求
P(Y=ck)
和
P(X=x|Y=ck)
。如果能根据集
T
求出
P(Y=ck)和
P(X=x|Y=ck)
,则对于新的所要预测的输入
x
,只需要求
maxckP(Y=ck|X=x)
即可得到相应的输出
y
。
P(Y=ck)的求解只需要对
T
进行筛选统计即可,然而
P(X=x|Y=ck)的求解会比较困难。
P(X=x|Y=ck)=P(X(1)=x(1),X(2)=x(2),⋯,X(n)=x(n)|Y=ck)
设对于变量
Xi
,其有
|Xi|=Si
种取值,则条件概率分布的情况数有
K|X1||X2|⋯|Xn|=K∏i=1nSi
这是一个指数级数量的参数。
为了减少条件概率分布的情况数,朴素贝叶斯法对条件概率分布引入条件独立性假设:
P(X=x|Y=ck)==P(X(1)=x(1),X(2)=x(2),⋯,X(n)=x(n)|Y=ck)∏i=1nP(X(i)=x(i)Y=ck)
则有
P(Y=ck|X=x)==P(X=x|Y=ck)P(Y=ck)∑Kk=1P(X=x|Y=ck)P(Y=ck)P(Y=ck)∏nj=1P(X(j)=x(j)|Y=ck)∑Kk=1P(Y=ck)∏nj=1P(X(j)=x(j)|Y=ck)
由于是取
max{P(Y=ck|X=x)}
所对应的
ck
作为输出,因而有
y=f(x)=argmaxckP(Y=ck)∏nj=1P(X(j)=x(j)|Y=ck)∑Kk=1P(Y=ck)∏nj=1P(X(j)=x(j)|Y=ck)
由于上式的分母保持恒定,因而只有分子对结果有影响,因而转化为
y=argmaxckP(Y=ck)∏j=1nP(X(j)=x(j)|Y=ck)
一个小例子
对于MNIST,任取数据集中的一个输入
x
像素为28×28=784,对于
xi∈[0,⋯,255],xi∈R
,输出
y
的可能取值为y∈[0,⋯,9],y∈R。在引入条件独立性假设之前,P(X=x|Y=c_k)的情况数有
255784×10
,而当引入了条件独立性假设之后,P(X=x|Y=c_k)的情况数有
255×784×10
,大大降低了参数个数。
朴素贝叶斯算法
输入:训练数据
T={(x1,y1),(x2,y2),⋯,(xN,yN)}
,其中
xi=(x(1)i,x(2)i,⋯,x(n)i)T
,
x(j)i
为第
i
个样本的第j个特征,
x(j)i∈{aj1,aj2,⋯,ajSj}
,
ajl
是第
j
个特征可能取的第l个值,
j=1,2,⋯,n
,
l=1,2,3⋯,Sj
,
yi∈{c1,c2,⋯,cK}
;实例
x
;
输出:实例x的分类.
(1) 计算先验概率及条件概率
P(Y=ck)=∑Ni=1I(yi=ck)N,k=1,2,⋯,KP(X(j)=ajl|Y=ck)=∑Ni=1I(x(j)i=ajl,yi=ck)∑Ni=1I(yi=ck)j=1,2,⋯,n;l=1,2,⋯,Sj;k=1,2,⋯,K
(2) 对于给定的实例
x={x(1),x(2),⋯,x(n)}T
,计算
P(Y=ck)∏j=1nP(X(j)=x(j)|Y=ck),k=1,2,⋯,K
(3) 确定实例
x
的类
y=argmaxckP(Y=ck)∏j=1nP(X(j)=x(j)|Y=ck)
参考
[1] 李航,统计学习方法,2012年3月第1版
[2] https://wapiknow.baidu.com/question/211258997?g_f=11301026