例一:高斯判别分析和logistic函数
我们来看一个例子,对于一个高斯判别分析问题,根据贝叶斯: p(y=1|x)=p(x|y=1)p(y=1)p(x) =p(x|y=1)p(y=1)p(x|y=0)p(y=0)+p(x|y=1)p(y=1)
- p(y)是均匀分布的,也就是p(y=1)=p(y=0)
- x的条件概率分布(p(x|y=0)和p(x|y=1))满足高斯分布。
考虑二维的情况:

蓝色数据表达的是p(x|y=0)的分布,红色数据表达的是p(x|y=1)的分布,两条蓝色和红色的曲线分别是它们的概率密度曲线。
而灰色的曲线则表示了p(y=1|x)的概率密度曲线。
假设p(x|y=0)∼N(μ0,σ0),p(x|y=1)∼N(μ1,σ1),而p(y)均匀分布那么: p(y=1|x)=N(μ0,σ0)N(μ0,σ0)+N(μ1,σ1) =⋯ =11+σ0σ1exp(2σ21(x−μ0)2−2σ20(x−μ1)2
我们有如下的推广结论: {p(x|y=1)∼ExpFamily(η1) p(x|y=0)∼ExpFamily(η0)⇒p(y=1|x)是logistic函数
例二:垃圾邮件分类(1)
这里我们会用朴素贝叶斯(Naive Bayes)来解决垃圾邮件分类问题(y∈{0,1})。
首先对邮件进行建模,生成特征向量如下: x=[0 0 0 ⋮ 1 ⋮]a advark ausworth ⋮ buy ⋮
我们的目标是获取,垃圾邮件和非垃圾邮件的特征分别是怎么样的,也即p(x|y)。x={0,1}n,y∈{0,1},这里我们的词典中词汇数量是50000,所以n=50000,特征向量x会有250000种可能,需要250000−1个参数。
我们假设xi|y之间相互独立(虽然假设各个单词的出现概率相互独立不是很合理,但是即便这样,朴素贝叶斯的效果依旧不错),根据朴素贝叶斯,我们得到: p(x1,x2,…,x50000|y)=p(x1|y)p(x2|y)⋯p(x50000|y)
可以解得: ϕj|y=1=∑mi=11{xj(i)=1,y(i)=1}∑mi=11{y(i)=1}=统计所有包含词语j的垃圾邮件的数量垃圾邮件的总数 ϕj|y=0=∑mi=11{xj(i)=1,y(i)=0}∑mi=11{y(i)=0}=统计所有包含词语j的非垃圾邮件的数量非垃圾邮件的总数 ϕy=∑mi=11{y(i)=1}m=垃圾邮件的数量邮件的总数
Laplace平滑
假设,训练集中,我们重来没有碰到过"NIPS"这个词汇,假设我们词典中包含这个词,位置是30000,也就是说: p(x30000=1|y=1)=0 p(x30000=0|y=1)=0 ⇓ p(x|y=1)=50000∏i=1p(xi|y=1)=0 p(x|y=0)=50000∏i=1p(xi|y=0)=0
Laplace平滑就是来帮助解决这个问题的。
举例而言,在计算: ϕy=p(y=1)=numof(1)numof(0)+numof(1)
在Laplace平滑中,我们会采取如下策略: ϕy=p(y=1)=numof(1)+1numof(0)+1+numof(1)+1
推广而言,在多分类问题中,y∈{1,…,k},那么: p(y=j)=∑mi=11{y(i)=j}+1m+k
例三:垃圾邮件分类(2)
之前的垃圾分类模型里面,我们对邮件提取的特征向量是: x=[1,0,0,…,1,…]T
现在,我们换一种特征向量提取方式,将邮件的特征向量表示为: x=[x1,x2,…,xj,…]T
对联合概率分布p(x,y)进行极大似然估计,得到如下的参数: ϕk|y=1=p(xj=k|y=1)=Cx=k+1Cy=1+n ϕk|y=0=p(xj=k|y=0)=Cx=k+1Cy=0+n ϕy=p(y=1)=Cy=1+1Cy=1+1+Cy=0+1
n表示词典中词汇的数量,也就是特征向量的长度; Cx=k=m∑i=1(1{y(i)=1}ni∑j=11{x(i)j=k})