SVM家族简史
故事要从20世纪50年代提及,1957年,一个叫作感知器的模型被提出,html
1963年, Vapnik and Chervonenkis, 提出了最大间隔分类器,SVM诞生了。算法
1992年,Vapnik 将核方法用于SVM,使SVM能够处理线性不可分数据机器学习
1995年,Corts和Vapnik引入了软间隔,容许SVM犯一些错ide
最强版SVM出现了,它将各式武学集于一身,软间隔、核方法、……,函数
1996年,SVR(support vector regression)诞生,svm家族又添一员,回归任务也不在话下。至此,SVM家族成为机器学习界顶级家族之一。关于SVM家族其余成员,能够参阅这里。学习
SVM是什么?
- 是一种监督学习分类算法,能够用于分类/回归任务
- SVM目标:寻找最优分割超平面以最大化训练数据的间隔
什么是超平面?优化
- 在一维空间,超平面是一个点
- 二维空间,超平面是一条线
- 三维空间,超平面是一个平面
- 更多维空间,称为超平面
什么是最优分割超平面?spa
- 尽量远离每个类别的样本点的超平面
- 首先,能够正确的将训练数据分类
- 其次,拥有更好的泛化能力
那么如何找到这个最优超平面呢?根据间隔.net

什么是间隔?3d
给定一个超平面,超平面到最近的样本点之间的距离的2倍称为间隔。
在最初的SVM中,间隔是一个强定义,即硬间隔,间隔之间不容许存在任何样本。(当数据中存在噪音时,会产生一些问题,因此后来软间隔被引入)


显然,间隔B小于间隔A。可知:
- 若是超平面越接近样本点,对应的间隔越小
- 超平面离样本点越远,间隔越大
因此最优超平面对应最大间隔,SVM就是围绕着这个间隔展开,如何计算这个间隔?👇👇👇
感知机模型
感知机是什么?
- 是一种二元线性分类器
- 利用梯度降低法对损失函数进行极小化,求出可将训练数据进行线性划分的分离超平面
感知机如何找到分离超平面?
最大间隔

对感知机来讲,后三个超平面都是对应的解。显然最后一个是更优的解,可是感知机并不知道,SVM登场了。SVM说,既然间隔更大的超平面对应更优解,那我就计算间隔。
怎么计算间隔?
能够用点到直线距离,对超平面
如何找到最优超平面?
超平面和间隔是直接相关的。

- 若是有一个超平面,能够根据样本计算间隔
- 若是有两个超平面界定了一个间隔,咱们能够找到第三个超平面
因此 寻找最大间隔 = 寻找最优超平面
如何找到最大间隔?
step1: 须要有label的数据集
step2: 选择两个超平面划分数据,而且超平面之间没有数据
step3: 最大化两个超平面之间的距离(即为间隔)
提及来很简单,下面咱们从数学角度看如何求解这一问题。
-
step1:数据集
样本 \(x_i\),对应的label \(y_i\in \{-1,1\}\),含有 \(n\) 个样本的数据集表示为 \(D\)
$ D={(x_i,y_i)∣x_i∈R^p,y_i∈{−1,1}}$
-
step2:选择两个超平面
假设数据 \(D\)是线性可分的

对于分类超平面 \(\bold w \cdot \bold x+b=0\) , 记为\(H_0\),选择另外两个超平面\(H_1,H_2\) ,知足\(H_0\)到\(H_1\) 和 \(H_2\)等距,分别定义以下:
\[\bold w \cdot \bold x+b = \delta\\ \bold w \cdot \bold x+b = -\delta \]
可是 \(\delta\) 是多少?不肯定。为了简化问题,咱们假设 \(\delta=1\) ,为了确保两个超平面之间没有数据,必须知足如下约束:
\[\bold w \cdot \bold x_i+b≥1,\qquad if \ y_i =1\\ \bold w \cdot \bold x_i+b≤−1,\quad if \ y_i=-1 \tag{1} \]
将式(1) 两边同时乘以 \(y_i\):
\[\bold y_i(\bold w \cdot \bold x_i+b)\geq 1,\qquad for \ 1 \leq i \leq n\tag{2} \]
-
step3: 最大化两个超平面之间的距离
最大化两个超平面之间距离,怎么计算距离?怎么最大化距离?
如何计算两个超平面之间距离?

记 \(H_0,H_1\) 分别为 \(\bold w \cdot \bold x+b=1,\bold w \cdot \bold x+b=−1\)
假如 \(x_0\) 为线上的点,\(m\) 记为两线间距离。咱们的目标:求 $ m$

