Skip to content
Bo's Blog
Go back

CS229机器学习笔记(五)-SVM之函数间隔, 几何间隔

课程信息: 主页 Youtube 参考资料: 《统计学习方法》 参考阅读:

  1. 支持向量机系列-pluskid
  2. 支持向量机SVM(一)
  3. 斯坦福CS229机器学习课程笔记五:支持向量机 Support Vector Machines
  4. NB多项式模型、神经网络、SVM初步—斯坦福ML公开课笔记6
  5. 机器学习笔记

一. 从Logistic Regression到SVM

1.1 想法

在logistic regression中, sigmoid函数图像如下: 它的输出hθ(x)h_\theta(x)p(y=1x)p(y=1|x). 在logistic中, 我们通过计算θTx\theta^Tx来预测新的数据:

predict"1"iffθTx0,predict"0"iffθTx<0.\begin{aligned} \text{predict} \quad "1" \quad \text{iff} \quad \theta^Tx\ge0, \\ \text{predict} \quad "0" \quad \text{iff} \quad \theta^Tx<0. \end{aligned}

其中iff代表当且仅当. 若θTx\theta^Tx越大, 则hθ(x)=p(y=1x;w,b)h_\theta(x)=p(y=1|x;w,b)越大, 即我们非常”确信”它的标签为”1”. 所以:

IfθTx0,very "confident" thaty=1,IfθTx0,very "confident" thaty=0.\begin{aligned} \text{If} \quad \theta^Tx\gg0,\quad \text{very "confident" that} \quad y=1, \\ \text{If} \quad \theta^Tx\ll0,\quad \text{very "confident" that} \quad y=0. \end{aligned}

如果在我们的训练集中, 对于所有的预测结果为”1”的样本都有θTx0\theta^Tx\gg0, 对于所有的预测结果为”0”的样本都有θTx0\theta^Tx\ll0, 那便是极好的. 用数学语言表达为:

ifis.t.y(i)=1,haveθTx0,ifis.t.y(i)=0,haveθTx0,\begin{aligned} \text{if} \quad \forall i \quad \text{s.t.} \quad y^{(i)}=1, \text{have} \quad \theta^Tx\gg0, \\ \text{if} \quad \forall i \quad\text{s.t.} \quad y^{(i)}=0, \text{have} \quad \theta^Tx\ll0, \end{aligned}

举个例子, 假设我们有下面这个分类器, 我们观察其中三个点A, B, C. 我们可以比较确定地认为A的标签为”X”. 而对于C来说, 我们就不能非常确定它的标签是”X”, 因为它离决策边界太近了. 这个决策边界只要有一点点变化就可能导致C分到不同的类中. 对于B的确信程度介于A和C之间. 即我们不仅仅要求分类器能正确的分类, 更进一步我们要求θTx0\theta^Tx\ll0θTx0\theta^Tx\gg0. 即, 我们想要得到一种决策边界, 使得所有的样本都尽量远离这个边界. (下图截图自林轩田-机器学习技法), 下面三个决策边界中, 你认为哪一个最好? 这个时候你也许会问, 这个离决策边界的距离到底指的是什么, 应该怎样表达他们. 这里就会引出”函数间隔”和”几何间隔”的概念. 不过为了使后面一系列的推导的方便, 我们先稍微修改一下原先的(logistic regression中的)一些记号. 注: 在接下来的讲解中, 我们默认数据是线性可分的(后面我们会讨论线性不可分的情况).

1.2 SVM中的符号说明

1.在logstic中我们用0,1代表两个类, 现在我们改用-1,+1, 即y{1,+1}y\in \{-1, +1\}; 2.在logistic中, 我们的gg是sigmoid函数, 现在改为:

g(z)={1,z0 1,otherwiseg(z)=\begin{cases} 1, \quad z\ge0 \\\ -1, \quad \text{otherwise} \end{cases}

3.在logistic中, 我们的假设函数为hθ(x)h_\theta(x), 现在改为, hw,b(x)=g(wTx+b)h_{w,b}(x)=g(w^Tx+b), 其中ww相当于[θ1θ2...θn]T{\begin{bmatrix} \theta_1 \theta_2 ... \theta_n \end{bmatrix}}^T, bb相当于θ0\theta_0. 符号弄清楚了之后, 我们可以研究SVM了. 首先, 我们要介绍一个概念: 函数间隔(functional margin).

二. 函数间隔和几何间隔

2.1 函数间隔

对于一个训练样本(x(i),y(i))(x^{(i)}, y^{(i)}), 我们定义它到超平面(w,b)(w,b)的函数间隔为: γ^=y(i)(wTx(i)+b).\hat{\gamma}=y^{(i)}(w^Tx^{(i)}+b). 我们希望函数间隔越大越好, 即:

ify(i)=1,wantwTx(i)+b0,ify(i)=1,wantwTx(i)+b0.\begin{aligned} \text{if} \quad y^{(i)}=1, \text{want} \quad w^Tx^{(i)}+b\gg0, \\ \text{if} \quad y^{(i)}=-1, \text{want} \quad w^Tx^{(i)}+b\ll0. \end{aligned}

并且有, 若y(i)(wTx(i)+b)>0y^{(i)}(w^Tx^{(i)}+b)>0, 则样本(x(i),y(i))(x^{(i)}, y^{(i)})分类正确.

函数间隔越大, 代表我们对于分类的结果非常确定. 我们希望函数间隔越大越好. 看上去好像没什么毛病, 但这里的确有一个问题, 就是其实我们可以在不改变这个超平面的情况下可以让函数间隔任意大, 为什么? 只要我们成比增加w,b就可以达到这个目的了. 例如, 我们将ww变为2w2w, bb变为2b2b, 那么我们的函数间隔将会是原来的两倍, 但是超平面wTx+b=0wTx+b=0和超平面2wTx+2b=02w^Tx+2b=0是一回事. 为了解决这个问题, 我们就需要加上一些限制条件(后面会讲). 对于整个训练集, 我们的函数间隔定义为

γ^=miniγ^(i).\hat{\gamma}=\min_i\hat{\gamma}^{(i)}.

也就是说, 对于整个训练集来说, 函数间隔为所有样本中函数间隔最小的那个函数间隔.

2.2 几何间隔

如下图所示, 决策边界为wTx+b=0w^Tx+b=0, 我们可以证明ww是垂直于这个决策边界(超平面)的(证明可见: 林轩田-机器学习技法).对于训练样本A(x(i),y(i))(x^{(i)},y^{(i)}), 它到超平面wTx+b=0w^Tx+b=0的几何距离为γ(i)\gamma^{(i)}. 由于BA方向上的单位向量可表示为ww\frac{w}{||w||}. 则B(A在超平面上的投影)可表示为(OB=OABA\overrightarrow{OB}=\overrightarrow{OA} - \overrightarrow{BA}):

x(i)γ(i)ww.x^{(i)}-\gamma^{(i)}\cdot\frac{w}{\Vert w\Vert}.

而B又在超平面上, 所以我们将这个点带回超平面得到:

wT(x(i)γ(i)ww)+b=0.w^T(x^{(i)}-\gamma^{(i)}\cdot\frac{w}{\Vert w\Vert})+b=0.

通过上式解出γ\gamma:

wTx(i)γ(i)wTww+b=0,wTx(i)+b=γ(i)w,γ(i)=(ww)Tx(i)+bw.\begin{aligned} w^Tx^{(i)}-\gamma^{(i)}\frac{w^Tw}{||w||}+b=0, \\ w^Tx^{(i)}+b=\gamma^{(i)}||w||, \\ \gamma^{(i)}=(\frac{w}{\Vert w\Vert})^Tx^{(i)}+\frac{b}{\Vert w\Vert}. \end{aligned}

加上前面的y(i)y^{(i)}于是我们就得到了几何间隔:

γ(i)=y(i)(wTwx(i)+bw).\gamma^{(i)}=y^{(i)}(\frac{w^T}{\Vert w\Vert}x^{(i)}+\frac{b}{\Vert w\Vert}).

我们发现当w=1||w||=1时, 几何间隔就是函数间隔.这个时候, 如果任意放大w||w||, 几何间隔是不会改变的, 因为w||w||也会随着被放大. 几何间隔与函数间隔的关系为:

γ(i)=γ^(i)w.\gamma^{(i)}=\frac{\hat{\gamma}^{(i)}}{\Vert w\Vert}.

对于所有的训练样本, 我们的几何间隔为:

γ=miniγ(i).\gamma=\min_i\gamma^{(i)}.

视频到这里后面还有一点点的内容放到下篇一起讲.


Share this post on:

Previous Post
CS229机器学习笔记(四)-生成学习算法, 朴素贝叶斯, 多项式事件模型
Next Post
CS229机器学习笔记(三)-指数分布族, 广义线性模型