





























支持向量机 (support vector machine,SVM),是一种常用的判别方法,本文概述其来源和思想 。
支持向量机是在所有知名的数据挖掘算法中最健壮,最准确的方法之一,它属于二分类算法,可以支持线性和非线性的分类。发展到今天,SVM已经可以支持多分类了。
线性分类
给定一组训练实例,每个训练实例被标记为属于两个类别中的一个或另一个,SVM训练算法创建一个将新的实例分配给两个类别之一的模型,使其成为非概率二元线性分类器。SVM模型是将实例表示为空间中的点,这样映射就使得单独类别的实例被尽可能宽的明显的间隔分开。然后,将新的实例映射到同一空间,并基于他们落在间隔的哪一侧来预测所属类别。
非线性分类
除了进行线性分类之外,SVM还可以使用所谓的核技巧有效的进行非线性分类,将其输入隐式映射到高维特征空间中。当数据未被标记时,不能进行监督式学习,需要用非监督式学习,它会尝试找出数据到簇的自然聚类,并将新数据映射到这些已形成的簇。将支持向量机改进的聚类算法被称为支持向量聚类,当数据未被标记或者仅一些数据被标记时,支持向量聚类经常在工业应用中用作分类步骤的预处理。

$$
w^{T} x+b=0
$$
Logistic 回归的目的是从特征学习出一个二分类模型,而这个模型是将特征的线性组合作为自变量,由于自变量的取值范围是负无穷到正无穷。
因此,使用 Logistic 函数(或者也称为 Sigmoid 函数)将自变量映射到 $(0, 1)$ 上,映射后的值被认为是属于 $y=1$ 的概率。
假设函数如下:
$$
h _ { \theta } ( x ) = g ( \theta ^ { T } x ) = \frac { 1 } { 1 + e ^ { - \theta ^ { \prime } x } }
$$
$$
g ( z ) = \frac { 1 } { 1 + e ^ { - z } }
$$

$$ \begin{aligned} P(y=1 \mid x ; \theta) &=h_{\theta}(x) \\ P(y=0 \mid x ; \theta) &=1-h_{\theta}(x) \end{aligned} $$
$$ \theta^T{x} =\theta_{0}+\theta_{1} x_{1}+\theta_{2} x_{2}+\cdots+\theta_{n} x_{n} $$
$$
\theta^{T} x=w^{T} x+\mathrm{b}
$$
$$
h_{\theta}(\mathrm{x})=g\left(\theta^{T} x\right)=\mathrm{g}\left(w^{T} x+\mathrm{b}\right)
$$
对于逻辑回归我们先说到这里,下面看线性分类和逻辑回归的比较。
SVM和Logistic虽然说都是寻找一个线性分类界限,但出发点不同。SVM是以训练集两个类的边界(支持向量)来考虑划分,而Logistic是从训练集的全局来考虑划分。这也就是为什么Logistic受噪声和离群点的影响比较大。当出现一个离群点时,Logistic划定的边界很有可能会改变。而SVM这边划分的边界却可能丝毫不动(因为离群点并不影响我支持向量)。
什么是线性可分呢?如果一个线性函数能够将样本分开,称这些数据样本是线性可分的。那么什么是线性函数呢?在二维空间中就是一条直线,在三维空间中就是一个平面,依次类推,如果不考虑空位维度,这样的线性函数就统称为超平面。我们一般所说的线性可分支持向量机就对应着能将数据正确划分并且间隔最大的直线。
$$
\forall i . y_{i}\left(\boldsymbol{w}^{\top} \boldsymbol{x}_{i}+b\right)>0
$$
即:线性二分类模型希望在特征空间找到一个划分超平面,将属于不同标记的样本分开。

$$
f(x)=w^{T} x+b
$$

线性可分支持向量机(SVM)也是一种线性二分类模型,也需要找到满足二分类目标约束的划分超平面,即 $(w, b)$,由于能将样本分开的超平面可能有很多,SVM进一步希望找到离个样本都比较远的划分超平面。
当面对样本的随机扰动时,离每个样本都比较远的划分超平面对扰动的容忍能力比较强,即不容易因为样本的随机扰动使得样本穿越到划分超平面的另外一侧而产生分类错误。因此这样的划分超平面对样本比较稳健,不容易过拟合。另一方面,离各样本都比较远的划分超平面不仅可以把正负样本都分开,还可以比较大的确信度将所有样本分开,包括难分的样本,即离划分超平面近的样本。
分类学习最基本的思想就是基于训练集 $D$ 在样本空间中找到一个划分超平面,将不同类别的样本分开,但是能将训练样本分开的划分超平面可能有很多,所有我们应该去找位于两类训练样本“正中间”的划分超平面。因为该划分超平面对训练样本局部扰动的“容忍”性最好,例如,由于训练集的局限性或者噪声的因素,训练集外的样本可能比正中间的训练样本更接近于两个类的分割界,这将使得许多划分超平面出现错误。而正中间的超平面影响最小,所以这个划分超平面所产生的结果是鲁棒的。
所以问题就变为哪一个分类超平面是最优的?而要算最优超平面,肯定先算出间隔,只有间隔最大化,才能找出最优超平面,所以下面学习函数间隔。
间隔(margin):每个训练观测点到超平面距离中的最小值。
我们的划分超平面可以用如下线性方程来描述:
$$
w^{T} x+b=0
$$
$$ \begin{array}{ll}w^{T} x_{i}+b \geq+1 & y_{i}=+1 \\ w^{T} x_{i}+b \leq-1 & y_{i}=-1\end{array} $$
$$ y_{i}\left(w^{T} x_{i}+b\right) \geq+1 $$
$$ \hat{\gamma}=y\left(w^{T} x+b\right)=y f(x) $$
$$ \hat{\gamma}=\min \hat{\gamma} _i(i=1, \ldots n) $$

