3.支持向量机(一)

10-13 896 views

1 简介

支持向量机基本上是最好的有监督学习算法了。这次斯坦福提供的学习材料,让我重新学习了一些 SVM知识。我看很多正统的讲法都是从 VC 维理论和结构风险最小原理出发,然后引出 SVM 什么的,还有些资料上来就讲分类超平面什么的。这份材料从前几节讲的 logistic 回归出发,引出了 SVM,既揭示了模型间的联系,也让人觉得过渡更自然。

2 重新审视 logistic 回归

Logistic 回归目的是从特征学习出一个 0/1 分类模型,而这个模型是将特性的线性组合作为自变量,由于自变量的取值范围是负无穷到正无穷。因此,使用 logistic 函数(或称作sigmoid 函数)将自变量映射到(0,1)上,映射后的值被认为是属于 y=1 的概率。

形式化表示就是

假设函数

3-image1

其中 x 是 n 维特征向量,函数 g 就是 logistic 函数。

3-image2

的图像是

3-image3

可以看到,将无穷映射到了(0,1)。

而假设函数就是特征属于 y=1 的概率。

3-image4

当我们要判别一个新来的特征属于哪个类时,只需求ℎθ(x),若大于 0.5 就是 y=1 的类,反之属于 y=0 类。

再审视一下ℎθ(x),发现ℎθ(x)只和θTx有关,θTx >0,那么ℎθ(x) > 0.5,g(z)只不过是用 来映射,真实的类别决定权还在 。还有当θTx ≫ 0时,ℎθ(x)=1,反之ℎθ(x)=0。如果我们只从θTx出发,希望模型达到的目标无非就是让训练数据中 y=1 的特征θTx ≫ 0,而是 y=0 的特征θTx ≪ 0。Logistic 回归就是要学习得到θ,使得正例的特征远大于 0,负例的特征远小于 0,强调在全部训练实例上达到这个目标。

图形化表示如下:

3-image5

中间那条线是θTx = 0,logistic 回顾强调所有点尽可能地远离中间那条线。学习出的结果也就中间那条线。考虑上面 3 个点 A、B 和 C。从图中我们可以确定 A 是×类别的,然而C 我们是不太确定的,B 还算能够确定。这样我们可以得出结论,我们更应该关心靠近中间分割线的点,让他们尽可能地远离中间线,而不是在所有点上达到最优。因为那样的话,要使得一部分点靠近中间线来换取另外一部分点更加远离中间线。我想这就是支持向量机的思路和 logistic 回归的不同点,一个考虑局部(不关心已经确定远离的点),一个考虑全局(已经远离的点可能通过调整中间线使其能够更加远离)。这是我的个人直观理解。

3 形式化表示

我们这次使用的结果标签是 y=-1,y=1,替换在 logistic 回归中使用的 y=0 和 y=1。同时将θ替换成 w 和b。以前的θTx= θ0 + θ1x1+ θ2 x2+ ⋯ + θnxn ,其中认为x0 = 1。现在我们替 换θ0为 b,后面替换 θ1x1 + θ2 x2+ ⋯ + θnxn 为w1x1  + w2 x2 + ⋯ + wnxn (即 wTx)。这样, 我们让θTx =wTx + b,进一步ℎθ(x)= g(θTx ) = g( wTx+ b)。也就是说除了 y 由 y=0变为y=-1,只是标记不同外,与 logistic 回归的形式化表示没区别。再明确下假设函数ℎw,b (x) = g( wTx+ b)

上一节提到过我们只需考虑    的正负问题,而不用关心 g(z),因此我们这里将 g(z)做一个简化,将其简单映射到 y=-1 和 y=1 上。映射关系如下:

3-image44

4 函数间隔(functional margin)和几何间隔(geometric margin)

给定一个训练样本( x(i)y(i)),x 是特征,y 是结果标签。i 表示第 i 个样本。我们定义函数间隔如下:3-image45

可想而知,当 y(i)= 1时,在我们的 g(z)定义中,wTx( i) + b ≥ 0, ̂y(i)的值实际上就是|wTx( i)  +  b|。反之亦然。为了使函数间隔最大(更大的信心确定该例是正例还是反例),当y(i) = 1时, wTx( i) + b应该是个大正数,反之是个大负数。因此函数间隔代表了我们认为特征是正例还是反例的确信度。

继续考虑 w 和 b,如果同时加大 w 和 b,比如在(wTx( i) + b)前面乘个系数比如 2,那么所有点的函数间隔都会增大二倍,这个对求解问题来说不应该有影响,因为我们要求解的 是wTx + b= 0,同时扩大 w 和 b 对结果是无影响的。这样,我们为了限制 w 和 b,可能需 要加入归一化条件,毕竟求解的目标是确定唯一一个 w 和 b,而不是多组线性相关的向量。 这个归一化一会再考虑。

刚刚我们定义的函数间隔是针对某一个样本的,现在我们定义全局样本上的函数间隔

3-image6

说白了就是在训练样本上分类正例和负例确信度最小那个函数间隔。

接下来定义几何间隔,先看图

3-image7

假设我们有了 B 点所在的wTx + b= 0分割面。任何其他一点,比如 A 到该面的距离以y(i)表示,假设 B就是 A在分割面上的投影。我们知道向量 在分割面上的投影。我们知道向量 BA 的方向是 w(分割面的梯度) ,单位向量是w / ||w||。A点是( x(i)y(i)),所以B点是 x=  x(i)  = y(i)  * w / ||w|| (初中几何知识),带入wTx + b= 0得,

3-image46

进一步得

3-image8

y(i)实际上就是点到平面距离。

再换种更加优雅的写法:

3-image9

当||w|| = 1时,不就是函数间隔吗?是的,前面提到的函数间隔归一化结果就是几何间 隔。他们为什么会一样呢?因为函数间隔是我们定义的,在定义的时候就有几何间隔的色彩。同样,同时扩大 w 和 b,w 扩大几倍,||w||就扩大几倍,结果无影响。同样定义全局的几何间隔

3-image10

5 最优间隔分类器(optimal margin classifier)

回想前面我们提到我们的目标是寻找一个超平面,使得离超平面比较近的点能有更大的间距。也就是我们不考虑所有的点都必须远离超平面,我们关心求得的超平面能够让所有点中离它最近的点具有最大间距。