「CS229」Lecture6:拉普拉斯平滑和SVM简介


拉普拉斯平滑

问题引入

在上一节中,我们使用朴素贝叶斯来解决垃圾邮件分类问题。我们设 x 表示邮件内容特征,x 的每一个分量(取值0或1)表示词典中对应位置的单词是否出现,y 表示该邮件是否为垃圾邮件。我们假设P(xy)P(y) 都遵循伯努利分布,因此参数有

  • ϕjy=1=P(xj=1y=1)
  • ϕjy=0=P(xj=1y=0)
  • ϕy=p(y=1)
通过极大似然估计,可以得到这三个参数的最优值
$$
ϕy      =i=1mI(y(i)=1)mϕjy=1=i=1mI(xj(i)=1,y(i)=1)i=1mI(y(i)=1)ϕjy=0=i=1mI(xj(i)=1,y(i)=0)i=1mI(y(i)=0)

$$

尽管这些值都是通过计算得到的,但其实一打眼看上去也很好理解。以ϕjy=1 为例,其最优值计算公式的分母 i=1mI(y(i)=1) 表示“训练数据集中垃圾邮件的数目”,i=1mI(xj(i)=1,y(i)=1) 表示“包含词典中第 j 个单词的垃圾邮件的数量”。得这些参数的最优值,也就得到了P(x|y)P(x) 。因此当我们预测时,就可以套用下面的公式
P(y=1x)=P(xy=1)P(y=1)P(xy=1)P(y=1)+P(xy=0)P(y=0)=j=1nP(xjy=1)P(y=1)P(j=1nxjy=1)P(y=1)+j=1nP(xjy=0)P(y=0)
我们考虑这样一个情况——假设词典中第 k 个单词在训练集所有邮件里都没有出现过,即P(xk=1|y=1)=P(xky=0)=0。假设预测时出现一封包含该单词的邮件,此时我们计算 P(y=1x) 会得到
P(y=1|0)=00+0
显然,我们得不到一个有意义的概率值。那么问题的根源在哪里呢?

根源剖析

通过观察我们可以发现,P(xk=1|y=1)=P(xky=0)=0 是有问题的。根据概率论的知识我们知道,“某个事件的概率为 0 ” 表示 “该永远不会发生”。P(xk=1|y=1) ,也就是ϕk|y=0,是我们完全根据训练集的数据计算得到的。我们不能奢求训练集可以涵盖所有的情况,因此不能保证垃圾邮件中永远不可能出现 xk 对应的单词。所以, P(xk=1y=1) 不能是 0,而是应该是一个比较小的非负值。

为了达到这个目的,我们需要在计算 ϕjy=1 的时候做一些“手脚“——也就是使用拉普拉斯平滑(Laplace Smoothing)。

问题解决

绕了这么大一圈,终于引出拉普拉斯平滑。但是别急,我们需要先看一个拉普拉斯平滑的简单案例。假设有一个足球队A,该球队先前和B、C、D、E、F五个队伍都打过比赛,数据如下

对手 结果
B
C
D
E
F

下周A队要和G队打比赛,A队胜利的概率有多大?很显然,我们可以根据历史数据对A的胜率进行预测,即
P(AG)=AA+A=00+5=0
这里出现了和刚才一样的问题 —— 只通过历史数据不能完全推断未来的数据,因此不能100%断定A队一定输(万一人家奋发图强了呢)。为了解决该问题,拉普拉斯平滑的做法是:将A队赢的次数增加1,A队输的次数也增加1,这样计算出来的概率就不是0了,即
P(AG)=A+1A+1+A+1=17
将该思想运用在垃圾邮件分类问题中 ϕjy=1ϕjy=0 的计算上,有
ϕjy=1=i=1mI(xj(i)=1,y(i)=1)+1i=1mI(y(i)=1)+2ϕjy=0=i=1mI(xj(i)=1,y(i)=0)+1i=1mI(y(i)=0)+2

泛化

更一般的,假设特征 x 有多个分量,并且每个分量取值有k个——即x{1,2,,k} 。根据朴素贝叶斯的思想,P(xy)的计算公式为——
P(xy)=j=1nP(xjy)
我们可以根据历史数据预测 P(xj=xy=y) 的值,有
P(xj=xy=y)=i=1mI(xj(i)=xy=y)i=1mI(y=y)
应用拉普拉斯平滑,我们可以改写P(xj=ky=y) 的计算公式,即
P(xj=xy=y)=i=1mI(xj(i)=xy=y)+1i=1mI(y=y)+k

两种事件模型

多元伯努利事件模型

对于以前提到的“垃圾邮件分类任务”,我们用 x 表示邮件内容特征,x​ 的每一个分量(取值0或1)表示词典中对应位置的单词是否出现。假设词典为 [a, English, I, like,zoo],维度为5。有一封邮件的内容为“I like Englist”,则对应的 x 就是
x=[01110]T
这种模型我们称作“多元伯努利事件模型”。在该模型中,x 的维度为词典的规模,即x{0,1}#dict。该模型的缺点也很明显,就是我们只知道某个单词是否存在,无法得知该单词的具体数量,另外单词的位置我们也无法得知。