若是存在一个向量 \(\bold k\) , 知足 \(||\bold k||=m\) ,同时垂直于 \(H_1\),咱们就能在 \(H_1\) 找到对应的点 \(z_0\)。如今咱们看看怎么找这个点?
首先定义 \(\bold u = \frac{\bold w}{\bold{||w||}}\) 为 \(\bold w\) 的单位向量,单位向量模长等于1,即\(\bold{||u||}=1\)。对一个标量乘以一个向量获得的结果是向量,因此咱们将 \(m\) 和单位向量 \(\bold{||u||}\) 的乘积记为\(\bold k\)。
\[\bold k = m\bold u=m \frac{\bold w}{\bold{||w||}} \]
根据向量加法 \(\bold z_0 = \bold x_0 + \bold k\),如上图。咱们找到了\(\bold x_0\) 对应的 \(\bold {z_0}\)。如今
\[\bold w \cdot \bold{z_0}+b=1 \\ \bold w \cdot (\bold{x_0+k})+b=1 \\ \bold w \cdot (\bold{x_0}+m \frac{\bold w}{\bold{||w||}})+b=1 \\ \bold w \cdot \bold{x_0}+m \frac{\bold {w \cdot w}} {\bold{||w||}}+b=1 \\ \bold w \cdot \bold{x_0}+m \frac{\bold {||w||^2 }} {\bold{||w||}}+b=1 \\ \bold w \cdot \bold{x_0}+m {\bold{||w||}}+b=1 \\ \bold w \cdot \bold{x_0}+b=1-m {\bold{||w||}} \\ \]
由于 \(\bold w \cdot \bold x_0+b=−1\),因此
\[-1 = 1-m {\bold{||w||}} \\ m {\bold{||w||}} = 2 \\ m = \frac{2}{\bold{||w||}} \tag{3} \]
咱们计算出了 \(m\) !!!两个超平面之间的距离。
最大化间隔
上面咱们只作了一件事,计算间隔。如今咱们看看怎么最大化它
显然上述问题等价于:
\[minmize \ \bold{||w||} \\s.t.\quad y_i(\bold{w \cdot x_i}+b) \geq 1 \quad for \ i=1,2,\cdots,n\tag{4} \]
求解上述问题,获得最优解,咱们就找到了最优超平面。
最大间隔的数学解
再探问题(4),这是一个带不等式约束的最优化问题,并且是 \(n\) 个约束(\(n\) 个点都须要知足)。这个问题很头疼,好吧。咱们先偷个懒,若是是无约束问题怎么求。
-
无约束问题最小化
对无约束问题,表示为 \(f(\bold w)=\bold{||w||}\),咱们如何求函数 \(f\) 的局部极小值?求导。
若是\(f\) 二阶可导,在点 \(\bold x^*\) 知足 \(\partial f(\bold x∗)=0, \partial^2f(\bold x^*)>0\),则在 \(\bold {x}^*\) 处函数取极小值。注意:\(\bold x\) 是一个向量,导数为0,对应每一个维度皆为0。

对于无约束最小值为0,等式约束下最小值为4。
-
等式约束
-
单个约束
假若有等式约束问题以下
\[\begin{array}{ll} \underset{x}{\operatorname{minimize}} & f(x) \\ \text { subject to } & g(x)=0 \end{array} \]
上面的问题至关于定义了一个可行域,使得解只能在可行域内。上图中表示可行域只有一个点,所以问题很简单。
-
多个约束
对于带有多个等式约束的问题,全部的约束必须都知足
\[\begin{array}{cl}\underset{\mathbf{x}}{\operatorname{minimize}} & f(\mathbf{x}) \\\text { subject to } & g(\bold x)=0 \\& h(\mathbf{x})=0\end{array} \]
上述等式约束问题怎么解?猜猜这是谁🙃

拉格朗日乘法
In mathematical optimization, the method of Lagrange multipliers is a strategy for finding the local maxima and minima of a function subject to equality constraints. (Wikipedia)
三步法:
- 对每一个约束乘以拉格朗日乘子,构建拉格朗日函数 \(L\)
- 求拉格朗日函数梯度
- 令梯度 \(\nabla L(\mathbf{x}, \alpha)=0\)
为何拉格朗日乘法能够解等式约束问题?咱们来看看
\[\begin{array}{ll}\underset{x, y}{\operatorname{minimize}} & f(x, y)=x^{2}+y^{2} \\\text { subject to } & g_{i}(x, y)=x+y-1=0\end{array} \]

根据目标函数和约束函数,咱们能够画出等高线

将两张图合并到一块儿会发生什么(黑色箭头表示目标函数梯度方向,白色箭头表示约束函数梯度方向)

