支持向量机

支持向量机

核心思想是间隔最大化

基本形式

假设划分超平面可以使用下述线性方程来描述:

\[\boldsymbol{w}^{\mathrm{T}} \boldsymbol{x}+b=0 \]

则样本空间中的任一点到分隔超平面的距离为:

\[r=\frac{\left|\boldsymbol{w}^{\mathrm{T}} \boldsymbol{x}+b\right|}{\|\boldsymbol{w}\|} \]

如果超平面能正确分类,则有:

\[\left\{\begin{array}{ll}{\boldsymbol{w}^{\mathrm{T}} \boldsymbol{x}_{i}+b \geqslant+1,} & {y_{i}=+1} \\ {\boldsymbol{w}^{\mathrm{T}} \boldsymbol{x}_{i}+b \leqslant-1,} & {y_{i}=-1}\end{array}\right. \]

两个异类支持向量到分界面的距离之和为:

\[\gamma=\frac{2}{\|\boldsymbol{w}\|} \]

所以想要找到最大间隔,就是下述优化函数:

\[\begin{array}{l}{\max _{\boldsymbol{w}, b} \frac{2}{\|\boldsymbol{w}\|}} \\ {\text { s.t. } y_{i}\left(\boldsymbol{w}^{\mathrm{T}} \boldsymbol{x}_{i}+b\right) \geqslant 1, \quad i=1,2, \ldots, m}\end{array} \]

可将上式重新写为:

\[\begin{array}{l}{\min _{\boldsymbol{w}, b} \frac{1}{2}\|\boldsymbol{w}\|^{2}} \\ {\text { s.t. } y_{i}\left(\boldsymbol{w}^{\mathrm{T}} \boldsymbol{x}_{i}+b\right) \geqslant 1, \quad i=1,2, \ldots, m}\end{array} \]

对偶问题

使用拉格朗日乘子法得到其对偶问题:

\[L(\boldsymbol{w}, b, \boldsymbol{\alpha})=\frac{1}{2}\|\boldsymbol{w}\|^{2}+\sum_{i=1}^{m} \alpha_{i}\left(1-y_{i}\left(\boldsymbol{w}^{\mathrm{T}} \boldsymbol{x}_{i}+b\right)\right) \]

通过对 \(w\)\(\alpha\) 求偏导,得到新的优化函数:

\[\max _{\boldsymbol{\alpha}} \sum_{i=1}^{m} \alpha_{i}-\frac{1}{2} \sum_{i=1}^{m} \sum_{j=1}^{m} \alpha_{i} \alpha_{j} y_{i} y_{j} \boldsymbol{x}_{i}^{\mathrm{T}} \boldsymbol{x}_{j} \]

\[\begin{array}{l}{s.t. \ \sum_{i=1}^{m} \alpha_{i} y_{i}=0} \\ {\alpha_{i} \geqslant 0, \quad i=1,2, \ldots, m}\end{array} \]

通过求解 \(\alpha\),求解 \(w\)\(b\) 可以得出模型:

\[\begin{aligned} f(\boldsymbol{x}) &=\boldsymbol{w}^{\mathrm{T}} \boldsymbol{x}+b \\ &=\sum_{i=1}^{m} \alpha_{i} y_{i} \boldsymbol{x}_{i}^{\mathrm{T}} \boldsymbol{x}+b \end{aligned} \]

上述过程需要满足 KKT 条件:

\[\left\{\begin{array}{l}{\alpha_{i} \geqslant 0} \\ {y_{i} f\left(\boldsymbol{x}_{i}\right)-1 \geqslant 0} \\ {\alpha_{i}\left(y_{i} f\left(\boldsymbol{x}_{i}\right)-1\right)=0}\end{array}\right. \]

可以看出对于任意样本 \((x_i,y_i)\),均有 \(\alpha_i=0\) 或者 \(y_if(x_i)=1\),当 \(y_if(x_i)=1\) 时,该样本为支持向量,最后模型只需要这些支持向量。

为什么需要对偶形式:

  • 为了自然引入核函数
  • 降低求解复杂度

求解算法 SMO。

核函数

原始样本空间不可分,但是转化到高维可以线性可分。

\(\phi(x)\) 表示 \(x\) 映射后的特征向量,于是模型可以表示为:

\[f(\boldsymbol{x})=\boldsymbol{w}^{\mathrm{T}} \phi(\boldsymbol{x})+b \]

\[\begin{array}{l}{\min _{\boldsymbol{w}, b} \frac{1}{2}\|\boldsymbol{w}\|^{2}} \\ {\text { s.t. } \quad y_{i}\left(\boldsymbol{w}^{\mathrm{T}} \phi\left(\boldsymbol{x}_{i}\right)+b\right) \geqslant 1, \quad i=1,2, \ldots, m}\end{array} \]

其对偶问题是

\[\max _{\boldsymbol{\alpha}} \sum_{i=1}^{m} \alpha_{i}-\frac{1}{2} \sum_{i=1}^{m} \sum_{j=1}^{m} \alpha_{i} \alpha_{j} y_{i} y_{j} \phi\left(\boldsymbol{x}_{i}\right)^{\mathrm{T}} \phi\left(\boldsymbol{x}_{j}\right) \\ \]

\[\begin{array}{l} {s.t. \quad \sum_{i=1}^{m} \alpha_{i} y_{i}=0} \\ {\alpha_{i} \geqslant 0, \quad i=1,2, \ldots, m}\end{array} \]

由于特征空间维度很高,直接计算 \(\phi\left(\boldsymbol{x}_{i}\right)^{\mathrm{T}} \phi\left(\boldsymbol{x}_{j}\right)\) 很困难,可以设想这样一个函数:

\[\kappa\left(\boldsymbol{x}_{i}, \boldsymbol{x}_{j}\right)=\left\langle\phi\left(\boldsymbol{x}_{i}\right), \phi\left(\boldsymbol{x}_{j}\right)\right\rangle=\phi\left(\boldsymbol{x}_{i}\right)^{\mathrm{T}} \phi\left(\boldsymbol{x}_{j}\right) \]

\(x_i\)\(x_j\) 在特征空间的内积等于在原始空间中的通过函数 \(\kappa(x_i,x_j)\) 的内积。

软间隔和正则化

当样本线性不可分时,需要对约束进行放缩,即允许部分样本不满足约束:

\[y_{i}\left(\boldsymbol{w}^{\mathrm{T}} \boldsymbol{x}_{i}+b\right) \geqslant 1 \]

此时,优化目标写为:

\[\min _{\boldsymbol{w}, b} \frac{1}{2}\|\boldsymbol{w}\|^{2}+C \sum_{i=1}^{m} \ell_{0 / 1}\left(y_{i}\left(\boldsymbol{w}^{\mathrm{T}} \boldsymbol{x}_{i}+b\right)-1\right) \]

其中 \(C>0\) 时常数,\(l_0\) 是0/1损失函数:

\[\ell_{0 / 1}(z)=\left\{\begin{array}{ll}{1,} & {\text { if } z<0} \\ {0,} & {\text { otherwise }}\end{array}\right. \]

\(l_0\)非凸、非连续,不易求解。使用替代函数:

  • hinge 损失: \(\quad \ell_{hinge}(z)=max(0,1-z)\)
  • 指数损失(expontential loss):\(\quad \ell_{exp(z)}=exp(-z)\)
  • 对数损失(logistic loss):\(\quad \ell_{log}(z)=log(1+exp(-z))\)

三种函数对比图:

computational graph
若采用 hinge loss 替代,则函数变为:

\[\min _{\boldsymbol{w}, b} \frac{1}{2}\|\boldsymbol{w}\|^{2}+C \sum_{i=1}^{m} \max \left(0,1-y_{i}\left(\boldsymbol{w}^{\mathrm{T}} \boldsymbol{x}_{i}+b\right)\right) \]

共性模型:
优化目标中的第一项用来描述划分超平面的间隔大小,另一项 \(\sum_{i=1}^{m} \ell\left(f\left(\boldsymbol{x}_{i}\right), y_{i}\right)\)用来描述在训练集上的误差大小,可写为:

\[\min _{f} \Omega(f)+C \sum_{i=1}^{m} \ell\left(f\left(\boldsymbol{x}_{i}\right), y_{i}\right) \]

其中第一项为结构误差,用来描述模型的性质;第二项为经验风险,描述模型与训练集的契合程度。

支持向量回归 (SVR)

相当于以 \(f(x)\) 为中心,构建了一个宽度为 \(2\epsilon\) 的间隔带,若训练样本落入此区间,总被认为是正确的。于是SVR问题可以写成:

\[\min _{w, b} \frac{1}{2}\|w\|^{2}+C \sum_{i=1}^{m} \ell_{c}\left(f\left(x_{i}\right)-y_{i}\right) \]

其中 \(\ell_{\epsilon}\) 为不敏感损失函数:

\[\ell_{\epsilon}(z)=\left\{\begin{array}{ll}{0,} & {\text { if }|z| \leqslant \epsilon} \\ {|z|-\epsilon,} & {\text { otherwise }}\end{array}\right. \]

问题

  • 如何将svm变为非线性学习器

    引入核函数

一个例子

将线性判别分析进行非线性拓展
线性判别分析的核心思想是,将数据投影到一条直线上,使得同类投影点尽可能接近,使得异类样本点尽可能远。

符号:
数据集 \(D=\{(x_i,y_i)\}_{i=1}^m,y_i\in{0,1}\),令 \(X_i,\mu_i,\Sigma_i\)代表第\(i\)类的集合、均值向量和协方差矩阵。
优化目标为最大化 \(J\):

\[\begin{aligned} J &=\frac{\left\|\boldsymbol{w}^{\mathrm{T}} \boldsymbol{\mu}_{0}-\boldsymbol{w}^{\mathrm{T}} \boldsymbol{\mu}_{1}\right\|_{2}^{2}}{\boldsymbol{w}^{\mathrm{T}} \boldsymbol{\Sigma}_{0} \boldsymbol{w}+\boldsymbol{w}^{\mathrm{T}} \boldsymbol{\Sigma}_{1} \boldsymbol{w}} \\ &=\frac{\boldsymbol{w}^{\mathrm{T}}\left(\boldsymbol{\mu}_{0}-\boldsymbol{\mu}_{1}\right)\left(\boldsymbol{\mu}_{0}-\boldsymbol{\mu}_{1}\right)^{\mathrm{T}} \boldsymbol{w}}{\boldsymbol{w}^{\mathrm{T}}\left(\boldsymbol{\Sigma}_{0}+\boldsymbol{\Sigma}_{1}\right) \boldsymbol{w}} \end{aligned} \]

定义类内散度

\[\begin{aligned} \mathbf{S}_{w} &=\mathbf{\Sigma}_{0}+\mathbf{\Sigma}_{1} \\ &=\sum_{\boldsymbol{x} \in X_{0}}\left(\boldsymbol{x}-\boldsymbol{\mu}_{0}\right)\left(\boldsymbol{x}-\boldsymbol{\mu}_{0}\right)^{\mathrm{T}}+\sum_{\boldsymbol{x} \in X_{1}}\left(\boldsymbol{x}-\boldsymbol{\mu}_{1}\right)\left(\boldsymbol{x}-\boldsymbol{\mu}_{1}\right)^{\mathrm{T}} \end{aligned} \]

类间散度

\[\mathbf{S}_{b}=\left(\boldsymbol{\mu}_{0}-\boldsymbol{\mu}_{1}\right)\left(\boldsymbol{\mu}_{0}-\boldsymbol{\mu}_{1}\right)^{\mathrm{T}} \]

则优化函数可以重新写成

\[J=\frac{\boldsymbol{w}^{\mathrm{T}} \mathbf{S}_{b} \boldsymbol{w}}{\boldsymbol{w}^{\mathrm{T}} \mathbf{S}_{w} \boldsymbol{w}} \]

假设,我们使用某种映射将样本先映射到一个样本空间,然后执行线性判别分析:

\[h(\boldsymbol{x})=\boldsymbol{w}^{\mathrm{T}} \phi(\boldsymbol{x}) \]

学习目标是

\[\max _{\boldsymbol{w}} J(\boldsymbol{w})=\frac{\boldsymbol{w}^{\mathrm{T}} \mathbf{S}_{b}^{\phi} \boldsymbol{w}}{\boldsymbol{w}^{\mathrm{T}} \mathbf{S}_{w}^{\phi} \boldsymbol{w}} \]

于是有

\[\begin{aligned} \hat{\boldsymbol{\mu}}_{0} &=\frac{1}{m_{0}} \mathbf{K} \mathbf{1}_{0} \\ \hat{\boldsymbol{\mu}}_{1} &=\frac{1}{m_{1}} \mathbf{K} \mathbf{1}_{1} \\ \mathbf{M} &=\left(\hat{\boldsymbol{\mu}}_{0}-\hat{\boldsymbol{\mu}}_{1}\right)\left(\hat{\boldsymbol{\mu}}_{0}-\hat{\boldsymbol{\mu}}_{1}\right)^{\mathrm{T}} \\ \mathbf{N}&=\mathbf{K} \mathbf{K}^{\mathrm{T}}-\sum_{i=0}^{1} m_{i} \hat{\boldsymbol{\mu}}_{i} \hat{\boldsymbol{\mu}}_{i}^{\mathrm{T}} \end{aligned} \]

可得

\[\max _{\boldsymbol{\alpha}} J(\boldsymbol{\alpha})=\frac{\boldsymbol{\alpha}^{\mathrm{T}} \mathbf{M} \boldsymbol{\alpha}}{\boldsymbol{\alpha}^{\mathrm{T}} \mathbf{N} \boldsymbol{\alpha}} \]


硬间隔最大化

软间隔最大化: 加了惩罚因子

posted @ 2019-05-27 10:38  静_渊  阅读(267)  评论(0编辑  收藏  举报