Datawhale组队学习之西瓜书task5

第六章 支持向量机

6.1 SVM基本型

6.1.1 基本型

给定训练样例集 D = { ( x 1 , y 1 ) , ( x 2 , y 2 ) , ⋯   , ( x m , y m ) } , y i ∈ { − 1 , + 1 } D=\{(\boldsymbol x_1,y_1),(\boldsymbol x_2,y_2),\cdots,(\boldsymbol x_m,y_m)\},y_i\in\{-1,+1\} D={(x1,y1),(x2,y2),,(xm,ym)},yi{1,+1},我们可用超平面来划分特征(类似感知机),特征空间中的超平面方程为:
w T x + b = 0 \begin{aligned} \boldsymbol{w}^\mathbf{T}\boldsymbol{x}+b=0 \end{aligned} wTx+b=0
我们称距离超平面最近的几个训练样本点为支持向量(support vector),规定支持向量满足 y i ( w T x i + b ) = 1 y_i(\boldsymbol{w}^\mathbf{T}\boldsymbol{x}_i+b)=1 yi(wTxi+b)=1,两个异类支持向量到超平面的距离之和称为间隔(margin):
γ = 2 ∣ ∣ w ∣ ∣ \begin{aligned} \gamma=\frac{2}{||\boldsymbol w||} \end{aligned} γ=∣∣w∣∣2
如下图所示,红线就是我们想找的超平面:

支持向量机(Support Vector Machine,SVM)的目标就是找到间隔最小的超平面:
min w , b 2 ∣ ∣ w ∣ ∣ s.t. y i ( w T x i + b ) ⩾ 1 , i = 1 , 2 , ⋯   , m \begin{aligned} \underset{\boldsymbol w,b}{\text{min}}\quad &\frac{2}{||\boldsymbol w||} \\ \text{s.t.}\quad &y_i(\boldsymbol{w}^\mathbf{T}\boldsymbol{x}_i+b)\geqslant1,\quad i=1,2,\cdots,m \\ \end{aligned} w,bmins.t.∣∣w∣∣2yi(wTxi+b)1,i=1,2,,m

为方便求解,我们取上式的等价形式:
min w , b 1 2 ∣ ∣ w ∣ ∣ 2 s.t. y i ( w T x i + b ) ⩾ 1 , i = 1 , 2 , ⋯   , m \begin{aligned} \underset{\boldsymbol w,b}{\text{min}}\quad &\frac{1}{2}||\boldsymbol w||^2 \\ \text{s.t.}\quad &y_i(\boldsymbol{w}^\mathbf{T}\boldsymbol{x}_i+b)\geqslant1,\quad i=1,2,\cdots,m \\ \end{aligned} w,bmins.t.21∣∣w2yi(wTxi+b)1,i=1,2,,m
这就是支持向量机的基本型

6.1.2 求解SVM

显而易见,支持向量机是一个凸优化问题,因此有多种方法进行求解,这里为了方便引出后续概念,采用拉格朗日对偶(lagrange duality)方法进行求解。

关于拉格朗日对偶相关的凸优化内容问题,请点击这里

经证明,支持向量机是一个强对偶问题,因此原问题的最小值就是对偶问题(dual problem)的最大值。

