支持向量机SVM原理一


理论部分来源于机器学习西瓜书-周志华,此文供学习参考使用。

一、SVM概念

支持向量机(support vector machines, SVM)是一种二分类模型,它的基本模型是定义在特征空间上的间隔最大的线性分类器,间隔最大使它有别于感知机;SVM还包括核技巧,这使它成为实质上的非线性分类器。SVM的的学习策略就是间隔最大化,可形式化为一个求解凸二次规划的问题,也等价于正则化的合页损失函数的最小化问题。SVM的的学习算法就是求解凸二次规划的最优化算法。

二、SVM原理

2.1 间隔与支持向量

给定训练样本集 D = { ( x 1 , y 1 ) , ( x 2 , y 2 ) , … , ( x m , y m ) } , y i ∈ { − 1 , + 1 } D=\left\{\left(x_{1}, y_{1}\right),\left(x_{2}, y_{2}\right), \ldots,\left(x_{m}, y_{m}\right)\right\}, y_{i} \in\{-1,+1\} D={(x1,y1),(x2,y2),,(xm,ym)},yi{1,+1}, 分类学习最基本的想法就是基于训练集 D D D 在样本空间中找到一个划分超平面, 将不同类别的样本分开. 但能将训练样本分开的划分超平面可能有很多, 如图所示, 我们应该努力去找到哪一个呢?

在这里插入图片描述

直观上看, 应该去找位于两类训练样本 “正中间” 的划分超平面,因为该划分超平面对训练样本局部扰动的 “容忍” 性最好。

在样本空间中, 划分超平面可通过如下线性方程来描述:
w T x + b = 0 , \boldsymbol{w}^{\mathrm{T}} \boldsymbol{x}+b=0, wTx+b=0,其中 w = ( w 1 ; w 2 ; … ; w d ) \boldsymbol{w}=\left(w_{1} ; w_{2} ; \ldots ; w_{d}\right) w=(w1;w2;;wd) 为法向量, 决定了超平面的方向; b b b 为位移项, 决定 了超平面与原点之间的距离. 显然, 划分超平面可被法向量 w \boldsymbol{w} w 和位移 b b b 确定。
下面我们将其记为 ( w , b ) (\boldsymbol{w}, b) (w,b). 样本空间中任意点 x \boldsymbol{x} x 到超平面 ( w , b ) (\boldsymbol{w}, b) (w,b) 的距离可写为
r = ∣ w T x + b ∣ ∥ w ∥ . r=\frac{\left|\boldsymbol{w}^{\mathrm{T}} \boldsymbol{x}+b\right|}{\|\boldsymbol{w}\|} . r=w wTx+b .

点到平面的距离公式
d = ∣ A x 0 + B y 0 + C z 0 + D ∣ A 2 + B 2 + C 2 d=\frac{\left|A x_{0}+B y_{0}+C z_{0}+D\right|}{\sqrt{A^{2}+B^{2}+C^{2}}} d=A2+B2+C2 Ax0+By0+Cz0+D
公式描述: 公式中的平面方程为 A x + B y + C z + D = 0 A x+B y+C z+D=0 Ax+By+Cz+D=0 ( A , B , C ) (A,B,C) (A,B,C)为平面法向量,点 P P P 的坐标 ( x 0 , y 0 , z 0 ) , d (x_0, y_0, z_0),d (x0,y0,z0)d 为 点 P P P 到平面的距离。

