SVM模型 | Jason Hao's Blog
0%

SVM模型

空间几何基础

点到平面距离公式

如图,有一个平面 $: \(ax+by+cz+d=0\),它的法向量 \(\vec n=(a,b,c)\)(平面内任意一个向量与 \(\vec n\) 的点积为 0),求平面外一点 \(B=(x_1,y_1,z_1)\) 到平面 \(\alpha\) 的距离 取平面内任意一点 \(A=(x_0,y_0,z_0)\),则向量 \(\overrightarrow{AB}=(x_1-x_0,y_1-y_0,z_1-z_0)\) ,点 \(B\) 到平面 \(\alpha\) 的距离等于 \(|\overrightarrow{AB}|cos\theta\),而 \(cos\theta=\frac{\vec n \cdot \overrightarrow{AB}}{|\vec n|| \overrightarrow{AB}|}\)

因此点 \(B\) 到平面的距离 \(h=\overrightarrow{AB}\cdot \frac{\vec n}{|\vec n|}=\left|(x_1-x_0,y_1-y_0,z_1-z_0)\cdot \frac{(a,b,c)}{\sqrt{a^2+b^2+c^2}} \right|=\frac{|a(x_1-x_0)+b(y_1-y_0)+c(z_1-z_0))|}{\sqrt{a^2+b^2+c^2}}\)

\(ax_0+by_0+cz_0+d=0\),所以最终点 \(B\) 到平面的距离为 \(h=\frac{|ax_1+by_1+cz_1+d|}{\sqrt{a^2+b^2+c^2}}\),

推广到 n 维空间中点 \(A=(x_1,x_2,...,x_n)\),超平面 \(\pi\): \(a_1y_1+a_2y_2+...+a_ny_n+d=0\),则点 \(A\) 到平面 \(\pi\) 的距离为 \(\frac{|a_1x_1+a_2x_2+...+a_nx_n+d|}{\sqrt{ {a_1}^2+{a_2}^{2}+...+{a_n}^2}}\)

两个平面之间的距离

已知两个超平面 \({\pi}_1\): \(a_1x_1+a_2x_2+...+a_nx_n+d_1=0\) 和超平面 ${}_2: \(a_1y_1+a_2y_2+...+a_ny_n+d_2=0\)。 取 \({\pi}_1\) 中任意一点 \(P(x_1,x_2,...,x_n)\),则 \(P\)\(\pi_2\) 的距离为 \(h=\frac{|a_1x_1+a_2x_2+...+a_nx_n+d_2|}{\sqrt{ {a_1}^2+{a_2}^2+...+{a_n}^2 }}\)。由于 \(P\) 在平面 \(\pi_1\) 上,所以有 \(a_1x_1+a_2x_2+...+a_nx_n+d_1=0\),最后 \(h=\frac{|d_2-d_1|}{\sqrt{ {a_1}^2+{a_2}^2+...+{a_n}^2}}\)

SVM 间隔

函数间隔

\(w^Tx+b=0\) 为我们的划分超平面,对于任何一个数据点 \(x\),它的标签为 \(y\in [-1,1]\),我们规定,当 \(w^Tx+b>0\)\(x\) 被划分为正例,当 \(w^Tx+b<0\)\(x\) 被划分为反例。定义函数间隔为

\(\gamma(x) = y(w^Tx+b)=yf(x)\)

\(\gamma > 0\),那么说明数据点 \(x\) 被正确分类

那么 SVM 训练的目标为 \(\hat \gamma = min\ \gamma(x_i), i = 1,2,...,n\)

几何间隔

由于函数间隔 \(\hat\gamma\) 的值会随着参数 \(w\)\(b\) 的缩放(超平面不变)而变化,比如 \(w\)\(b\) 变成 \(2w\)\(2b\)\(f(x)\) 会变成 \(2f(x)\),如果按照最小化函数间隔,永远求不出个最优的参数 \(w\)\(b\)。为此将目标给为最小化几何间隔

\(\tilde \gamma=\frac{y(w^Tx+b)}{||w||}=\frac{yf(x)}{||w||}=\frac{\gamma(x)}{||w||}\)

其中 \(\frac{f(x)}{||w||}\) 其实就是点 \(x\) 到超平面 \(w^Tx+b=0\) 的几何距离

最大间隔分类器

对于我们的分类器,希望最大化 \(max\ \tilde{\gamma}\),并且对所有的数据点要满足 \(y_i(w^Tx_i)+b=\gamma(x_i)\geq \hat \gamma, i=1,2,...,n\)

这里我们可以取 \(\hat \gamma=1\)(这个值可以随意取一个大于 0 的数,参数 \(b\) 可以在训练过程中调整),如此 SVM 的优化目标为

\(max\frac{1}{||w||},\ s.t.,\ y_i(w^Tx_i+b)\geq 1,i=1,2,...,n\)

这个问题的优化目标就如下图所示