经计算,可以得到对偶问题:
max ⁡ α ∑ i = 1 m α i − 1 2 ∑ i = 1 m ∑ j = 1 m α i α j y i y j x i T x j s.t. ∑ i = 1 m α i y i = 0 α i ⩾ 0 , i = 1 , 2 , ⋯   , m \begin{aligned} \underset{\boldsymbol\alpha}{\max}\quad &\sum^m_{i=1}\alpha_i-\frac{1}{2}\sum^m_{i=1}\sum^m_{j=1}\alpha_i\alpha_jy_iy_j\boldsymbol x^\mathbf T_i\boldsymbol x_j \\ \text{s.t.}\quad &\sum^m_{i=1}\alpha_iy_i=0\\ &\alpha_i\geqslant0,\quad i=1,2,\cdots,m \\ \end{aligned} αmaxs.t.i=1mαi21i=1mj=1mαiαjyiyjxiTxji=1mαiyi=0αi0,i=1,2,,m
KKT条件为:
{ α i ⩾ 0 y i ( w T x i + b ) − 1 ⩾ 0 α i ( y i ( w T x i + b ) − 1 ) = 0 \begin{aligned} \left\{\begin{matrix}\alpha_i\geqslant0\\y_i(\boldsymbol{w}^\mathbf{T}\boldsymbol{x}_i+b)-1\geqslant0 \\\alpha_i(y_i(\boldsymbol{w}^\mathbf{T}\boldsymbol{x}_i+b)-1)=0\end{matrix}\right. \end{aligned} αi0yi(wTxi+b)10αi(yi(wTxi+b)1)=0
求解该对偶问题,得到模型:
f ( x ) = ∑ i = 1 m α i y i x i T x i + b f(\boldsymbol x)=\sum^m_{i=1}\alpha_iy_i\boldsymbol x^\mathbf T_i\boldsymbol x_i+b f(x)=i=1mαiyixiTxi+b
显然,对于支持向量机来说,大部分的训练样本都不需要保留,最终结果仅与支持向量有关(因为其对应 α ≠ 0 \alpha\neq0 α=0)。

在求解方法上,可采用SMO等算法,这里不做详细展开。

6.2 核函数

若数据集在特征空间内非线性可分,则仅使用SVM基本型无法解决问题。

对于此问题,可将样本从原始空间映射到一个更高维的特征空间,使得样本在新特征空间内线性可分。(线性回归:像,太像了)

首先给出一条定理:如果原始空间是有限维,则一定存在一个高维特征空间使样本线性可分

ϕ ( x ) \phi(\boldsymbol x) ϕ(x)表示将 x \boldsymbol x x映射后的特征向量,定义核函数(kernel function) κ ( x i , x j ) = ϕ ( x i ) T ϕ ( x j ) \kappa(\boldsymbol x_i,\boldsymbol x_j)=\phi(\boldsymbol x_i)^\bold T\phi(\boldsymbol x_j) κ(xi,xj)=ϕ(xi)Tϕ(xj)

则模型可写为
f ( x ) = ∑ i = 1 m α i y i κ ( x i , x j ) + b f(\boldsymbol x)=\sum^m_{i=1}\alpha_iy_i\kappa(\boldsymbol x_i,\boldsymbol x_j)+b f(x)=i=1mαiyiκ(xi,xj)+b
只要一个对称函数所对应的核矩阵(kernel matrix)半正定,则它就可以当作核函数使用,换而言之,任何一个核函数都隐式地定义了一个再生核希尔伯特空间(RKHS)。

其中,核矩阵 K \bold K K为:
K = ( κ ( x 1 , x 1 ) ⋯ κ ( x 1 , x j ) ⋯ κ ( x 1 , x m ) ⋮ ⋱ ⋮ ⋱ ⋮ κ ( x i , x 1 ) ⋯ κ ( x i , x j ) ⋯ κ ( x i , x m ) ⋮ ⋱ ⋮ ⋱ ⋮ κ ( x m , x 1 ) ⋯ κ ( x m , x j ) ⋯ κ ( x m , x m ) ) \bold K=\begin{pmatrix} \kappa(\boldsymbol x_1,\boldsymbol x_1) & \cdots & \kappa(\boldsymbol x_1,\boldsymbol x_j) & \cdots & \kappa(\boldsymbol x_1,\boldsymbol x_m) \\ \vdots & \ddots & \vdots & \ddots & \vdots \\ \kappa(\boldsymbol x_i,\boldsymbol x_1) & \cdots & \kappa(\boldsymbol x_i,\boldsymbol x_j) & \cdots & \kappa(\boldsymbol x_i,\boldsymbol x_m) \\ \vdots & \ddots & \vdots & \ddots & \vdots \\ \kappa(\boldsymbol x_m,\boldsymbol x_1) & \cdots & \kappa(\boldsymbol x_m,\boldsymbol x_j) & \cdots & \kappa(\boldsymbol x_m,\boldsymbol x_m) \\ \end{pmatrix} K= κ(x1,x1)κ(xi,x1)κ(xm,x1)κ(x1,xj)κ(xi,xj)κ(xm,xj)κ(x1,xm)κ(xi,xm)κ(xm,xm)
但是我们一般不知道什么样的核函数是好用的,如果核函数的选择不合适,则很可能导致性能不佳。

在选择核函数方面,就需要一些经验指导了,下表列出了一些常用核函数:
在这里插入图片描述

人们发展出一系列基于核函数的学习方法,统称为核方法(kernel methods),最常见的便是将核函数引入线性学习器,使其拓展为非线性学习器。

6.3 软间隔

显然,SVM不允许有任何一个错误样本,但这在现实生活中显然是不常见的。

因此我们允许SVM在某些样本上出错,即允许某些样本不满足约束,但在最大化间隔的同时,不满足约束的样本应该尽量少。

对优化目标进行改进:
min w , b 1 2 ∣ ∣ w ∣ ∣ 2 + C ∑ i = 1 m l ( y i ( w T x i + b ) − 1 ) \begin{aligned} \underset{\boldsymbol w,b}{\text{min}}\quad &\frac{1}{2}||\boldsymbol w||^2+C\sum^m_{i=1}\mathscr l(y_i(\boldsymbol{w}^\mathbf{T}\boldsymbol{x}_i+b)-1) \\ \end{aligned} w,bmin21∣∣w2+Ci=1ml(yi(wTxi+b)1)
式中 C > 0 C>0 C>0是一个常数, l \mathscr l l是损失函数,常采用以下三种形式:
hinge损失 : l hinge ( z ) = max ⁡ ( 0 , 1 − z ) 指数损失 : l exp ( z ) = exp ⁡ ( − z ) 对率损失 : l log ( z ) = log ⁡ ( 1 + exp ⁡ ( − z ) ) \begin{aligned} &\text{hinge损失}:\mathscr l_\text{hinge}(z)=\max(0,1-z)\\ &指数损失:\mathscr l_\text{exp}(z)=\exp(-z)\\ &对率损失:\mathscr l_\text{log}(z)=\log(1+\exp(-z))\\ \end{aligned} hinge损失:lhinge(z)=max(0,1z)指数损失:lexp(z)=exp(z)对率损失:llog(z)=log(1+exp(z))
使用hinge损失,引入松弛变量解得(具体求解过程略,请参考西瓜书与南瓜书):
min w , b , ξ i 1 2 ∣ ∣ w ∣ ∣ 2 + C ∑ i = 1 m ξ i s.t. y i ( w T x i + b ) ⩾ 1 − ξ i ξ i ⩾ 0 , i = 1 , 2 , ⋯   , m \begin{aligned} \underset{\boldsymbol w,b,\xi_i}{\text{min}}\quad &\frac{1}{2}||\boldsymbol w||^2+C\sum^m_{i=1}\xi_i \\ \text{s.t.}\quad &y_i(\boldsymbol{w}^\mathbf{T}\boldsymbol{x}_i+b)\geqslant1-\xi_i\\ &\xi_i\geqslant0,\quad i=1,2,\cdots,m \\ \end{aligned} w,b,ξimins.t.21∣∣w2+Ci=1mξiyi(wTxi+b)1ξiξi0,i=1,2,,m
上式即为软间隔支持向量机,相对的,6.1节中得到的SVM为硬间隔支持向量机。

更一般的,可以将优化目标写为这种形式:
min f Ω ( f ) + C ∑ i = 1 m l ( f ( x i ) , y i ) \begin{aligned} \underset{f}{\text{min}}\quad &\Omega(f)+C\sum^m_{i=1}\mathscr l(f(\boldsymbol x_i),y_i) \\ \end{aligned} fminΩ(f)+Ci=1ml(f(xi),yi)
其中前一项称为结构风险(structural risk),表述了我们希望获得具有何种性质的模型,后一项称为经验风险(empirical tisk),用于描述模型与训练数据的契合程度。

从降低过拟合角度分析,可将前一项称为正则化项 C C C称为正则化常数,常用向量范数当作正则化项。

6.4 支持向量回归

支持向量回归(Support Vector Regression,SVR)类似线性回归,但仅当 f ( x ) f(\boldsymbol x) f(x) y y y之间的差别绝对值大于 ϵ \epsilon ϵ时才计算损失。

形象来说,就是把一条线变成了一根带子,如图:

因此,SVR的优化目标为:
min w , b 1 2 ∣ ∣ w ∣ ∣ 2 + C ∑ i = 1 m l ϵ ( f ( x i ) − y i ) l ϵ ( z ) = { 0  if  ∣ z ∣ ⩽ ϵ ∣ z ∣ − ϵ ,  otherwise  \begin{aligned} \underset{\boldsymbol w,b}{\text{min}}\quad \frac{1}{2}||\boldsymbol w||^2+C\sum^m_{i=1}\mathscr l_\epsilon(f(\boldsymbol x_i&)-y_i) \\ \mathscr l_\epsilon(z)=\begin{cases}0 & \text{ if } |z|\leqslant\epsilon \\|z|-\epsilon, & \text{ otherwise }\end{cases} \end{aligned} w,bmin21∣∣w2+Ci=1mlϵ(f(xilϵ(z)={0zϵ, if zϵ otherwise )yi)
其中 l ϵ \mathscr l_\epsilon lϵ称为 ϵ \epsilon ϵ-不敏感损失函数

形式上来说,SVR类似软间隔支持向量机,因此可以采用类似的办法求解,这里不作具体展开。

同样的,SVR也可以引入特征映射与核函数。


参考资料

周志华:《机器学习》

维基百科

Datawhale:【吃瓜教程】《机器学习公式详解》(南瓜书)与西瓜书公式推导直播合集

Lauer:【凸优化笔记6】-拉格朗日对偶(Lagrange duality)、KKT条件

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值