回到约束函数 \(g(x,y)=x+y-1=0\),咱们找一找它在哪,当\(x=0\) 时 \(y=1\),当 \(y=0\) 时\(x=1\),找到了,在这里

发现什么了?目标函数在约束函数处的梯度方向相同!它们相切了,并且只有一个点处的梯度方向彻底相同,这个点就是目标函数在约束下的的极小值。
why?假如你处在上图最上面的箭头位置(值为 \(v\)),在约束条件下,只能在蓝线上移动,你只能尝试向左或者向右找到更小的值。ok,先尝试向左走,发现值变大了(梯度方向也是左,梯度指向函数上升最快的方向),因此应该向右走,直到走到切点处。此时,发现不管向那个方向走,值都会变大,所以,你找到了极小值。
-
数学表示
如何表达在极小值处,目标函数和约束函数梯度方向相同
\[\nabla f(x, y)=\lambda \nabla g(x, y) \]
乘 \(\lambda\) 干啥?由于他们只是梯度方向相同,大小不必定相等。 \(\lambda\) 称为拉格朗日乘子。
(注意 \(\lambda\) 若是是负数,两个梯度方向变为平行,能够同时求极大极小值,见例1.)
如今咱们知道拉格朗日乘法为何能够求等式约束问题,那怎么求?
-
找到知足\(\nabla f(x, y)=\lambda \nabla g(x, y)\) 的 \((x,y)\)
显然,\(\nabla f(x, y) - \lambda \nabla g(x, y)=0\),定义函数 \(L\) 有:
\[L(x,y,\lambda ) = f(x,y)-\lambda g(x,y) \]
求导:
\[\nabla L(x, y, \lambda)=\nabla f(x, y)-\lambda \nabla g(x, y) \]
当导数为0时就找到了对应 \(f\) 和 \(g\) 梯度方向平行的点。
回到定义,拉格朗日乘法只能解决等式约束问题,那对下面的不等式约束问题怎么办?
-
不等式约束
\[\begin{array}{cl}\underset{\mathbf{x}}{\operatorname{minimize}} & f(\mathbf{x}) \\\text { subject to } & g(\bold x) \geq0\end{array} \]
Don't worry! 总有办法🙃
对不等式约束问题,一样可使用拉格朗日乘数,知足以下条件:
\[\begin{aligned}&g(x) \geq 0 \Rightarrow \lambda \geq 0\\&g(x) \leq 0 \Rightarrow \lambda \leq 0\\&g(x)=0 \Rightarrow \lambda \text { is unconstrained }\end{aligned} \]
为何呢?由于可行域。看图就知道了,在等式约束部分\(x+y-1=0\) 时,可行域在直线上;当\(x+y-1 \geq 0\) 时,可行域在右上角,\(\lambda\) 大于0表示梯度方向指向可行域;同理可知小于等于的状况。而后和等式约束求解过程同样就能够了。关于拉格朗日对约束问题例子,推荐阅读[3].

咱们在来看看对偶问题。
-
对偶问题
In mathematical optimization theory, duality means that optimization problems may be viewed from either of two perspectives, the primal problem or the dual problem (the duality principle). The solution to the dual problem provides a lower bound to the solution of the primal (minimization) problem. (Wikipedia)
“对偶问题是原问题的下界”,下界是啥?😖
给定一个部分有序集合 \(R\) ,若是存在一个元素小于或等于 \(R\) 的子集的每一个元素,该元素就能够称为下界。百度百科
举个栗子:
给定 \(R\) 的一个子集:\(S = \{2,4,8,12\}\)
1. 1 小于 $S$ 中每一个元素, 1 能够是一个下界
2. 2 小于等于$S$ 中每一个元素, 2 也能够是一个下界
因为 2 大于其余的下界,被称为 下确界 (最大下界)。下界有无穷个,但最大下界是惟一的。
回到对偶问题
若是原问题是一个极小问题,对偶问题能够将其转化为求极大问题。极大问题的解就对应原极小问题的下界。有点不解其意,继续看👇

上图原问题是一个极小问题, \(P\) 是极小点。对偶问题是一个极大问题, \(D\) 是极大点。很明显, \(D\) 是一个下界。 \(P-D\) 被称为对偶间隔,若是 \(P-D>0\) 对应弱对偶性。若是 \(P-D=0\) 对应强对偶性。