深入推导

线性可分问题

Max 问题变为 Min 问题

\(min\frac{1}{2}||w||^2,\ s.t.,\ y_i(w^Tx_i+b)\geq 1,i=1,2,...,n\)

对偶问题转化

上面的问题是一个凸二次规划问题,可以直接用现成优化方法。还可以用朗格朗日对偶性,将原问题变化成它的对偶问题来求解。这样做的好处:(1)对偶问题更容易求解;(2)方便引入核函数

定义拉格朗日函数

\(L(w,b,\alpha)=\frac{1}{2}||w||^2-\sum_{i=1}^n \alpha_i(y_i(w^Tx_i+b)-1)\)

现在来看,我们的目标为 \(\underset{w,b}{min}\ \underset{\alpha_i\geq 0}{max}\ L(w,b,\alpha)=p^*\)

其中 \(p^*\) 为问题的最优值。容易验证,如果有那个条件 \(y_i(w^Tx_i+b)<1\) 不满足,那么里面的 \(max\) 问题就会趋向 \(\infty\),只有当所有的条件都满足时,才能求出外面的 \(min\) 问题,最小值为 \(\frac{1}{2}||w||^2\)

此时对换 \(min\)\(max\) 就得到了原问题的对偶问题

\(\underset{\alpha_i\geq 0}{max}\ \underset{w,b}{min}\ L(w,b,\alpha)=d^*\)

其中 \(d^*\) 为问题的最优值,并且满足 \(d^*\leq p^*\)。由这个对偶问题,从而实现先对 \(w\)\(b\) 极小化,然后对 \(\alpha_i\) 极大化

注: 只有原问题能满足 KTT 条件才能转化为它的对偶问题来求解。 KTT 条件定义如下:

对于一个凸函数 \(f(x)\),求解 \(min\ f(x)\)

\(s.t. h_j(x)=0,j=1,...,p;\ g_k(x)\leq 0,k=1,...,q\)

KTT 条件如下: 1. \(h_j(x)=0,j=1,...,p;\ g_k(x)\leq 0,k=1,...,q\) 2. \(\bigtriangledown f(x)+\sum_{j=1}^p \lambda_j\bigtriangledown h_j(x) + \sum_{k=1}^q \mu_k\bigtriangledown g_k(x) = 0, \lambda_j\neq 0,\mu_k\geq 0, \mu_kg_k(x)=0\)

问题求解 1. 固定 \(\alpha_i\),最小化 \(w\)\(b\)

$\frac{\partial L}{\partial w}=0 \Rightarrow w=\sum_{i=1}^n \alpha_i y_i x_i$ 

$\frac{\partial L}{\partial b}=0 \Rightarrow b=\sum_{i=1}^n \alpha_i y_i=0$

代入 $L(w,b,\alpha)=\frac{1}{2}||w||^2-\sum_{i=1}^n \alpha_i(y_i(w^Tx_i+b)-1)$ 得到

$L(w,b,\alpha)$

$=\frac{1}{2}\sum_{i,j=1}^n \alpha_i\alpha_jy_iy_jx_i^Tx_j-\sum_{i,j=1}^n\alpha_i\alpha_jy_iy_jx_i^Tx_j-b\sum_{i=1}^n \alpha_i y_i+\sum_{i=1}^n \alpha_i$ 

$=\sum_{i=1}^n \alpha_i-\frac{1}{2}\sum_{i,j=1}^n\alpha_i\alpha_jy_iy_jx_i^Tx_j$
  1. 代入上一步求解的最优 \(w^*\)\(b^*\),然后对 \(\alpha\) 最大化

    由上一步求出了新的朗格朗日函数不包含 \(w\)\(b\),得到:

    \(\underset{\alpha}{max}\sum_{i=1}^n \alpha_i-\frac{1}{2}\sum_{i,j=1}^n\alpha_i\alpha_jy_iy_jx_i^Tx_j\)

    \(s.t.,\ \alpha_i\geq 0,i=1,...,n\)

    \(\sum_{i=1}^n \alpha_i y_i=0\)

    求得 \(L(w,b,\alpha)\) 关于 \(w\)\(b\) 最小化,以及对 \(\alpha\) 的极大化之后,最后使用 SMO 算法求解对偶问题中的拉格朗日乘子 \(\alpha\),由此可以求出 \(\alpha_i\)

    根据 \(w=\sum_{i=1}^n \alpha_i y_i x_i\) 可求出 \(w\), 然后通过 \(b^*=y_j-\sum_{i=1}^n\alpha_i y_i(x_i^Tx_j),\alpha_j>0\) 求出 \(b\)。而分类函数 \(f(x)=w^Tx+b\),其中 \(w=\sum_{i=1}^n \alpha_iy_ix_i\),代入得到分类函数 \(f(x)=\sum_{i=1}^n \alpha_iy_i\langle x_i,x\rangle+b\)