多项事件模型

为了解决上述的问题,我们换用另一种x 的表示方法。假设词典是这样的

Index Word
56 English
129 I
234 like

那么对应的x 可以写作
x=[56129234]T
很容易可以看出,x 维度为“邮件的长度”,x 的每一个分量表示“邮件对应位置的单词在词典中的下标”。我们把这种模型称作"多项事件模型"。该模型中P(yx) 的计算公式如下所示(其中n表示邮件长度)
P(yx)=P(xy)P(y)P(x)=j=1nP(xjy)P(y)P(x)
其实本质上需要对 $P(x_j y) $ 和 P(y) 进行预测。假设这两个概率都遵循伯努利分布,则可以设置以下参数

  • ϕy=P(y=1)
  • ϕky=0=P(xj=ky=0)
  • ϕky=1=P(xj=ky=1)

可以发现,我们已经做出了如下假设——邮件中每个位置出现单词 k 的概率都是相同的。我们极大化联合似然概率 P(x,y)=P(xy)P(y) ,可以得到参数的估计值
ϕy=i=1nI(y(i)=1)mϕky=0=i=1n(I(y(i)=0)j=1mI(xj(i))=k)i=1nI(y(i)=0)niϕky=1=i=1n(I(y(i)=1)j=1mI(xj(i))=k)i=1nI(y(i)=1)ni
上面公式中ni 表示训练数据集中第 i 封邮件的长度,也就是 x(i) 的维度。当然,我们可以应用拉普拉斯平滑,将ϕky=0 改写成如下形式,ϕky=0 同理。

ϕky=0=i=1n(I(y(i)=0)j=1mI(xj(i))=k)+1i=1nI(y(i)=0)ni+

支持向量机简介

支持向量机(Support Vector Machine,SVM)是一种机器学习算法,可以用于分类和回归问题。它通过在高维空间中寻找一个最优的超平面,将不同类别的样本实例分开。在支持向量机中,数据点被看作是高维空间中的向量,不同类别的数据点被分别标记为正样本(+1)和负样本(-1)。SVM的目标是找到一个超平面,使得离该平面最近的数据点的距离最大化,这些离超平面最近的数据点就是支持向量(Support Vector)。

另外,支持向量机还可以将一个简单的特征集(如[x1,x2]),映射到一个高维的特征集(如[x1,x2,x12,x22,x1x2]),从而找到一个非线性的边界。

特殊记号

  • 标签 y{1,+1}

  • h 预测的值在 {1,+1} 之中
    g(z)={1,z01,z<0

  • hw,b(x)=g(wTx+b),其中 wRnbR

Functional margin

Functional margin可以看做数据点到由 (w,b) 决定的超平面的距离的一种度量。对于一个数据点(x(i),y(i)),其对应的Functional margin定义如下:
γ^(i)=y(i)(wTx(i)+b)
根据γ^(i) 的定义也定看出,当γ^(i)>0 时,表示h(x(i))=y(i)。我们希望,我们的分类器可以达到一个较大的 Functional Margin, 即γ^(i)0,也就是说,

  • y(i)=1 时,我们希望 wTx(i)+b0
  • y(i)=1 时,我们希望 wTx(i)+b0

对于整个数据集来说,其 Functional margin 可以被定义为
γ^=miniγ^(i)
当然,我们可以采取一种trick 来增加γ^(i) 的值——即把 wb 同时增大相同的倍数,这样γ^(i) 也会增大相同的倍数,但是边界的位置不会改变。为了解决这个问题,我们可以增加约束,一种是限制 ||w||=1 ,另一种是w=w||w||,b=b||b||

Geometric margin

Geometric margin 也是数据点到由 (w,b) 决定的超平面的距离的一种度量,其实就是数据点到超平面的欧几里得距离。对于一个数据点(x(i),y(i)),其对应的 Geometric margin 定义如下:
γ(i)=y(i)(wTx(i)+b)||w||
结合 Functional margin 的定义,我们可以发现
γ(i)=γ^(i)||w||
对于整个数据集来说,其 Geometric margin 可以被定义为
γ=miniγ(i)
他的几何意义也很简单,就是“距离超平面最近的数据点”到超平面的距离。为了能够获得一个最佳边际分类器(optimal margin classifier),我们需要让选择(w,b)γ 最大化,也就是让所有数据点尽量离着超平面远一些。下图中,绿线分界线对应的 γ 显然要大于红线分界线,因此绿色分界线更优。

最大化 γ 我们可以形式化的描述为
$$
maxγ,w,b γs.t.y(i)(wTx(i)+b)||w||γ     (i=1,,m)
minw,b||w||2s.t. y(i)(wTx(i)+b)1     (i=1,,m)

$$


文章作者: Hyggge
版权声明: 本博客所有文章除特別声明外,均采用 CC BY 4.0 许可协议。转载请注明来源 Hyggge !