$$
x=x_{0}+\gamma \frac{w}{|w|}
$$
$$ \gamma=\frac{w^{T} x+b}{\|w\|}=\frac{f(x)}{\|w\|} $$
$$
\tilde{\gamma}=y \gamma=\frac{\hat{\gamma}}{|w|}
$$

$$ \begin{aligned} g(X) &=w \cdot X+b \\ &=w \cdot\left(X^{\prime}+\lambda w\right)+b \\ &=w \cdot X^{\prime}+b+\lambda w \cdot w \\ &=0+\lambda w \cdot w=\lambda w \cdot w \end{aligned} $$
$$ \left\|X-X^{\prime}\right\|=\|\lambda w\|=\frac{|g(X)|}{w \cdot w} \cdot\|w\|=\frac{|g(X)|}{\|w\|} $$
最大间隔超平面:间隔最大的超平面,即使得训练观测到分割超平面的间隔达到最大。
支持向量:样本点中与分离超平面距离最近的样本点的实例
最大间隔超平面的选取只与支持向量有关。
对一个数据点进行分类,当超平面离数据点的“间隔”越大,分类的确信度(confidence)也越大。所以,为了使得分类的确信度尽量高,需要让所选择的超平面能够最大化这个“间隔”值。这个间隔就是下面的 Gap 的一半。

$$ \begin{array}{lc} & y_{i}\left(w^{T} x_{i}+b\right)=\hat{\gamma}_{i} \geq \hat{\gamma}, \quad i=1, \ldots, n \\ \max _{w, b} & \gamma \\ \text { s.t. } & y_{i}\left(\frac{w^{T}}{\|w\|} \cdot x_{i}+\frac{b}{\|w\|}\right) \geq \gamma, \quad i=1,2, \ldots N\end{array} $$
$$
\tilde{\gamma}=y \gamma=\frac{\hat{\gamma}}{|w|}
$$
$$
y_{i}\left(w^{T} x_{i}+b\right) \geq1,i=1,…,n
$$
$$
\max \frac{1}{|w|}, \quad s.t. , y_{i}\left(w^{T} x_{i}+b\right) \geq 1, i=1, \ldots, n
$$
相当于在相应的约束条件下,最大化这个 $1 / ||w||$ 值,而 $1 / ||w||$ 便是几何间隔 $ \tilde{\gamma}$。
如下图所示,中间的实线便是寻找到的最优超平面(optimal Hyper Plane),其到两条虚线边界的距离相等,这个距离便是几何间隔 $\tilde{\gamma}$,两条虚线间隔边界之间的距离等于 $2\tilde{\gamma}$ ,而虚线间隔边界上的点则是支持向量。
由于这些支持向量刚好在虚线间隔边界上,所以他们满足 $y( w^Tx + b) = 1$,而对于所有不是支持向量的点,则显然有 $y( w^Tx + b) > 1$。