回到SVM最优化问题
为了求解方便,将等式(4)改写为凸二次型优化问题(convex quadratic optimization problem),
\[\begin{aligned}&\underset{\mathbf{w}, b}{\operatorname{minimize}} \frac{1}{2}\|\mathbf{w}\|^{2}\\&\text { subject to } y_{i}\left(\mathbf{w} \cdot \mathbf{x}_{i}\right)+b-1 \geq 0, \quad i=1, \ldots, m\end{aligned}\tag{5} \]
根据拉格朗日乘数法:
\[\mathcal{L}(\mathbf{w}, b, \alpha)= \frac{1}{2}\|\mathbf{w}\|^{2}-\sum_{i=1}^{m} \alpha_{i}\left[y_{i}\left(\mathbf{w} \cdot \mathbf{x}_{i}+b\right)-1\right]\\= \frac{1}{2}\mathbf{w}\mathbf{w}-\sum_{i=1}^{m} \alpha_{i}\left[y_{i}\left(\mathbf{w} \cdot \mathbf{x}_{i}+b\right)-1\right]\tag{6} \]
能够转化为:
\[\begin{aligned}&\min _{\mathbf{w}, b} \max _{\alpha} \mathcal{L}(\mathbf{w}, b, \alpha)\\&\text { subject to } \quad \alpha_{i} \geq 0, \quad i=1, \ldots, m\end{aligned} \]
为何原问题变成极大极小问题了?这里有多个解释,直观来看,咱们要$ min \ \mathcal{L}(\mathbf{w}, b, \alpha)$ ,因为后一项 \(\alpha >0,y_{i}\left(\mathbf{w} \cdot \mathbf{x}_{i}+b\right)-1 \geq0\),正数减正数,后一项越大对应总体值越小。
求解上述极大极小问题,求导:
\[\nabla \bold w L = \bold w- \sum_{i=1}^{m} \alpha_{i}y_{i}\mathbf{x}_{i}=0\\\frac{\partial L} {\partial b} = - \sum_{i=1}^{m} \alpha_{i}y_{i}=0\tag{7} \]
将(7)带回到(6)
\[\begin{aligned}&\frac{1}{2}\sum_{i=1}^{m} \alpha_{i}y_{i}\mathbf{x}_{i}\sum_{j=1}^{m} \alpha_{i}y_{i}\mathbf{x}_{i}-\sum_{i=1}^{m} \alpha_{i}\left[y_{i}\left((\sum_{j=1}^{m} \alpha_{i}y_{i}\mathbf{x}_{i}) \cdot \mathbf{x}_{i}+b\right)-1\right]\\&=\frac{1}{2}\sum_{i=1}^{m}\sum_{j=1}^{m}\alpha_{i}\alpha_jy_{i}y_j\mathbf{x}_{i}\mathbf{x}_{j}-\sum_{i=1}^{m}\sum_{j=1}^{m}\alpha_{i}\alpha_jy_{i}y_j\mathbf{x}_{i}\mathbf{x}_{j}-b\sum_{i=1}^{m}\alpha_{i}y_{i}+\sum_{i=1}^{m}\alpha_{i}\\&=\sum_{i=1}^{m}\alpha_{i}-\frac{1}{2}\sum_{i=1}^{m}\sum_{j=1}^{m}\alpha_{i}\alpha_jy_{i}y_j\mathbf{x}_{i}\mathbf{x}_{j}-b\sum_{i=1}^{m}\alpha_{i}y_{i}\\&=\sum_{i=1}^{m}\alpha_{i}-\frac{1}{2}\sum_{i=1}^{m}\sum_{j=1}^{m}\alpha_{i}\alpha_jy_{i}y_j\mathbf{x}_{i}\mathbf{x}_{j}\end{aligned} \]
只剩下 \(\alpha\) 了, 根据Wolfe dual problem:
\[\underset{\alpha}{maxmize}=\sum_{i=1}^{m}\alpha_{i}-\frac{1}{2}\sum_{i=1}^{m}\sum_{j=1}^{m}\alpha_{i}\alpha_jy_{i}y_j\mathbf{x}_{i}\mathbf{x}_{j}\\s.t.\ \alpha_i \geq0\\\sum_{i=1}^{m} \alpha_{i}y_{i}=0\tag{8} \]
The KKT conditions are first-order necessary conditions for a solution of an optimization problem to be optimal
\[\nabla \bold w L = \bold w- \sum_{i=1}^{m} \alpha_{i}y_{i}\mathbf{x}_{i}=0\\\frac{\partial L} {\partial b} = - \sum_{i=1}^{m} \alpha_{i}y_{i}=0\\y_{i}\left(\mathbf{w} \cdot \mathbf{x}_{i}\right)+b-1 \geq 0, \quad i=1, \ldots, m\\\alpha_i \geq0\\\alpha_i [y_{i}\left(\mathbf{w} \cdot \mathbf{x}_{i}\right)+b-1]=0 \]
回到式(8),同乘 -1 转化为极小问题
\[\underset{\alpha}{minmize}=\frac{1}{2}\sum_{i=1}^{m}\sum_{j=1}^{m}\alpha_{i}\alpha_jy_{i}y_j\mathbf{x}_{i}\mathbf{x}_{j} - \sum_{i=1}^{m}\alpha_{i}\\s.t.\ \alpha_i \leq0\\\sum_{i=1}^{m} \alpha_{i}y_{i}=0\tag{9} \]
软间隔SVM
因为原始SVM只能处理线性可分数据,那若是存在异常点会怎么样?咱们来看看

