支持向量机

支持向量机

核心思想是间隔最大化

基本形式

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

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

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

[r=frac{left|oldsymbol{w}^{mathrm{T}} oldsymbol{x}+b ight|}{|oldsymbol{w}|} ]

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

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

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

[gamma=frac{2}{|oldsymbol{w}|} ]

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

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

可将上式重新写为:

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

对偶问题

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

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

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

[max _{oldsymbol{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} oldsymbol{x}_{i}^{mathrm{T}} oldsymbol{x}_{j} ]

[egin{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) 可以得出模型:

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

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

[left{egin{array}{l}{alpha_{i} geqslant 0} \ {y_{i} fleft(oldsymbol{x}_{i} ight)-1 geqslant 0} \ {alpha_{i}left(y_{i} fleft(oldsymbol{x}_{i} ight)-1 ight)=0}end{array} ight. ]

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

为什么需要对偶形式:

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

求解算法 SMO。

核函数

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

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

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

[egin{array}{l}{min _{oldsymbol{w}, b} frac{1}{2}|oldsymbol{w}|^{2}} \ { ext { s.t. } quad y_{i}left(oldsymbol{w}^{mathrm{T}} phileft(oldsymbol{x}_{i} ight)+b ight) geqslant 1, quad i=1,2, ldots, m}end{array} ]

其对偶问题是

[max _{oldsymbol{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} phileft(oldsymbol{x}_{i} ight)^{mathrm{T}} phileft(oldsymbol{x}_{j} ight) \ ]

[egin{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} ]

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

[kappaleft(oldsymbol{x}_{i}, oldsymbol{x}_{j} ight)=leftlanglephileft(oldsymbol{x}_{i} ight), phileft(oldsymbol{x}_{j} ight) ight angle=phileft(oldsymbol{x}_{i} ight)^{mathrm{T}} phileft(oldsymbol{x}_{j} ight) ]

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

软间隔和正则化

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

[y_{i}left(oldsymbol{w}^{mathrm{T}} oldsymbol{x}_{i}+b ight) geqslant 1 ]

此时,优化目标写为:

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

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

[ell_{0 / 1}(z)=left{egin{array}{ll}{1,} & { ext { if } z<0} \ {0,} & { ext { otherwise }}end{array} ight. ]

(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 _{oldsymbol{w}, b} frac{1}{2}|oldsymbol{w}|^{2}+C sum_{i=1}^{m} max left(0,1-y_{i}left(oldsymbol{w}^{mathrm{T}} oldsymbol{x}_{i}+b ight) ight) ]

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

[min _{f} Omega(f)+C sum_{i=1}^{m} ellleft(fleft(oldsymbol{x}_{i} ight), y_{i} ight) ]

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

支持向量回归 (SVR)

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

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

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

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

问题

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

    引入核函数

一个例子

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

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

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

定义类内散度

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

类间散度

[mathbf{S}_{b}=left(oldsymbol{mu}_{0}-oldsymbol{mu}_{1} ight)left(oldsymbol{mu}_{0}-oldsymbol{mu}_{1} ight)^{mathrm{T}} ]

则优化函数可以重新写成

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

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

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

学习目标是

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

于是有

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

可得

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


硬间隔最大化

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

原文地址:https://www.cnblogs.com/curtisxiao/p/10929407.html