$$ \begin{array}{l} \min _{w, b} \quad \frac{1}{2}\|w\|^{2} \\ s.t. \quad y_{i}\left(w^{T} \cdot x_{i}+b\right)-1 \geq 0, \quad i=1,2, \ldots N \end{array} $$
$$
f(x)=\operatorname{sign}\left(w^{T} x+b\right)
$$
支持向量机是一种二分类模型,他的目的是寻找一个超平面对样本进行分割,分割的原则是间隔最大化,最终转换为一个凸二次规划问题来求解,而由简至繁的模型包括:
当训练样本线性可分时,通过硬间隔最大化,学习一个线性可分支持向量机
当训练样本近似线性可分时,通过软间隔最大化,学习一个线性支持向量机
当训练样本线性不可分时,通过核技巧和软间隔最大化,学习一个非线性支持向量机
$$ \max \frac{1}{\|w\|} \quad s.t., y_{i}\left(w^{T} x_{i}+b\right) \geq 1, i=1, \ldots, n $$
$$
\min \frac{1}{2}|w|^{2} \quad s.t., y_{i}\left(w^{T} x_{i}+b\right) \geq 1, i=1, \ldots, n
$$
现在的目标函数是二次的,约束条件是线性的,所以它是一个凸二次规划问题。
此外,由于这个问题的特殊结构,还可以通过拉格朗日对偶性(Lagrange Duality)变换到对偶变量(dual variable)的优化问题,即通过求解与原问题等价的对偶问题(dual problem)得到原始问题的最优解,这就是线性可分条件下支持向量机的对偶算法。
这样做的优点在于:
$$ \mathcal{L}(w, b, \alpha)=\frac{1}{2}\|w\|^{2}-\sum_{i=1}^{n} \alpha_{i}\left(y_{i}\left(w^{T} x_{i}+b\right)-1\right) $$
$$ \theta(w)=\max _{\alpha_{i} \geq 0} \mathcal{L}(w, b, \alpha) $$
$$
\theta(w)=\frac{1}{2}|w|^{2}
$$
$$ \min _{w, b} \theta(w)=\min _{w, b} \max _{\alpha_{i} \geq 0} \mathcal{L}(w, b, \alpha)=p^{*} $$
$$
\max _{\alpha _i \geq 0} \min _{w, b} \mathcal{L}(w, b, \alpha)=d^{*}
$$
$$ \begin{array}{l} &\min . f(\mathbf{x}) \\ &s.t. & h_{j}(\mathbf{x})=0, j=1, \ldots p \\&& g_{k}(\mathbf{x}) \leq 0, k=1, \ldots, q \\ &&\mathbf{x} \in \mathbf{X} \subset \mathfrak{R}^{n} \end{array} $$
$$ \begin{array}{c} h_{j}\left(\mathbf{x}_{*}\right)=0, j=1, \ldots, p, g_{k}\left(\mathbf{x}_{*}\right) \leq 0, k=1, \ldots, q \\ \nabla f\left(\mathbf{x}_{.}\right)+\sum_{j=1}^{p} \lambda_{j} \nabla h_{j}\left(\mathbf{x}_{*}\right)+\sum_{k=1}^{q} \mu_{k} \nabla g_{k}\left(\mathbf{x}_{*}\right)=\mathbf{0} \\ \lambda_{j} \neq 0, \mu_{k} \geq 0, \mu_{k} g_{k}\left(\mathbf{x}_{*}\right)=0 \end{array} $$
要让 $ L(w, b, a)$ 关于 $w$ 和 $b$ 最小化,
求 $\min L$ 对 $α$ 的极大
利用SMO算法求解对偶问题中的拉格朗日乘子
$$ \begin{array}{c} \frac{\partial \mathcal{L}}{\partial w}=0 \Rightarrow w=\sum_{i=1}^{n} \alpha_{i} y_{i} x_{i} \\ \frac{\partial \mathcal{L}}{\partial b}=0 \Rightarrow \sum_{i=1}^{n} \alpha_{i} y_{i}=0 \end{array} $$
将求偏导数的结果,代入下式:
$$ \mathcal{L}(w, b, \alpha)=\frac{1}{2}\|w\|^{2}-\sum_{i=1}^{n} \alpha_{i}\left(y_{i}\left(w^{T} x_{i}+b\right)-1\right) $$
得到:
$$ \begin{aligned} \mathcal{L}(w, b, \alpha) &=\frac{1}{2} \sum_{i, j=1}^{n} \alpha_{i} \alpha_{j} y_{i} y_{j} x_{i}^{T} x_{j}-\sum_{i, j=1}^{n} \alpha_{i} \alpha_{j} y_{i} y_{j} x_{i}^{T} x_{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_{j} y_{i} y_{j} x_{i}^{T} x_{j} \end{aligned} $$
推导过程如下:
$$ \begin{aligned} \mathcal{L}(\mathrm{w}, \mathrm{b}, \alpha) &=\frac{1}{2}\|w\|^{2}-\sum_{i=1}^{m} \alpha_{i}\left[y^{(i)}\left(w^{T} x^{(i)}+b\right)-1\right] \\ &=\frac{1}{2} \mathrm{w}^{T} \mathrm{w}-\sum_{i=1}^{m} \alpha_{i} y^{(i)} w^{T} x^{(i)}-\sum_{i=1}^{m} \alpha_{i} y^{(i)} b+\sum_{i=1}^{m} \alpha_{i} \\ &=\frac{1}{2} \mathrm{w}^{T} \sum_{i=1}^{m} \alpha_{i} y^{(i)} x^{(i)}-\sum_{i=1}^{m} \alpha_{i} y^{(i)} w^{T} x^{(i)}-\sum_{i=1}^{m} \alpha_{i} y^{(i)} b+\sum_{i=1}^{m} \alpha_{i} \\ &=\frac{1}{2} \mathrm{w}^{T} \sum_{i=1}^{m} \alpha_{i} y^{(i)} x^{(i)}-w^{T} \sum_{i=1}^{m} \alpha_{i} y^{(i)} x^{(i)}-\sum_{i=1}^{m} \alpha_{i} y^{(i)} b+\sum_{i=1}^{m} \alpha_{i} \\ &=-\frac{1}{2} \mathrm{w}^{T} \sum_{i=1}^{m} \alpha_{i} y^{(i)} x^{(i)}-\sum_{i=1}^{m} \alpha_{i} y^{(i)} b+\sum_{i=1}^{m} \alpha_{i}\\ & =-\frac{1}{2} \mathrm{w}^{T} \sum_{i=1}^{m} \alpha_{i} y^{(i)} x^{(i)}-b \sum_{i=1}^{m} \alpha_{i} y^{(i)}+\sum_{i=1}^{m} \alpha_{i} \\ & =-\frac{1}{2}\left(\sum_{i=1}^{m} \alpha_{i} y^{(i)} x^{(i)}\right)^{T} \sum_{i=1}^{m} \alpha_{i} y^{(i)} x^{(i)}-b \sum_{i=1}^{m} \alpha_{i} y^{(i)}+\sum_{i=1}^{m} \alpha_{i} \\ & =-\frac{1}{2} \sum_{i=1}^{m} \alpha_{i} y^{(i)}\left(x^{(i)}\right)^{T} \sum_{i=1}^{m} \alpha_{i} y^{(i)} x^{(i)}-b \sum_{i=1}^{m} \alpha_{i} y^{(i)}+\sum_{i=1}^{m} \alpha_{i} \\ & =-\frac{1}{2} \sum_{i=1, j=1}^{m} \alpha_{i} y^{(i)}\left(x^{(i)}\right)^{T} \alpha_{j} y^{(j)} x^{(j)}-b \sum_{i=1}^{m} \alpha_{i} y^{(i)}+\sum_{i=1}^{m} \alpha_{i} \end{aligned} $$
最后,得到:
$$ \begin{aligned} \mathcal{L}(w, b, \alpha) &=\frac{1}{2} \sum_{i, j=1}^{n} \alpha_{i} \alpha_{j} y_{i} y_{j} x_{i}^{T} x_{j}-\sum_{i, j=1}^{n} \alpha_{i} \alpha_{j} y_{i} y_{j} x_{i}^{T} x_{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_{j} y_{i} y_{j} x_{i}^{T} x_{j} \end{aligned} $$
此时的拉格朗日函数只包含变量 $α_i$,求解 $\alpha$ 后便能求出 $w$ 和 $b$,由此可见,上面提出来的核心问题:分类函数 $f(x) = w^Tx + b$ 也可以轻而易举的求出来。
$$ \begin{array}{c} \max _{\alpha} \sum_{i=1}^{n} \alpha_{i}-\frac{1}{2} \sum_{i, j=1}^{n} \alpha_{i} \alpha_{j} y_{i} y_{j} x_{i} x_{j}\\ s.t., \alpha_{i} \geq 0, i=1, \ldots, n \\ \sum_{i=1}^{n} \alpha_{i} y_{i}=0 \end{array} $$
这样,求出了 $α_i$ ,根据上面对 $w$ 求偏导的式子,我们可以求出 $w$。然后通过下面式子,可以求出 $b$,最终得到分离超平面和分类决策函数:
$$ \begin{array}{c} w^{*}=\sum_{i=1}^{N} \alpha_{i}^{*} y_{i} x_{i} \\ b^{*}=y_{j}-\sum_{i=1}^{N} \alpha_{i}^{*} y_{i}\left(x_{i} \cdot x_{j}\right) \end{array} $$
我们需要构造并求解对偶约束最优化问题
$$ \begin{array}{ll}\min _{\alpha} & \frac{1}{2} \sum_{i=1}^{N} \sum_{j=1}^{N} \alpha_{i} \alpha_{j} y_{i} y_{j}\left(x_{i}, x_{j}\right)-\sum_{i=1}^{N} \alpha_{i} \\ \text { s.t. } & \sum_{i=1}^{N} \alpha_{i} y_{i}=0 \\ & \alpha_{i} \geq 0, i=1,2, \ldots, N\end{array} $$
上述式子要解决的是在参数 ${α_1, α_2, α_3,…α_n} $上求最大值 $W$ 的问题,至于 $x(i)$ 和 $y(i) $ 都是已知数。
梳理上述拉格朗日求解过程
$$ \begin{array}{c} \min _{x} f_{0}(x) \\ s.t. f_{i}(x) \leq 0, i=1, \ldots m \\ h_{i}(x)=0, i=1, \ldots q \end{array} $$
$$
\min L(x, \lambda, v)=f_{0}(x)+\sum_{i=1}^{m} \lambda_{i} f_{i}(x)+\sum_{i=1}^{q} v_{i} h_{i}(x)
$$
$$ \begin{array}{c} L(w, b, \alpha)=\frac{1}{2}\|w\|^{2}-\sum_{i=1}^{n} \alpha_{i}\left(y_{i}\left(w^{T} \cdot \Phi\left(x_{i}\right)+b\right)-1\right) \\ s.t. y_{i}\left(w^{T} \cdot \Phi\left(x_{i}\right)+b\right) \geq 1 \end{array} $$
$$
\min _{w, b} \max _{\alpha} L(w, b, \alpha) \rightarrow \max _{\alpha} \min _{w, b} L(w, b, \alpha)
$$
$$ \begin{array}{l} \frac{\partial L}{\partial w}=0 \Rightarrow w=\sum_{i=1}^{n} \alpha_{i} y_{i} \Phi\left(x_{n}\right) \\ \frac{\partial L}{\partial b}=0 \Rightarrow 0=\sum_{i=1}^{n} \alpha_{i} y_{i} \end{array} $$
$$ \begin{array}{l} &&w=\sum_{i=1}^{n} \alpha_{i} y_{i} \Phi\left(x_{n}\right) \quad 0=\sum_{i=1}^{n} \alpha_{i} y_{i} \\ L(w, b, \alpha)&=&\frac{1}{2} w^{T} w-w^{T} \sum_{i=1}^{n} \alpha_{i} y_{i} \Phi\left(x_{i}\right)-b \sum_{i=1}^{n} \alpha_{i} y_{i}+\sum_{i=1}^{n} \alpha_{i} \\ & =&\sum_{i=1}^{n} \alpha_{i}-\frac{1}{2}\left(\sum_{i=1}^{n} \alpha_{i} y_{i} \Phi\left(x_{i}\right)\right)^{T} \sum_{i=1}^{n} \alpha_{i} y_{i} \Phi\left(x_{i}\right) \\ &=&\sum_{i=1}^{n} \alpha_{i}-\frac{1}{2} \sum_{i=1, j=1}^{n} \alpha_{i} \alpha_{j} y_{i} y_{j} \Phi^{T}\left(x_{i}\right) \Phi\left(x_{j}\right) \end{array} $$
$$ \begin{array}{l} \max _{\alpha} \sum_{i=1}^{n} \alpha_{i}-\frac{1}{2} \sum_{i=1}^{n} \sum_{j=1}^{n} \alpha_{i} \alpha_{j} y_{i} y_{j}\left(\Phi\left(x_{i}\right) \cdot \Phi\left(x_{j}\right)\right) \\ s.t. \sum_{i=1}^{n} \alpha_{i} y_{i}=0 , \alpha_{i} \geq 0 \end{array} $$
$$ \begin{array}{l} \min _{\alpha} \frac{1}{2} \sum_{i=1}^{n} \sum_{j=1}^{n} \alpha_{i} \alpha_{j} y_{i} y_{j}\left(\Phi\left(x_{i}\right) \cdot \Phi\left(x_{j}\right)\right)-\sum_{i=1}^{n} \alpha_{i}\\ s.t. \sum_{i=1}^{n} \alpha_{i} y_{i}=0 , \alpha_{i} \geq 0 \end{array} $$
为了过渡到非线性分类情况,我们先看看上述推导过程中得到的一些有趣的形式。
$$
w=\sum_{i=1}^{n} \alpha_{i} y_{i} x_{i}
$$
$$ \begin{aligned} f(x) &=\left(\sum_{i=1}^{n} \alpha_{i} y_{i} x_{i}\right)^{T} x+b \\ &=\sum_{i=1}^{n} \alpha_{i} y_{i}\left\langle x_{i}, x\right\rangle+b \end{aligned} $$
$$ \max _{\alpha_{i} \geq 0} \mathcal{L}(w, b, \alpha)=\max _{\alpha_{i} \geq 0} \frac{1}{2}\|w\|^{2}-\sum_{i=1}^{n} \alpha_{i}\left(y_{i}\left(w^{T} x_{i}+b\right)-1\right) $$

对于非线性问题,线性可分支持向量机并不能有效解决,要使用非线性模型才能很好的分类。
下面我们考虑一维空间的二分类问题:

我们将它进行一个二次变换,换到二维空间,这里的变换为 $x \rightarrow x^2$。

从上面的例子,我们知道变换的核心思想就是:将原始输入空间的数据集映射到高维特征空间中,从而使得数据集可分。

上图中二维空间不可分,但是变换一下坐标空间,也能实现线性可分。

二维空间的数据点不仅可以映射到二维空间,同样也可以映射到三维,如上所示,所以同样可以找到一个超平面能够实现在三维空间的线性可分。
首先将原始的输入特征通过函数 $h(x_i)$ 映射到高维空间,拉格朗日对偶有如下形式:
$$
L(w, b, \alpha)=-\frac{1}{2} \sum_{i=1}^{N} \sum_{j=1}^{N} \alpha_{i} \alpha_{j} y_{i} y_{j}\left(h\left(x_{i}\right), h\left(x_{j}\right)\right)+\sum_{i=1}^{N} \alpha_{i}
$$
决策函数为:
$$
f(x)=\operatorname{sign}\left(\sum_{i=1}^{N} \alpha_{i} y_{i}\left(h\left(x_{i}\right), h(x)\right)+b^{*}\right)
$$
$$ \Phi(x)=\left[\begin{array}{c}1 \\ \sqrt{2} x_{1} \\ \sqrt{2} x_{2} \\ \mathrm{...} \\ \sqrt{2} x_{m} \\ x_{1}^{2} \\ x_{2}^{2} \\ \mathrm{...} \\ x_{m}^{2} \\ \sqrt{2} x_{1} x_{2} \\ \sqrt{2} x_{1} x_{3} \\ \mathrm{...} \\ \sqrt{2} x_{1} x_{m} \\ \sqrt{2} x_{2} x_{3} \\ \mathrm{...} \\ \sqrt{2} x_{2} x_{m} \\ \mathrm{...} \\ \sqrt{2} x_{m-1} x_{m}\end{array}\right] $$ $$ C_{m+2}^{2}=\frac{(m+2)(m+1)}{2} \approx \frac{m^{2}}{2} $$
$$ K(a,b)=\left(a^{T} \cdot b+1\right)^{2}=\Phi(a)^{T} \cdot \Phi(b) $$
核函数:设从输入空间 $Χ$ 到特征空间 $H$ 的一个映射 $h$,对任意 $x, z$ 属于 $X$,函数 $K(x, z)$ 满足 $K(x, z) = <h(x), h(z)>$,则称 $K$ 为核函数。
核技巧:在学习与预测中只定义核函数,而不显示的定义映射函数 $h$。
通常,直接计算 $K(x, z)$ 比较容易,而通过 $h(x)$ 和 $h(z)$ 计算 $K(x, z)$ 并不容易。
成为核函数的充要条件:设 $K$ 是对称函数,则 $K(x, z)$ 为核函数的充要条件是对输入空间中任意 $x_i$,$i=1,2,…m$,Gram 矩阵 $K = [K(x_i, x_j)] m^* m$ 是半正定矩阵。
对偶问题的目标函数:
$$
L(w, b, \alpha)=-\frac{1}{2} \sum_{i=1}^{N} \sum_{j=1}^{N} \alpha_{i} \alpha_{j} y_{i} y_{j} K\left(x_{i}, x_{j}\right)+\sum_{i=1}^{N} \alpha_{i}
$$
$$ f(x)=\operatorname{sign}\left(\sum_{i=1}^{N} \alpha_{i}^{*} y_{i} K\left(\left(x_{i}, x\right)\right)+b^{*}\right) $$
软间隔(soft-margin):有时候数据中有一些噪音点,如果我们考虑他们,那么我们的分割超平面就不太好了。
在之前讨论支持向量机的时候,我们就假定,数据是线性可分的,即我们可以找到一个可行的超平面将数据完全分开。后来为了处理非线性数据,在下文使用 Kernel 方法对原来的线性 SVM 进行了推广,使得非线性的情况也能处理。虽然通过映射 $Φ(•)$ 将原始数据映射到高维空间之后,能够线性分隔的概率大大增加,但是对于某些情况还是很难处理。
例如可能并不是因为数据本身是非线性结构的,而只是因为数据有噪音。对于这种偏离正常位置很远的数据点,我们称之为 outlier,在我们原来的SVM模型里,outlier的存在有可能造成很大的影响,因为超平面本身就是只有少数几个 support vector 组成的,如果这些 support vector里又存在 outliers 的话,其影响就很大了。例如下图:

用黑圈圈起来的那个蓝点是一个 outlier,它偏离了自己原本应该在的那个半空间,如果直接忽略掉它的话,原来的分割超平面还是挺好的,但是由于这个 outlier 的出现,导致分割超平面不得不被挤歪了,变成途中黑色虚线所示(这只是一个示意图,并没有严格计算精确坐标),同时 margin 也相应变小了。当然,更严重的情况是,如果这个 outlier 再往右上移动一些距离的话,我们将无法构造出能将数据分开的超平面来。
为了处理这种情况,SVM 允许数据点在一定程度上偏离一下超平面。例如上图中,黑色实线所对应的距离,就是该 outlier 偏离的距离,如果把它移动回来,就刚好落在原来的超平面蓝色间隔边界上,而不会使得超平面发生变形了。
也就是说,在有松弛的情况下 outline 点也属于支持向量SV,同时,对于不同的支持向量,拉格朗日参数的值也不同,如此篇论文 《Large Scale Machine Learning》中的下图所示:

对于远离分类平面的点值为 0;对于边缘上的点值在 $[0, 1/L]$,其中,$L$ 为训练数据集个数,即数据集大小;对于 outline 数据和内部的数据值为 $1/L$。
OK,继续回到问题,我们原来的约束条件为:
$$
y_{i}\left(w^{T} x_{i}+b\right) \geq 1, \quad i=1, \ldots, n
$$
现在考虑到 outlier 问题,约束条件变成了:
$$
y_{i}\left(w^{T} x_{i}+b\right) \geq 1-\xi_{i}, \quad i=1, \ldots, n
$$
其中,$ξ_i >= 0$ 称为松弛变量(slack variable),对应数据点 $x_i$ 允许偏离的 functional margin 的量。当然,如果我们运行 $ξ_i$ 任意大的话,那任意的超平面都是符合条件的了。所以,我们在原来的目标函数后面加上一项,使得这些 $ξ_i$ 的总和也要最小,即软间隔支持向量机的学习问题如下(原始问题):
$$
\min \frac{1}{2}|w|^{2}+C \sum_{i=1}^{n} \xi_{i}
$$
其中 $C$ 是惩罚系数,用于控制目标函数中两项(“寻找 margin 最大的超平面” 和 “保证数据点偏差量最小”)之间的权重。注意,其中 $ξ$ 是需要优化的变量(之一),而 C 是一个事先确定好的常量,C 值大时对误分类的惩罚增加(C趋于很大时,意味着分类严格不能有错误),C值小时对误分类的惩罚减小(C 趋于很小时,意味着可以有更大的错误容忍)。完整的写出来是这个样子:
$$ \begin{array}{l} \min \frac{1}{2}\|w\|^{2}+C \sum_{i=1}^{n} \xi_{i} \\ s.t., y_{i}\left(w^{T} x_{i}+b\right) \geq 1-\xi_{i}, i=1, \ldots, n \\ \xi_{i} \geq 0, i=1, \ldots, n \end{array} $$
所以上式包含两层含义,使 $||w||^2/2$ 尽量小即间隔尽量大,同时使误分类点的个数尽量小,$C$ 是调和两者的系数,有了上式,就可以和线性可分支持向量机一样考虑线性可分支持向量机一样考虑线性支持向量机的学习过程,此时,线性不可分支持向量机的学习问题可以变为之前的凸二次规划问题的求解。
用之前的方法将限制或约束条件加入到目标函数中,得到新的拉格朗日函数,如下所示:
$$
\mathcal{L}(w, b, \xi, \alpha, r)=\frac{1}{2}|w|^{2}+C \sum_{i=1}^{n} \xi_{i}-\sum_{i=1}^{n} \alpha_{i}\left(y_{i}\left(w^{T} x_{i}+b\right)-1+\xi_{i}\right)-\sum_{i=1}^{n} r_{i} \xi_{i}
$$
约束如下:
$$ \begin{array}{c} w=\sum_{i=1}^{n} \alpha_{i} y_{i} \phi\left(x_{n}\right) \\ 0=\sum_{i=1}^{n} \alpha_{i} y_{i} \\ C-\alpha_{i}-\mu_{i}=0 \\ \alpha_{i} \geq 0 \quad \mu_{i} \geq 0 \end{array} $$
分析方法和前面一样,转换为另一个问题之后,解法类似,我们先让 $L$ 针对 $w, b$ 和 $ξ$ 最小化:
$$ \begin{aligned} \frac{\partial \mathcal{L}}{\partial w} &=0 \Rightarrow w=\sum_{i=1}^{n} \alpha_{i} y_{i} x_{i} \\ \frac{\partial \mathcal{L}}{\partial b} &=0 \Rightarrow \sum_{i=1}^{n} \alpha_{i} y_{i}=0 \\ \frac{\partial \mathcal{L}}{\partial \xi_{i}} &=0 \Rightarrow C-\alpha_{i}-r_{i}=0, \quad i=1, \ldots, n \end{aligned} $$
将 $w$ 带回 $L$ 并化简,得到和原来一样的目标函数:
$$ \max _{\alpha} \sum_{i=1}^{n} \alpha_{i}-\frac{1}{2} \sum_{i, j=1}^{n} \alpha_{i} \alpha_{j} y_{i} y_{j}\left\langle x_{i}, x_{j}\right\rangle $$
不过由于我们得到 $C - α_i - r_i = 0$ 而 又有 $ r_i >= 0$ (作为 Lagrange multiplier 的条件),因此有 $α_i <= C$,所以整个 dual 问题现在写作:
$$ \begin{aligned} \max _{\alpha} & \sum_{i=1}^{n} \alpha_{i}-\frac{1}{2} \sum_{i, j=1}^{n} \alpha_{i} \alpha_{j} y_{i} y_{j}\left\langle x_{i}, x_{j}\right\rangle \\ \text { s.t. }, & 0 \leq \alpha_{i} \leq C, i=1, \ldots, n \\ & \sum_{i=1}^{n} \alpha_{i} y_{i}=0 \end{aligned} $$
把前后的结果对比一下:

可以看到唯一的区别就是现在 dual varibale $α$ 多了一个上限 $C$。而 Kernel 化的非线性形式也是一样的,只要把 $<x_i, x_j>$ 换成 $k(x_i, x_j)$即可。这样一来,一个完整的可以处理线性和非线性并能容忍噪音和 outliers 的支持向量机就介绍完毕了。
所以可以做一个总结,不准确的说:SVM它本质上是一个分类方法,用 $WT+b$ 定义分类函数,于是求 $w$,$b$ 为寻最大间隔,引出 $1 / 2 || w || ^2$,继而引入拉格朗日因子,化为对拉格朗日乘子 $\alpha$ 的求解(求解过程中会设计一系列的最优化或凸二次规划等问题),如此,求 $w.b$ 与 求 $\alpha$ 等价,而 $\alpha$ 的求解可以用一种快速学习算法 SMO,至于核函数,是为了处理非线性问题,若直接映射到高维计算恐维度爆炸,故在低维计算,等效高维表现。
支持向量机(SVM)是一组用于分类,回归和异常值检测的监督学习方法。
我们可以看到,上面线性可分支持向量机模型的最优化问题如下:
$$ \begin{array}{ll}\min _{w, b} & \frac{1}{2}\|w\|^{2} \\ \text { s.t. } & y_{i}\left(w^{T} \cdot x_{i}+b\right)-1 \geq 0, \quad i=1,2, \ldots N\end{array} $$
上面的基本型目标函数是二次的,约束条件是线性的,这是一个凸二次规划问题。可以直接用现成的优化计算包求解。但若利用“对偶问题”来求解,会更高效。
凸优化说的是这样一回事情:
凸优化可以想象成给我一个凸函数,我们需要找最低点。
据了解。目标函数和约束条件都为变量的线性函数,叫做——线性规划问题。目标函数为变量的二次函数和约束条件为变量的线性函数,叫做二次规划问题。
$$ L(w, b, \alpha)=\frac{1}{2}\|w\|^{2}-\sum_{i=1}^{N} \alpha_{i} y_{i}\left(w^{T} \cdot x_{i}+b\right)+\sum_{i=1}^{N} \alpha_{i} $$
拉格朗日对偶性,即通过给每一个约束条件加上一个拉格朗日乘子。然后定义出拉格朗日函数,通过拉格朗日函数将约束条件融合进目标函数中。目的是,只需要通过一个目标函数包含约束条件,便可以解释清楚问题。
SVM 问题是一个不等式约束条件下的优化问题。绝大多数模式识别教程在讨论这个问题时都会加上优化算法的简介。
约束条件一般分为等式约束和不等式约束,前者表示为 g(x) = 0 ;后者表示为 g(x) <= 0、
假设 x 属于 Rd(就是这个向量一共有 d 个标量组成),则 g(x) = 0 则是由 d-1 维的超平面。那么有约束优化问题就要求在这个 d-1 维的曲面或者超平面上找到能使得目标函数最小的点,这个 d-1 维的曲面就是“可行解区域”。
对于不等式约束条件, g(x) <= 0 ,则可行解区域 d-1 维曲面扩展成 d 维空间的一个子集。我们可以从 d=2 的二维空间进行比对理解。等式约束对应的可行解空间就是一条线;不等式约束对应的则是这条线以及线的某一侧对应的区域,就像下面的这幅图(图中的模板函数等高线其实就是等值线,在同一条等值线上的点对应的目标函数值相等)。

尽管上面我们已经想象出有约束优化问题的几何意向。可是如何利用代数方法找到这个被约束了的最优解呢?这就需要用到拉格朗日乘子法。
首先定义原始目标函数 f(x),拉格朗日乘子法的基本思想是把约束条件转换为新的目标函数 L(x, λ) 的一部分,从而使有约束优化问题变成我们习惯的无约束优化问题,那么该如何去改造原来的目标函数 f(x),使得新的目标函数 L(x, λ) 的最优解恰好在可行解区域中呢?这就需要我们去分析可行解区域的最优解的特点。
KKT条件是一个线性规划问题能有最优解的充分和必要条件。
对于不等式约束条件 $g(x) \le 0 $ 的情况,如下图所示,最优解所在的位置 $x^*$ 有两种可能,或者在边界曲线 $g(x)=0$ 上或者在可行解区域内部满足不等式 $g(x) < 0$ 的地方。
第一种情况:最优解在边界上,就相当于约束条件就是 $g(x) = 0$.参考下图,注意此时的目标函数 $f(x)$ 的最优解是在可行解区域外面,所以函数 $f(x)$ 在最优解 $x^ * $ 附加的变化趋势是“在可行解区域内侧较大而在区域外侧较小”,与之对应的是函数 $g(x)$ 在可行解区域内小于 0 ,在区域外大于零,所以在最优解 $x^ * $ 附加的变换趋势是内部较小而外部较大。这意味着目标函数 $f(x)$ 的梯度方向与约束条件函数 $g(x)$ 的梯度方向相反。因此根据下式,可以推断出参数 $λ > 0$。
$$
L(\boldsymbol{x}, \lambda)=f(\boldsymbol{x})+\lambda g(\boldsymbol{x})
$$

$$ \begin{array}{l} \min f(x) \\ s.t. h_{i}(x)=0, i=1,2, \ldots, p \\ g_{j}(x) \leq 0, j=1,2, \ldots, q \\ x \in X \in R^{n} \end{array} $$
而这个最优化数学模型的最优解 $x^*$ 需满足的条件(即KTT条件)为:
$$ \begin{array}{l} h_{i}\left(x^{*}\right)=0, i=1,2, \ldots, p \\ g_{j}\left(x^{*}\right)=0, j=1,2, \ldots, q \\ \nabla f\left(x^{*}\right)+\sum_{i=1}^{p} \lambda_{i} \nabla h_{i}\left(x^{*}\right)+\sum_{j=1}^{q} \mu_{k} \nabla g_{k}\left(x^{*}\right)=0 \\ \lambda_{i} \neq 0, \mu_{k} \geq 0, \mu_{k} g_{k}\left(x^{*}\right)=0 \end{array} $$
代入SVM中来看。
$$ \begin{array}{c} \alpha_{i}\left(y^{i}\left(\mathrm{w}^{\mathrm{T}} \mathrm{x}_{i}+b\right)-1+\xi_{i}\right)=0, i=1, \ldots, l \\ \beta_{i} \xi_{i}=0, i=1, \ldots, l \end{array} $$
$$ y^{i}\left(\mathrm{w}^{\mathrm{T}} \mathrm{x}_{i}+b\right)-1+\xi_{i}=0 $$
$$ y^{i}\left(\mathrm{~W}^{\mathrm{T}} \mathrm{x}_{i}+b\right)=1-\xi_{i} $$
$$ y^{i}\left(\mathrm{w}^{\mathrm{T}} \mathrm{x}_{i}+b\right) \leq 1 $$
$$ y_{i}\left(\mathrm{w}^{\mathrm{T}} \mathrm{x}_{i}+b\right) \geq 1-\xi_{i} $$
而由于 $ξ_i = 0$,因此有
$$
y_{i}\left(\mathrm{w}^{\mathrm{T}} \mathrm{x}_{i}+b\right) \geq 1
$$
$$ y_{i}\left(\mathrm{w}^{\mathrm{T}} \mathrm{x}_{i}+b\right) \geq 1-\xi_{i} $$
$$
y_{i}\left(\mathrm{w}^{\mathrm{T}} \mathrm{x}_{i}+b\right) \geq 1
$$
$$
y_{i}\left(\mathrm{w}^{\mathrm{T}} \mathrm{x}_{i}+b\right) \le 1
$$
又要满足:
$$
y_{i}\left(\mathrm{w}^{\mathrm{T}} \mathrm{x}_{i}+b\right) \geq 1
$$
$$
y_{i}\left(\mathrm{w}^{\mathrm{T}} \mathrm{x}_{i}+b\right) \geq 1
$$
$$ \begin{array}{c} \alpha_{i}=0 \Rightarrow y_{i}\left(\mathrm{w}^{\mathrm{T}} \mathrm{x}_{i}+b\right) \geq 1 \end{array} $$ $$ 0<\alpha_{i} < C \Rightarrow y^{i}\left(\mathrm{w}^{\mathrm{T}} \mathrm{x}_{i}+b\right)=1 $$ $$ \alpha_{i}=C \Rightarrow y^{i}\left(\mathrm{w}^{\mathrm{T}} \mathrm{x}_ {i}+b\right) \le1 $$
文章链接:
https://www.zywvvd.com/notes/study/machine-learning/about-svm/svm-summarize/svm-summarize/
此内容由惯性聚合(RSS阅读器)自动聚合整理,仅供阅读参考。 原文来自 — 版权归原作者所有。