机器学习 第6章 支持向量机

这里写目录标题

  • [6.1 间隔与支持向量](#6.1 间隔与支持向量)
  • [6.2 对偶问题](#6.2 对偶问题)
  • [6.3 核函数](#6.3 核函数)
  • [6.4 软间隔与正则化](#6.4 软间隔与正则化)
  • [6.5 支持向量回归](#6.5 支持向量回归)

6.1 间隔与支持向量

给定训练样本集 D = { ( x 1 , y 1 ) , ( x 2 , y 2 ) , . . . , ( x m , y m ) } , y i ∈ { − 1 , + 1 } D=\left \{ (x_{1},y_{1}),(x_{2},y_{2}) ,...,(x_{m},y_{m})\right \} ,y_{i}\in \left \{ -1,+1 \right \} D={(x1,y1),(x2,y2),...,(xm,ym)},yi∈{−1,+1},我们希望在训练集D的基础上,基于样本空间找到一个划分超平面,将不同类别的样本分开。如下图所示

在该样本空间中,中间的"实线段"都可作为划分超平面,但它们的效果不尽相同。其中位于中间的效果最好,因为该划分超平面对训练样本局部扰动的"容忍"性最好。在样本空间中,划分超平面可通过如下线性方程来描述: w T x + b = 0 w^{T} x+b=0 wTx+b=0

其中 w = ( w 1 , w 2 , . . . , w d ) w=\left ( w_{1} ,w_{2} ,...,w_{d} \right ) w=(w1,w2,...,wd)为法向量,决定了超平面的方向; b b b为位移项,决定了超平面与原点之间的距离。样本空间中任意点 x x x到超平面 ( w , b ) (w,b) (w,b)的距离可写为
r = ∣ w T x + b ∣ ∥ w ∥ . r = \frac{\left| {\mathbf{w}}^{\mathrm{T}}\mathbf{x} + b\right| }{\parallel \mathbf{w}\parallel }. r=∥w∥ wTx+b .

假设超平面 ( w , b ) (w,b) (w,b)能将训练样本正确分类,即满足下式
{ w T x i + b ≥ + 1 , y i = + 1 w T x i + b ≤ − 1 , y i = − 1 \left\{ \begin{array}{ll} {\mathbf{w}}^{\mathrm{T}}{\mathbf{x}}{i} + b \geq + 1, & {y}{i} = + 1 \\ {\mathbf{w}}^{\mathrm{T}}{\mathbf{x}}{i} + b \leq - 1, & {y}{i} = - 1 \end{array}\right. {wTxi+b≥+1,wTxi+b≤−1,yi=+1yi=−1

如下图所示,图中画圈的样本点称为支持向量 ,它们到超平面的距离最小。其中,两个异类支持向量到超平面的距离之和为 γ = 2 ∥ w ∥ \gamma = \frac{2}{\parallel \mathbf{w}\parallel } γ=∥w∥2,即图中两段虚线之间的间隔距离。

6.2 对偶问题

可以使用拉格朗日乘子法得到对偶问题,上面问题的拉格朗日函数可写为
L ( w , b , α ) = 1 2 ∥ w ∥ 2 + ∑ i = 1 m α i ( 1 − y i ( w T x i + b ) ) L\left( {\mathbf{w},b,\mathbf{\alpha }}\right) = \frac{1}{2}\parallel \mathbf{w}{\parallel }^{2} + \mathop{\sum }\limits_{{i = 1}}^{m}{\alpha }{i}\left( {1 - {y}{i}\left( {{\mathbf{w}}^{\mathrm{T}}{\mathbf{x}}_{i} + b}\right) }\right) L(w,b,α)=21∥w∥2+i=1∑mαi(1−yi(wTxi+b))

令 L ( w , b , α ) L(w,b,\alpha) L(w,b,α)对w和b的偏导为零可得
w = ∑ i = 1 m α i y i x i \mathbf{w} = \mathop{\sum }\limits_{{i = 1}}^{m}{\alpha }{i}{y}{i}{\mathbf{x}}{i} w=i=1∑mαiyixi
0 = ∑ i = 1 m α i y i 0 = \mathop{\sum }\limits
{{i = 1}}^{m}{\alpha }{i}{y}{i} 0=i=1∑mαiyi

将结果代入得其对偶问题
max ⁡ α ∑ i = 1 m α i − 1 2 ∑ i = 1 m ∑ j = 1 m α i α j y i y j x i T x j \mathop{\max }\limits_{\mathbf{\alpha }}\mathop{\sum }\limits_{{i = 1}}^{m}{\alpha }{i} - \frac{1}{2}\mathop{\sum }\limits{{i = 1}}^{m}\mathop{\sum }\limits_{{j = 1}}^{m}{\alpha }{i}{\alpha }{j}{y}{i}{y}{j}{\mathbf{x}}{i}^{\mathrm{T}}{\mathbf{x}}{j} αmaxi=1∑mαi−21i=1∑mj=1∑mαiαjyiyjxiTxj

上面过程需满足KKT条件,即
{ α i ≥ 0 ; y i f ( x i ) − 1 ≥ 0 ; α i ( y i f ( x i ) − 1 ) = \left\{ \begin{array}{l} {\alpha }{i} \geq 0; \\ {y}{i}f\left( {\mathbf{x}}{i}\right) - 1 \geq 0; \\ {\alpha }{i}\left( {{y}{i}f\left( {\mathbf{x}}{i}\right) - 1}\right) = \end{array}\right. ⎩ ⎨ ⎧αi≥0;yif(xi)−1≥0;αi(yif(xi)−1)=

在参数初始化后, SMO 不断执行如下两个步骤直至收敛:

(1)选取一对需更新的变量 α i \alpha _{i} αi和 α j \alpha _{j} αj;

(2)固定 α i \alpha _{i} αi和 α j \alpha _{j} αj以外的参数,求解公式获得更新后的 α i \alpha _{i} αi和 α j \alpha _{j} αj

6.3 核函数

在现实任务中,原始样本空间内也许并不存在一个能正确划分两类样本的超平面,如下图中的" 异或 问题就不是线性可分的

对这样的问题,可将样本从原始空间映射到一个更高维的特征空间,使得样本在这个特征空间内线性分。令 ϕ ( x ) \phi (x) ϕ(x)表示将 x x x映射后的特征向量 ,于是, 在特征空间中划分超平面所对应的模型可表示为
f ( x ) = w T ϕ ( x ) + b f(x)=w^{T} \phi (x)+b f(x)=wTϕ(x)+b,由于特征空间维数可能很高,甚至可能是无穷维,因此直接计算 ϕ ( x i ) T ϕ ( x j ) \phi {\left( {\mathbf{x}}{i}\right) }^{\mathrm{T}}\phi \left( {\mathbf{x}}{j}\right) ϕ(xi)Tϕ(xj)很难,可设想该函数
κ ( x i , x j ) = ⟨ ϕ ( x i ) , ϕ ( x j ) ⟩ = ϕ ( x i ) T ϕ ( x j ) \kappa \left( {{\mathbf{x}}{i},{\mathbf{x}}{j}}\right) = \left\langle {\phi \left( {\mathbf{x}}{i}\right) ,\phi \left( {\mathbf{x}}{j}\right) }\right\rangle = \phi {\left( {\mathbf{x}}{i}\right) }^{\mathrm{T}}\phi \left( {\mathbf{x}}{j}\right) κ(xi,xj)=⟨ϕ(xi),ϕ(xj)⟩=ϕ(xi)Tϕ(xj)

经过该函数的变化,上式可改写为
max ⁡ α ∑ i = 1 m α i − 1 2 ∑ i = 1 m ∑ j = 1 m α i α j y i y j κ ( x i , x j ) \mathop{\max }\limits_{\mathbf{\alpha }}\mathop{\sum }\limits_{{i = 1}}^{m}{\alpha }{i} - \frac{1}{2}\mathop{\sum }\limits{{i = 1}}^{m}\mathop{\sum }\limits_{{j = 1}}^{m}{\alpha }{i}{\alpha }{j}{y}{i}{y}{j}\kappa \left( {{\mathbf{x}}{i},{\mathbf{x}}{j}}\right) αmaxi=1∑mαi−21i=1∑mj=1∑mαiαjyiyjκ(xi,xj)

求解后得到
f ( x ) = w T ϕ ( x ) + b f\left( \mathbf{x}\right) = {\mathbf{w}}^{\mathrm{T}}\phi \left( \mathbf{x}\right) + b f(x)=wTϕ(x)+b
= ∑ i = 1 m α i y i ϕ ( x i ) T ϕ ( x ) + b = \mathop{\sum }\limits_{{i = 1}}^{m}{\alpha }{i}{y}{i}\phi {\left( {\mathbf{x}}{i}\right) }^{\mathrm{T}}\phi \left( \mathbf{x}\right) + b =i=1∑mαiyiϕ(xi)Tϕ(x)+b
= ∑ i = 1 m α i y i κ ( x , x i ) + b = \mathop{\sum }\limits
{{i = 1}}^{m}{\alpha }{i}{y}{i}\kappa \left( {\mathbf{x},{\mathbf{x}}_{i}}\right) + b =i=1∑mαiyiκ(x,xi)+b

上面的 κ ( . , . ) \kappa (.,.) κ(.,.)就是"核函数",该函数有如下定理

令 χ \chi χ为输入空间, κ ( . , . ) \kappa (.,.) κ(.,.)是该空间上的对称函数,则 κ \kappa κ是核函数当且仅当对于任意数据,"核矩阵"K总是半正定的

上式表明:只要一个对称函数所对应的核矩阵半正定,它就能作为核函数使用.事实上,对于一个半正定核矩阵,总能找到一个与之对应的映射φ.换言之,任何一个核函数都隐式地定义了一个称为"再生核希尔伯特空间"的特征空间。

常用核函数如下:

6.4 软间隔与正则化

硬间隔:在样本空间中,对某一个超平面,其中所有的样本都必须划分正确。

软间隔:与上述类似,只不过允许部分样本不满足约束。

下图给出了三种常用的替代损失函数:

hinge损失: ℓ hinge ( z ) = max ⁡ ( 0 , 1 − z ) {\ell }_{\text{hinge }}\left( z\right) = \max \left( {0,1 - z}\right) ℓhinge (z)=max(0,1−z)

指数损失: ℓ exp ( z ) = exp ⁡ ( − z ) {\ell }_{\text{exp }}\left( z\right) = \exp \left( {-z}\right) ℓexp (z)=exp(−z)

对率损失: ℓ log ( z ) = log ⁡ ( 1 + exp ⁡ ( − z ) ) {\ell }_{\text{log }}\left( z\right) = \log \left( {1 + \exp \left( {-z}\right) }\right) ℓlog (z)=log(1+exp(−z))

两者唯一的差别就在于对偶变量的约束不同:软间隔是 0 ≤ α i ≤ C 0\le \alpha _{i} \le C 0≤αi≤C, 硬间隔是 0 ≤ α i 0\le \alpha _{i} 0≤αi

6.5 支持向量回归

给定训练样本D,希望学得一个形如 f ( x ) = w T x + b f(x)=w^{T}x+b f(x)=wTx+b的回归模型,使得 f ( x ) f(x) f(x)与y尽可能接近,支持向量回归(SVR)假设我们能容忍 f ( x ) f(x) f(x)与y之间最多有 ϵ \epsilon ϵ的偏差,如图所示

在虚线部分的样本点则认为是被预测正确的。于是,SRC问题可形式化为
min ⁡ w , b 1 2 ∥ w ∥ 2 + C ∑ i = 1 m ℓ ϵ ( f ( x i ) − y i ) , \mathop{\min }\limits_{{\mathbf{w},b}}\frac{1}{2}\parallel \mathbf{w}{\parallel }^{2} + C\mathop{\sum }\limits_{{i = 1}}^{m}{\ell }{\epsilon }\left( {f\left( {\mathbf{x}}{i}\right) - {y}_{i}}\right) , w,bmin21∥w∥2+Ci=1∑mℓϵ(f(xi)−yi),

其中,
ℓ ϵ ( z ) = { 0 , if ∣ z ∣ ≤ ϵ ∣ z ∣ − ϵ , otherwise. {\ell }_{\epsilon }\left( z\right) = \left\{ \begin{array}{ll} 0, & \text{ if }\left| z\right| \leq \epsilon \\ \left| z\right| - \epsilon , & \text{ otherwise. } \end{array}\right. ℓϵ(z)={0,∣z∣−ϵ, if ∣z∣≤ϵ otherwise.

引入松弛变量 ξ i \xi {i} ξi和 ξ ^ i \hat{\xi} {i} ξ^i,第一个公式改写为
min ⁡ w , b , ξ i , ξ ^ i 1 2 ∥ w ∥ 2 + C ∑ i = 1 m ( ξ i + ξ ^ i ) \mathop{\min }\limits
{{\mathbf{w},b,{\xi }
{i},{\widehat{\xi }}{i}}}\frac{1}{2}\parallel \mathbf{w}{\parallel }^{2} + C\mathop{\sum }\limits{{i = 1}}^{m}\left( {{\xi }{i} + {\widehat{\xi }}{i}}\right) w,b,ξi,ξ imin21∥w∥2+Ci=1∑m(ξi+ξ i)

最终,SVR可表示为
f ( x ) = ∑ i = 1 m ( α ^ i − α i ) κ ( x , x i ) + b f\left( \mathbf{x}\right) = \mathop{\sum }\limits_{{i = 1}}^{m}\left( {{\widehat{\alpha }}{i} - {\alpha }{i}}\right) \kappa \left( {\mathbf{x},{\mathbf{x}}_{i}}\right) + b f(x)=i=1∑m(α i−αi)κ(x,xi)+b

其中 κ ( x i , x j ) = ϕ ( x i ) T ϕ ( x j ) \kappa ({\mathbf{x}}{i},{\mathbf{x}}{j}) = \phi ({\mathbf{x}}{i}{)}^{T}\phi ({\mathbf{x}}{j}) κ(xi,xj)=ϕ(xi)Tϕ(xj)为核函数。

相关推荐
jiao_mrswang22 分钟前
leetcode-18-四数之和
算法·leetcode·职场和发展
qystca30 分钟前
洛谷 B3637 最长上升子序列 C语言 记忆化搜索->‘正序‘dp
c语言·开发语言·算法
薯条不要番茄酱31 分钟前
数据结构-8.Java. 七大排序算法(中篇)
java·开发语言·数据结构·后端·算法·排序算法·intellij-idea
今天吃饺子35 分钟前
2024年SCI一区最新改进优化算法——四参数自适应生长优化器,MATLAB代码免费获取...
开发语言·算法·matlab
是阿建吖!36 分钟前
【优选算法】二分查找
c++·算法
王燕龙(大卫)41 分钟前
leetcode 数组中第k个最大元素
算法·leetcode
不去幼儿园2 小时前
【MARL】深入理解多智能体近端策略优化(MAPPO)算法与调参
人工智能·python·算法·机器学习·强化学习
Mr_Xuhhh2 小时前
重生之我在学环境变量
linux·运维·服务器·前端·chrome·算法
无脑敲代码,bug漫天飞3 小时前
COR 损失函数
人工智能·机器学习
盼海3 小时前
排序算法(五)--归并排序
数据结构·算法·排序算法