图中出现了一个蓝色的异常点,使得本来线性可分问题变得难以解决。软间隔出场了,1995年,Vapnik and Cortes 在原始SVM的基础上引入了松弛变量,容许模型“犯错”。在原约束的基础上增长一个变量 \(\xi\)
\[y_i(\bold{w \cdot x_i}+b) \geq1\\ y_i(\bold{w \cdot x_i}+b) \geq1-\xi_i\\ \]
咱们来看看不一样的 \(\xi\) 对应的状况
- \(0\leq \xi \leq 1\) ,样本在间隔之间,依然处于正确侧,称为间隔冲突
- \(1 \leq \xi\) ,样本被误分类
- \(\xi\) 必须大于0,不然就没有存在的意义了;若是每一个样本的 \(\xi\) 很是大,约束条件必然知足,这显然不是咱们但愿的。加入正则化 \(C\)

软间隔形式以下:
\[\underset{\bold w,b,\xi}{minmize}\quad \frac{1}{2}||\bold w||^2+C\sum ^m _i\xi_i\\ s.t. \quad y_i(\bold{w \cdot x_i}+b) \geq1-\xi_i\\ \xi_i \geq0 \quad i=1,2,...,m \]
套用拉格朗日乘数法:
\[\mathcal{L}(\mathbf{w}, b, \xi,\alpha,\beta)= \frac{1}{2}\|\mathbf{w}\|^{2} +C\sum^m_i\xi_i- \sum_{i=1}^{m} \alpha_{i}\left[y_{i}\left(\mathbf{w} \cdot \mathbf{x}_{i}+b\right)-1+\xi_i\right]-\sum^m_i\beta_i\xi_i\\\tag{10} \]
对 \(\bold w,b,\xi\) 分别求导后带入上式,见式(8)\(\frac{\partial L }{\partial \xi} = C-\sum^m_i\alpha_i-\sum^m_i\beta_i=0\),因为\(\beta\geq0,C-\alpha_i\geq0\) 故 $ 0\leq \alpha_i \leq C$。
获得
\[\underset{\alpha}{maxmize}=\sum_{i=1}^{m}\alpha_{i}-\frac{1}{2}\sum_{i=1}^{m}\sum_{j=1}^{m}\alpha_{i}\alpha_jy_{i}y_j\mathbf{x}_{i}\mathbf{x}_{j}\\s.t.\ C\geq \alpha_i \geq0\\\sum_{i=1}^{m} \alpha_{i}y_{i}=0\tag{11} \]
发现了什么,式(11)和式(9)的目标函数没有变化。
核方法
如何处理线性不可分数据?核方法告诉咱们,在低维空间不可分的数据映射到高维空间就可分了。
举个栗子:对二维向量\((x_1,x_2)\),使用多项式核 \(\phi:R^2 \rightarrow R^3\) 映射获得
\[\phi (x_1,x_2) = (x_1^2,\sqrt2x_1x_2,x_2^2) \]
核函数就是在另外一个空间进行运算返回点积。引入SVM目标函数
\[\underset{\alpha}{maxmize}=\sum_{i=1}^{m}\alpha_{i}-\frac{1}{2}\sum_{i=1}^{m}\sum_{j=1}^{m}\alpha_{i}\alpha_jy_{i}y_jK(\mathbf{x}_{i},\mathbf{x}_{j})\\s.t.\ C\geq \alpha_i \geq0\\\sum_{i=1}^{m} \alpha_{i}y_{i}=0\tag{12} \]
下面就能够用SMO算法求解获得了。
欢迎留言🙃
references:
[1] http://www.robots.ox.ac.uk/~az/lectures/ml/lect2.pdf
[2] https://www.svm-tutorial.com/
[3] http://www.engr.mun.ca/~baxter/Publications/LagrangeForSVMs.pdf
[4] https://blog.csdn.net/v_JULY_v/article/details/7624837。