线性不可分问题

由上面的分类函数可以看出,新的数据点 \(x^*\) 的分类,只需要计算它与训练数据点的内积即可(可用于推广 Kernel)。而 SVM 中的支持向量(supporting vectors)是对应 \(\alpha_i\neq 0\) 的训练数据点。

感性理解就是,\(x^*\) 分类其实只与分类超平面有关,而这个超平面只受支持向量的影响,所以其他的训练数据点不需要参与决策

理性理解,回到我们的拉格朗日乘式子,\(\underset{\alpha_i\geq 0}{max}\ \frac{1}{2}||w||^2-\sum_{i=1}^n \alpha_i(y_i(w^Tx_i+b)-1)\)

对于一个支持向量来说,\(y_i(w^Tx_i+b)-1=0\)\(\alpha_i\) 可以不为 0;对于非支持向量的数据点来说\(y_i(w^Tx_i+b)-1>0\), 为了求极大,必须满足 \(\alpha_i=0\)\(\alpha_i\geq 0\)

松弛变量使用

加入松弛变量是为了解决离群点的问题,因为当训练数据中存在函数间隔大于 1 时,采用一个松弛变量来实现对一些数据点的软间隔

由此,原目标函数:

\(max\ \frac{1}{2}||w||^2;\ y_i(w^Tx_i+b)\geq 1,i=1,...,n\)

就变成了新的目标函数:

\(max\ \frac{1}{2}||w||^2+C\sum_{i=1}^n \xi_i;\ y_i(w^Tx_i)-b\geq 1- \xi_i, \xi_i\geq 0,i=1,...,n\)

其中 \(C>0\) 用于平衡对两个目标:(1)最大化几何间隔;(2)使误分点尽量少。当 \(C\) 很大时,对误分类的惩罚大(着重考虑减少误分点);相反,就更重视最大化几何间隔

用拉格朗日乘数法对上面的新目标求对偶问题得

  1. 拉格朗日函数

\(L(w,b,\alpha,\xi,\mu)=\frac{1}{2}||w||^2+C\sum_{i=1}^n \xi_i\)

\(-\sum_{i=1}^n\alpha_i(y_i(w^Tx_i+b)-1+\xi_i)-\sum_{i=1}^n\mu_i\xi_i\)

  1. 对偶问题

\(\underset{\alpha}{min}\frac{1}{2}\sum_{i,j=1}^n \alpha_i\alpha_jy_iy_j(x_i^Tx_j)-\sum_{i=1}^n\alpha_i\)

\(s.t.\ \sum_{i=1}^n \alpha_i y_i=0,0 \leq \alpha_i\leq C,i=1,...,n\)

  1. 求解 (1)求解得到最优 \(\alpha^*=(\alpha_1^*,\alpha_2^*,...,\alpha_n^*)^T\)

(2)计算 \(w^*=\sum_{i=1}^n\alpha_i^* y_ix_i\)

(3)选择一个数据 \(j,0<\alpha_j^*<C\),计算 \(b^*=y_j-\sum_{i=1}^n y_i\alpha_i^*(x_i^Tx_j)\)

(4)得到决策函数 \(f(x)=sign({w^*}^Tx+b)\)

软间隔支持向量 软间隔支持向量可以在三个位置(1)间隔边界上;(2)间隔边界与分离超平面之间;(3)分离超平面误分的那一侧。 若 \(a_i^*<C\),则 \(\xi_i=0\),支持向量 \(x_i\) 恰好落在间隔边界上;若 \(a_i^*=C, 0<\xi_i<1\),则分类正确,\(x_i\) 在间隔边界与分离超平面之间;若 \(a_i^*=C,\xi_i=1\),则 \(x_i\) 在分离超平面上;若 \(a_i^*=C,\xi_i > 1\),则 \(x_i\) 位于分离超平面误分一侧

核函数

之前讲到对原问题求偶问题,第二优点就是方便引入核函数。核函数的作用主要是为了解决线性不可分的数据。它的思想是通过隐式地将低维空间的数据隐式到高维空间,然后对数据进行线性分割,但是只需要通过低维非线性计算既可以实现。

引入核函数后的目标函数

\(\underset{\alpha}{min}\frac{1}{2}\sum_{i,j=1}^n \alpha_i\alpha_jy_iy_j\kappa(x_i^,x_j)-\sum_{i=1}^n\alpha_i\) \(s.t.\ \sum_{i=1}^n \alpha_i y_i=0,0 \leq \alpha_i\leq C,i=1,...,n\)

SMO (Sequential Minimal Optimization) 算法

SVM 推导过程:分类函数,最大化分类间隔,max1/||w||,min1/2||w||^2,凸二次规划,拉格朗日函数,转化为对偶问题,SMO算法,都为寻找一个最优解,一个最优分类平面

参考 (References)

  1. 支持向量机通俗导论
  2. 李航老师统计机器学习第2版