假设超平面 ( w , b ) (w, b) (w,b) 能将训练样本正确分类,使得数据集的正实例点和负实例点完全正确的划分到平面两侧,建立模型为:
f ( x ) = s i g n ( w T x + b ) f(x)=sign(\boldsymbol{w}^{\mathrm{T}}{\boldsymbol{x}}+b) f(x)=sign(wTx+b)
即对于 ( x i , y i ) ∈ D \left(x_{i}, y_{i}\right) \in D (xi,yi)D, 若 w T x i + b > 0 \boldsymbol{w}^{\mathrm{T}} \boldsymbol{x}_{i}+b>0 wTxi+b>0,则有 y i = y_{i}= yi= + 1 +1 +1 ; 若 w T x i + b < 0 \boldsymbol{w}^{\mathrm{T}} \boldsymbol{x}_{i}+b<0 wTxi+b<0,则 y i = − 1 y_{i}=-1 yi=1
y i = { 1 , w T x i + b > 0 − 1 , w T x i + b < 0 y_i=\begin{cases}1,\boldsymbol{w}^{\mathrm{T}} \boldsymbol{x}_{i}+b>0 \\ -1,\boldsymbol{w}^{\mathrm{T}} \boldsymbol{x}_{i}+b<0 \end{cases} yi={1wTxi+b>01wTxi+b<0

不妨令
{ w T x i + b ⩾ + 1 , y i = + 1 w T x i + b ⩽ − 1 , y i = − 1 \begin{cases}\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{cases} {wTxi+b+1,wTxi+b1,yi=+1yi=1
如下图所示, 距离超平面最近的这几个训练样本点使上式的等号成立, 它们被称为 “支持向量” (support vector), 两个异类支持向量到超平面的距离之和为
γ = 2 ∥ w ∥ \gamma=\frac{2}{\|w\|} γ=w2
它被称为 “间隔” (margin)

在这里插入图片描述

欲找到具有 “最大间隔” (maximum margin)的划分超平面, 也就是要找到能满足约束的参数 w \boldsymbol{w} w b b b, 使得 γ \gamma γ 最大, 即
max ⁡ w , b 2 ∥ w ∥  s.t.  y i ( w T x i + b ) ⩾ 1 , i = 1 , 2 , … , m \max \limits_{\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 \text{} w,bmaxw2 s.t. yi(wTxi+b)1,i=1,2,,m

间隔貌似只与 w \boldsymbol{w} w有关,实际上 b b b通过约束条件对 w \boldsymbol{w} w取值有影响。

显然, 为了最大化间隔, 等价于最小化 ∥ w ∥ 2 \|\boldsymbol{w}\|^{2} w2. 于是可重写为
min ⁡ w , b 1 2 ∥ w ∥ 2 s.t.  y i ( w T x i + b ) ⩾ 1 , i = 1 , 2 , … , m \begin{align} &\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{align} w,bmin21w2s.t. yi(wTxi+b)1,i=1,2,,m
这就是支持向量机的基本型,是一个含有不等式约束的凸二次规划问题,可以对其使用拉格朗日乘子法得到其对偶问题(dual problem)。

2.2 对偶问题

对式(1)使用拉格朗日乘子法可得到其 “对偶问题” (dual problem). 具体来说, 对式 (1) 的每条约束添加拉格朗日乘子 α i ⩾ 0 \alpha_{i} \geqslant 0 αi0, 则该问题的拉格朗日函数可写为
L ( w , b , α ) = 1 2 ∥ w ∥ 2 + ∑ i = 1 m α i ( 1 − y i ( w T x i + b ) ) \begin{align} 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) \end{align} L(w,b,α)=21w2+i=1mαi(1yi(wTxi+b))
其中 α = ( α 1 ; α 2 ; … ; α m ) \boldsymbol{\alpha}=\left(\alpha_{1} ; \alpha_{2} ; \ldots ; \alpha_{m}\right) α=(α1;α2;;αm). 令 L ( w , b , α ) L(\boldsymbol{w}, b, \boldsymbol{\alpha}) L(w,b,α) w \boldsymbol{w} w b b b 的偏导为零可得
w = ∑ i = 1 m α i y i x i 0 = ∑ i = 1 m α i y i \begin{align} \boldsymbol{w} &=\sum_{i=1}^{m} \alpha_{i} y_{i} \boldsymbol{x}_{i} \\ 0 &=\sum_{i=1}^{m} \alpha_{i} y_{i} \end{align} w0=i=1mαiyixi=i=1mαiyi
将式(4)代入 (3), 即可将 L ( w , b , α ) L(\boldsymbol{w}, b, \boldsymbol{\alpha}) L(w,b,α) 中的 w \boldsymbol{w} w b b b 消去, 再考虑式 (5)的约束, 就得到式 (1) 的对偶问题
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{align} &\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}\\ &\text { s.t. } \sum_{i=1}^{m} \alpha_{i} y_{i}=0 \alpha_{i} \geqslant 0, \quad i=1,2, \ldots, m . \end{align} αmaxi=1mαi21i=1mj=1mαiαjyiyjxiTxj s.t. i=1mαiyi=0αi0,i=1,2,,m.
解出 α \alpha α 后, 求出 w \boldsymbol{w} w b b b 即可得到模型
f ( x ) = w T x + b = ∑ i = 1 m α i y i x i T x + b (8) \begin{aligned}\tag{8} 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} f(x)=wTx+b=i=1mαiyixiTx+b(8)
从对偶问题(6)解出的 α i \alpha_{i} αi 是式(3)中的拉格朗日乘子, 它恰对应着训练样本 ( x i , y i ) \left(\boldsymbol{x}_{i}, y_{i}\right) (xi,yi). 注意到式 (1) 中有不等式约束, 因此上述过程需满足 K K T \mathrm{KKT} KKT (Karush-Kuhn-Tucker) 条件, 即要求
{ α i ⩾ 0 y i f ( x i ) − 1 ⩾ 0 ; α i ( y i f ( x i ) − 1 ) = 0 (9) \left\{\begin{array}{l}\tag{9} \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. αi0yif(xi)10;αi(yif(xi)1)=0(9)
于是; 对任意训练样本 ( x i , y i ) \left(\boldsymbol{x}_{i}, y_{i}\right) (xi,yi), 总有 α i = 0 \alpha_{i}=0 αi=0 y i f ( x i ) = 1 y_{i} f\left(\boldsymbol{x}_{i}\right)=1 yif(xi)=1. 若 α i = 0 \alpha_{i}=0 αi=0, 则该样本将不会在式 (8) 的求和中出现, 也就不会对 f ( x ) f(x) f(x) 有任何影响; 若 α i > 0 \alpha_{i}>0 αi>0, 则必有 y i f ( x i ) = 1 y_{i} f\left(\boldsymbol{x}_{i}\right)=1 yif(xi)=1, 所对应的样本点位于最大间隔边界上, 是一个支持向量. 这显示出支持向量机的一个重要性质:训练完成后, 大部分的训练样本都不需保留, 最终模型仅与支持向量有关.

针对式(6)的求解采用 S M O SMO SMO算法,基本思路是先固定 α i \alpha_{i} αi 之外的所有参数, 然后求 α i \alpha_{i} αi 上的极值. 由于存在约束 ∑ i = 1 m α i y i = 0 \sum_{i=1}^{m} \alpha_{i} y_{i}=0 i=1mαiyi=0, 若固定 α i \alpha_{i} αi 之外的其他变量, 则 α i \alpha_{i} αi 可由其他变量导出. 于是, S M O SMO SMO 每次选择两个变量 α i \alpha_{i} αi α j \alpha_{j} αj, 并固定其他参数. 这样, 在参数初始化后, S M O SMO SMO不断执行如下两个步骤直至收敛:

  • 选取一对需更新的变量 α i \alpha_{i} αi α j \alpha_{j} αj;
  • 固定 α i \alpha_{i} αi α j \alpha_{j} αj 以外的参数, 求解式(6)获得更新后的 α i \alpha_{i} αi α j \alpha_{j} αj.
    注意到只需选取的 α i \alpha_{i} αi α j \alpha_{j} αj 中有一个不满足 K K T \mathrm{KKT} KKT 条件(9), 目标函数就会在迭代后减小. 直观来看, KKT 条件违背的程度越大, 则变量更新后可能导致的目标函数值减幅越大. 于是, S M O SMO SMO 先选取违背 KKT 条件程度最大的变量. 第二个变量应选择一个使目标函数值减小最快的变量, 但由于比较各变量所对应的目标函数值减幅的复杂度过高, 因此 S M O SMO SMO 采用了一 个启发式: 使选取的两变量所对应样本之间的间隔最大. 一种直观的解释是, 这样的两个变量有很大的差别, 与对两个相似的变量进行更新相比, 对它们进行 更新会带给目标函数值更大的变化.

S M O SMO SMO 算法之所以高效, 恰由于在固定其他参数后, 仅优化两个参数的过程 能做到非常高效. 具体来说, 仅考虑 α i \alpha_{i} αi α j \alpha_{j} αj 时, 式(6)中的约束可重写为
α i y i + α j y j = c , α i ⩾ 0 , α j ⩾ 0 \begin{equation}\tag{10} \alpha_{i} y_{i}+\alpha_{j} y_{j}=c, \quad \alpha_{i} \geqslant 0, \quad \alpha_{j} \geqslant 0\end{equation} αiyi+αjyj=c,αi0,αj0(10)
其中
c = − ∑ k ≠ i , j α k y k \begin{equation}\tag{11} c=-\sum_{k \neq i, j} \alpha_{k} y_{k}\end{equation} c=k=i,jαkyk(11)
是使 ∑ i = 1 m α i y i = 0 \sum_{i=1}^{m} \alpha_{i} y_{i}=0 i=1mαiyi=0 成立的常数. 用
α i y i + α j y j = c \begin{equation}\tag{12} \alpha_{i} y_{i}+\alpha_{j} y_{j}=c\end{equation} αiyi+αjyj=c(12)
消去式(6)中的变量 α j \alpha_{j} αj, 则得到一个关于 α i \alpha_{i} αi 的单变量二次规划问题, 仅有的 约束是 α i ⩾ 0 \alpha_{i} \geqslant 0 αi0. 不难发现, 这样的二次规划问题具有闭式解, 于是不必调用数值 优化算法即可高效地计算出更新后的 α i \alpha_{i} αi α j \alpha_{j} αj.
如何确定偏移项 b b b 呢? 注意到对任意支持向量 ( x s , y s ) \left(\boldsymbol{x}_{s}, y_{s}\right) (xs,ys) 都有 y s f ( x s ) = 1 y_{s} f\left(\boldsymbol{x}_{s}\right)=1 ysf(xs)=1, 即
y s ( ∑ i ∈ S α i y i x i T x s + b ) = 1 \begin{equation}\tag{13} y_{s}\left(\sum_{i \in S} \alpha_{i} y_{i} \boldsymbol{x}_{i}^{\mathrm{T}} \boldsymbol{x}_{s}+b\right)=1\end{equation} ys(iSαiyixiTxs+b)=1(13)
其中 S = { i ∣ α i > 0 , i = 1 , 2 , … , m } S=\left\{i \mid \alpha_{i}>0, i=1,2, \ldots, m\right\} S={iαi>0,i=1,2,,m} 为所有支持向量的下标集. 理论上, 可选取任意支持向量并通过求解式 (13)获得 b b b, 但现实任务中常采用一种更鲁棒的做法: 使用所有支持向量求解的平均值
b = 1 ∣ S ∣ ∑ s ∈ S ( y s − ∑ i ∈ S α i y i x i T x s ) \begin{equation}\tag{14} b=\frac{1}{|S|} \sum_{s \in S}\left(y_{s}-\sum_{i \in S} \alpha_{i} y_{i} x_{i}^{\mathrm{T}} x_{s}\right) \end{equation} b=S1sS(ysiSαiyixiTxs)(14)

2.3 核函数

核函数:令 X \mathcal{X} X 为输入空间, κ ( ⋅ , ⋅ ) \kappa(\cdot, \cdot) κ(,) 是定义在 X × X \mathcal{X} \times \mathcal{X} X×X 上的对称 函数, 则 κ \kappa κ 是核函数当且仅当对于任意数据 D = { x 1 , x 2 , … , x m } D=\left\{x_{1}, x_{2}, \ldots, x_{m}\right\} D={x1,x2,,xm}, “核矩阵” (kernel matrix) K \mathbf{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 ) ] . \mathbf{K}=\left[\begin{array}{ccccc} \kappa\left(\boldsymbol{x}_{1}, \boldsymbol{x}_{1}\right) & \cdots & \kappa\left(\boldsymbol{x}_{1}, \boldsymbol{x}_{j}\right) & \cdots & \kappa\left(\boldsymbol{x}_{1}, \boldsymbol{x}_{m}\right) \\ \vdots & \ddots & \vdots & \ddots & \vdots \\ \kappa\left(\boldsymbol{x}_{i}, \boldsymbol{x}_{1}\right) & \cdots & \kappa\left(\boldsymbol{x}_{i}, \boldsymbol{x}_{j}\right) & \cdots & \kappa\left(\boldsymbol{x}_{i}, \boldsymbol{x}_{m}\right) \\ \vdots & \ddots & \vdots & \ddots & \vdots \\ \kappa\left(\boldsymbol{x}_{m}, \boldsymbol{x}_{1}\right) & \cdots & \kappa\left(\boldsymbol{x}_{m}, \boldsymbol{x}_{j}\right) & \cdots & \kappa\left(\boldsymbol{x}_{m}, \boldsymbol{x}_{m}\right) \end{array}\right] . K= κ(x1,x1)κ(xi,x1)κ(xm,x1)κ(x1,xj)κ(xi,xj)κ(xm,xj)κ(x1,xm)κ(xi,xm)κ(xm,xm) .
只要一个对称函数所对应的核矩阵半正定, 它就能作为核函数使用. 事实上, 对于一个半正定核矩阵, 总能找到一个与之对应的映射 ϕ \phi ϕ. 换言之, 任何一个核函数都隐式地定义了一个称为 “再生核希尔伯特空间” (Reproducing Kernel Hilbert Space, 简称 RKHS)的特征空间.

我们希望样本在特征空间内线性可分, 因此特征空间的好坏对支持向量机的性能至关重要. 需注意的是, 在不知道特征映射的形式时, 我们并不知道什么样的核函数是合适的, 而核函数也仅是隐式地定义了这个特征空间. 于是, “核函数选择” 成为支持向量机的最大变数. 若核函数选择不合适, 则意味着将样本映射到了一个不合适的特征空间, 很可能导致性能不佳.

常用核函数如下表所示:
 名称   表达式   参数   线性核  κ ( x i , x j ) = x i T x j  多项式核  κ ( x i , x j ) = ( x i T x j ) d d ⩾ 1  为多项式的次数   高斯核  κ ( x i , x j ) = exp ⁡ ( − ∥ x i − x j ∥ 2 2 σ 2 ) σ > 0  为高斯核的带宽 (width)   拉普拉斯核  κ ( x i , x j ) = exp ⁡ ( − ∥ x i − x j ∥ σ ) σ > 0  Sigmoid 核  κ ( x i , x j ) = tanh ⁡ ( β x i T x j + θ ) tanh ⁡  为双曲正切函数,  β > 0 , θ < 0 \begin{aligned} &\begin{array}{lll} \hline \text { 名称 } & \text { 表达式 } & \text { 参数 } \\ \hline \text { 线性核 } & \kappa\left(\boldsymbol{x}_{i}, \boldsymbol{x}_{j}\right)=\boldsymbol{x}_{i}^{\mathrm{T}} \boldsymbol{x}_{j} & \\ \text { 多项式核 } & \kappa\left(\boldsymbol{x}_{i}, \boldsymbol{x}_{j}\right)=\left(\boldsymbol{x}_{i}^{\mathrm{T}} \boldsymbol{x}_{j}\right)^{d} & d \geqslant 1 \text { 为多项式的次数 } \\ \text { 高斯核 } & \kappa\left(\boldsymbol{x}_{i}, \boldsymbol{x}_{j}\right)=\exp \left(-\frac{\left\|\boldsymbol{x}_{i}-\boldsymbol{x}_{j}\right\|^{2}}{2 \sigma^{2}}\right) & \sigma>0 \text { 为高斯核的带宽 (width) } \\ \text { 拉普拉斯核 } & \kappa\left(\boldsymbol{x}_{i}, \boldsymbol{x}_{j}\right)=\exp \left(-\frac{\left\|\boldsymbol{x}_{i}-\boldsymbol{x}_{j}\right\|}{\sigma}\right) & \sigma>0 \\ \text { Sigmoid 核 } & \kappa\left(\boldsymbol{x}_{i}, \boldsymbol{x}_{j}\right)=\tanh \left(\beta \boldsymbol{x}_{i}^{\mathrm{T}} \boldsymbol{x}_{j}+\theta\right) & \tanh \text { 为双曲正切函数, } \beta>0, \theta<0 \\ \hline \end{array} \end{aligned}  名称  线性核  多项式核  高斯核  拉普拉斯核  Sigmoid   表达式 κ(xi,xj)=xiTxjκ(xi,xj)=(xiTxj)dκ(xi,xj)=exp(2σ2xixj2)κ(xi,xj)=exp(σxixj)κ(xi,xj)=tanh(βxiTxj+θ) 参数 d1 为多项式的次数 σ>0 为高斯核的带宽 (width) σ>0tanh 为双曲正切函数β>0,θ<0
此外, 还可通过函数组合得到, 例如:

  • κ 1 \kappa_{1} κ1 κ 2 \kappa_{2} κ2 为核函数, 则对于任意正数 γ 1 、 γ 2 \gamma_{1} 、 \gamma_{2} γ1γ2, 其线性组合
    γ 1 κ 1 + γ 2 κ 2 \gamma_{1} \kappa_{1}+\gamma_{2} \kappa_{2} γ1κ1+γ2κ2
    也是核函数;
  • κ 1 \kappa_{1} κ1 κ 2 \kappa_{2} κ2 为核函数, 则核函数的直积
    κ 1 ⊗ κ 2 ( x , z ) = κ 1 ( x , z ) κ 2 ( x , z ) \kappa_{1} \otimes \kappa_{2}(\boldsymbol{x}, \boldsymbol{z})=\kappa_{1}(\boldsymbol{x}, \boldsymbol{z}) \kappa_{2}(\boldsymbol{x}, \boldsymbol{z}) κ1κ2(x,z)=κ1(x,z)κ2(x,z)
    也是核函数;
  • κ 1 \kappa_{1} κ1 为核函数, 则对于任意函数 g ( x ) g(\boldsymbol{x}) g(x),
    κ ( x , z ) = g ( x ) κ 1 ( x , z ) g ( z ) \kappa(\boldsymbol{x}, \boldsymbol{z})=g(\boldsymbol{x}) \kappa_{1}(\boldsymbol{x}, \boldsymbol{z}) g(\boldsymbol{z}) κ(x,z)=g(x)κ1(x,z)g(z)
    也是核函数.

当原始样本空间不存在划分两类样本的超平面,如下图所示:

在这里插入图片描述

对这样的问题, 可将样本从原始空间映射到一个更高维的特征空间, 使得样本在这个特征空间内线性可分. 将原始的二维空间映射 到一个合适的三维空间, 就能找到一个合适的划分超平面. 如果原始空间是有限维, 即属性数有限, 那么一定存在一个高维特征空间使样本可分.
ϕ ( x ) \phi(x) ϕ(x) 表示将 x \boldsymbol{x} x 映射后的特征向量, 于是, 在特征空间中划分超平面所对 应的模型可表示为
f ( x ) = w T ϕ ( x ) + b (15) \begin{aligned}\tag{15} f(\boldsymbol{x})=\boldsymbol{w}^{\mathrm{T}} \phi(\boldsymbol{x})+b \end{aligned} f(x)=wTϕ(x)+b(15)
其中 w \boldsymbol{w} w b b b 是模型参数. 类似式 (15), 有
min ⁡ w , b 1 2 ∥ w ∥ 2 s.t.  y i ( w T ϕ ( x i ) + b ) ⩾ 1 , i = 1 , 2 , … , m (16) \begin{aligned}\tag{16} &\min _{\boldsymbol{w}, b} \frac{1}{2}\|\boldsymbol{w}\|^{2}\\ &\text{s.t. } y_{i}\left(\boldsymbol{w}^{\mathrm{T}} \phi\left(\boldsymbol{x}_{i}\right)+b\right) \geqslant 1, \quad i=1,2, \ldots, m \end{aligned} w,bmin21w2s.t. yi(wTϕ(xi)+b)1,i=1,2,,m(16).
其对偶问题是
max ⁡ α ∑ i = 1 m α i − 1 2 ∑ i = 1 m ∑ j = 1 m α i α j y i y j ϕ ( x i ) T ϕ ( x j ) (17) \tag{17}\max _{\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) αmaxi=1mαi21i=1mj=1mαiαjyiyjϕ(xi)Tϕ(xj)(17)
s.t.  ∑ i = 1 m α i y i = 0 , α i ⩾ 0 , i = 1 , 2 , … , m . (18) \begin{array}{ll}\tag{18} \text {s.t. } & \sum_{i=1}^{m} \alpha_{i} y_{i}=0, &\alpha_{i} \geqslant 0, \quad i=1,2, \ldots, m . \end{array} s.t. i=1mαiyi=0,αi0,i=1,2,,m.(18)
求解式 (17) 涉及到计算 ϕ ( x i ) T ϕ ( x j ) \phi\left(\boldsymbol{x}_{i}\right)^{\mathrm{T}} \phi\left(\boldsymbol{x}_{j}\right) ϕ(xi)Tϕ(xj), 这是样本 x i \boldsymbol{x}_{i} xi x j \boldsymbol{x}_{j} xj 映射到特征空间 之后的内积. 由于特征空间维数可能很高, 甚至可能是无穷维, 因此直接计算 ϕ ( x i ) T ϕ ( x j ) \phi\left(\boldsymbol{x}_{i}\right)^{\mathrm{T}} \phi\left(\boldsymbol{x}_{j}\right) ϕ(xi)Tϕ(xj) 通常是困难的. 为了避开这个障碍, 可以设想这样一个函数:
κ ( x i , x j ) = ⟨ ϕ ( x i ) , ϕ ( x j ) ⟩ = ϕ ( x i ) T ϕ ( x j ) (19) \tag{19}\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) κ(xi,xj)=ϕ(xi),ϕ(xj)=ϕ(xi)Tϕ(xj)(19)
x i \boldsymbol{x}_{i} xi x j \boldsymbol{x}_{j} xj 在特征空间的内积等于它们在原始样本空间中通过函数 κ ( ⋅ , ⋅ ) \kappa(\cdot, \cdot) κ(,) 计算 的结果. 有了这样的函数, 我们就不必直接去计算高维甚至无穷维特征空间中 的内积, 于是式 (17) 可重写为
max ⁡ α ∑ i = 1 m α i − 1 2 ∑ i = 1 m ∑ j = 1 m α i α j y i y j κ ( x i , x j )  s.t.  ∑ i = 1 m α i y i = 0 , α i ⩾ 0 , i = 1 , 2 , … , m (20) \begin{aligned}\tag{20} \max _{\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} \kappa\left(\boldsymbol{x}_{i}, \boldsymbol{x}_{j}\right) \\ \text { s.t. } & \sum_{i=1}^{m} \alpha_{i} y_{i}=0 , \alpha_{i} \geqslant 0, \quad i=1,2, \ldots, m \end{aligned} αmax s.t. i=1mαi21i=1mj=1mαiαjyiyjκ(xi,xj)i=1mαiyi=0,αi0,i=1,2,,m(20)
求解后即可得到
f ( x ) = w T ϕ ( x ) + b = ∑ i = 1 m α i y i ϕ ( x i ) T ϕ ( x ) + b = ∑ i = 1 m α i y i κ ( x , x i ) + b . (21) \begin{aligned}\tag{21} f(\boldsymbol{x}) &=\boldsymbol{w}^{\mathrm{T}} \phi(\boldsymbol{x})+b \\ &=\sum_{i=1}^{m} \alpha_{i} y_{i} \phi\left(\boldsymbol{x}_{i}\right)^{\mathrm{T}} \phi(\boldsymbol{x})+b \\ &=\sum_{i=1}^{m} \alpha_{i} y_{i} \kappa\left(\boldsymbol{x}, \boldsymbol{x}_{i}\right)+b . \end{aligned} f(x)=wTϕ(x)+b=i=1mαiyiϕ(xi)Tϕ(x)+b=i=1mαiyiκ(x,xi)+b.(21)
这里的函数 κ ( ⋅ , ⋅ ) \kappa(\cdot, \cdot) κ(,) 就是 “核函数” (kernel function). 式(7) 显示出模型最优解可通过训练样本的核函数展开, 这一展式亦称 “支持向量展式”.

由于篇幅限制,后续内容链接: 支持向量机原理(二)

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐


学习编程是顺着互联网的发展潮流,是一件好事。新手如何学习编程?其实不难,不过在学习编程之前你得先了解你的目的是什么?这个很重要,因为目的决定你的发展方向、决定你的发展速度。
IT行业是什么工作做什么?IT行业的工作有:产品策划类、页面设计类、前端与移动、开发与测试、营销推广类、数据运营类、运营维护类、游戏相关类等,根据不同的分类下面有细分了不同的岗位。
女生学Java好就业吗?女生适合学Java编程吗?目前有不少女生学习Java开发,但要结合自身的情况,先了解自己适不适合去学习Java,不要盲目的选择不适合自己的Java培训班进行学习。只要肯下功夫钻研,多看、多想、多练
Can’t connect to local MySQL server through socket \'/var/lib/mysql/mysql.sock问题 1.进入mysql路径
oracle基本命令 一、登录操作 1.管理员登录 # 管理员登录 sqlplus / as sysdba 2.普通用户登录
一、背景 因为项目中需要通北京网络,所以需要连vpn,但是服务器有时候会断掉,所以写个shell脚本每五分钟去判断是否连接,于是就有下面的shell脚本。
BETWEEN 操作符选取介于两个值之间的数据范围内的值。这些值可以是数值、文本或者日期。
假如你已经使用过苹果开发者中心上架app,你肯定知道在苹果开发者中心的web界面,无法直接提交ipa文件,而是需要使用第三方工具,将ipa文件上传到构建版本,开...
下面的 SQL 语句指定了两个别名,一个是 name 列的别名,一个是 country 列的别名。**提示:**如果列名称包含空格,要求使用双引号或方括号:
在使用H5混合开发的app打包后,需要将ipa文件上传到appstore进行发布,就需要去苹果开发者中心进行发布。​
+----+--------------+---------------------------+-------+---------+
数组的声明并不是声明一个个单独的变量,比如 number0、number1、...、number99,而是声明一个数组变量,比如 numbers,然后使用 nu...
第一步:到appuploader官网下载辅助工具和iCloud驱动,使用前面创建的AppID登录。
如需删除表中的列,请使用下面的语法(请注意,某些数据库系统不允许这种在数据库表中删除列的方式):
前不久在制作win11pe,制作了一版,1.26GB,太大了,不满意,想再裁剪下,发现这次dism mount正常,commit或discard巨慢,以前都很快...
赛门铁克各个版本概览:https://knowledge.broadcom.com/external/article?legacyId=tech163829
实测Python 3.6.6用pip 21.3.1,再高就报错了,Python 3.10.7用pip 22.3.1是可以的
Broadcom Corporation (博通公司,股票代号AVGO)是全球领先的有线和无线通信半导体公司。其产品实现向家庭、 办公室和移动环境以及在这些环境...
发现个问题,server2016上安装了c4d这些版本,低版本的正常显示窗格,但红色圈出的高版本c4d打开后不显示窗格,
TAT:https://cloud.tencent.com/document/product/1340