第九章 支持向量机(一)

  1. 感知机介绍(较详细) - 知乎 (zhihu.com)
  2. 什么是感知机? - 知乎 (zhihu.com)
  3. (12 封私信 / 80 条消息) 如何通俗易懂地解释支持向量回归(support vector regression)? - 知乎 (zhihu.com)
  4. (48条消息) SMO算法笔记及个人理解_smo算法步骤_Anchor_Jun的博客-CSDN博客
  5. 支持向量机原理(四)SMO算法原理 - 刘建平Pinard - 博客园 (cnblogs.com)
  6. 机器学习算法实践-SVM中的SMO算法 - 知乎 (zhihu.com)

感知机二分类,线性,判别
假设空间定义在特征空间中的所有线性分类模型
策略定义损失函数并极小化,误分类点到超平面的总距离最小,直到为0
备注超平面法向量,截距线性可分数据集
求解方式梯度下降法,迭代极小化,迭代公式
备注1感知机的解不唯一,和初值有关,和误分点的调整顺序有关

一 前言

近期参与到了手写AI的车道线检测的学习中去,以此系列笔记记录学习与思考的全过程。车道线检测系列会持续更新,力求完整精炼,引人启示。所需前期知识,可以结合手写AI进行系统的学习。

二 感知机简介


  1. 感知机的激活函数是符号函数

  2. 分离超平面将特征空间划分为两个部分,一部分是正类, 一部分是负类。法向量指向的一侧为正类,另一侧为负类

  3. 简单易于实现

  4. 感知机(perceptron)是二类分类的线性分类模型,其输入为实例的特征向量,输出为实例的类别

  5. 感知机对应于输入空间中将实例划分为正负两类的分离超平面,属于判别模型前提:**感知器模型的前提是:**数据是线性可分的

目的:

感知机学习旨在求出将训练数据进行线性划分的分离超平面,为此,导入基于误分类的损失函数,利用梯度下降法对损失函数进行极小化,求得感知机模型

2.1 损失函数


正确分类(预测和实际类别一致):yθx>0,错误分类(预测和实际类别不一致):yθx<0;
所以我们可以定义我们的损失函数为:期望使分类错误的所有样本(k条样本)到超平面的距离之和最小

L = ∑ i = 1 k − y ( i ) θ ∙ x ( i ) ∥ θ ∥ 2 L=\sum_{i=1}^k\frac{-y^{(i)}\theta\bullet x^{(i)}}{\left\|\theta\right\|_2} L=i=1kθ2y(i)θx(i)

因为此时分子和分母中都包含了θ值,当分子扩大N倍的时候,分母也会随之扩大,也就是说分子和分母之间存在倍数关系,所以可以固定分子或者分母为1,然后求另一个即分子或者分母的倒数的最小化作为损失函数,简化后的损失函数为(分母为1):

L = − ∑ i = 1 k y ( i ) θ ∙ x ( i ) L=-\sum_{i=1}^k y^{(i)}\theta\bullet x^{(i)} L=i=1ky(i)θx(i)
求解损失函数


直接使用梯度下降法就可以对损失函数求解,不过由于这里的m是分类错误的样本点集合,不是固定的,所以我们不能使用批量梯度下降法(BGD)求解,只能使用随机梯度下降(SGD)或者小批量梯度下降(MBGD)

一般在感知器模型中使用SGD来求解

2.2 感知机算法的原始形式


输入:KaTeX parse error: Undefined control sequence: \mit at position 66: … \cal X=\bf R^n\̲m̲i̲t̲ ̲, y_i\in \cal Y…

输出: w , b ; f ( x ) = s i g n ( w ⋅ x + b ) w,b;f(x)=sign(w\cdot x+b) w,b;f(x)=sign(wx+b)

  1. 选取初值 w 0 , b 0 w_0,b_0 w0,b0

  2. 训练集中选取数据 ( x i , y i ) (x_i,y_i) (xi,yi)

  3. 如果 y i ( w ⋅ x i + b ) ⩽ 0 y_i(w\cdot x_i+b)\leqslant 0 yi(wxi+b)0
    w ← w + η y i x i b ← b + η y i w\leftarrow w+\eta y_ix_i \nonumber\\ b\leftarrow b+\eta y_i ww+ηyixibb+ηyi

  4. 转至(2),直至训练集中没有误分类点

这种学习算法直观上有如下解释

当一个实例点被误分类,及位于分离超平面的错误一侧时,则调整w, b的值,使分离超平面向该误分类点的一侧移动,以减少该误分类点与超平面的距离,直至超平面越过该误分类点使其被正确分类

感知机原始形式是收敛的

对于线性可分数据集,感知机学习算法原始形式收敛,即经过有限次迭代可以得到一个将训练数据集完全正确划分的分离超平面及感知机模型

lledwb.png
  1. 定理表明,误分类的次数k是有上界的,经过有限次搜索可以找到将训练数据完全分开的分离超平面,也就是说,当训练数据集线性可分时,感知机学习算法原始形式迭代是收敛的

  2. 感知机学习算法存在很多解,而为了得到唯一的超平面,需要对分离超平面增加约束条件,这就是之后会讲解的线性支持向量机的想法,当训练集线性不可分时,感知机学习算法不收敛,迭代结果会发生震荡

2.3 感知机算法的对偶形式


原始的感知机模型只关注了分类的正确性,并没有考虑到样本点之间的间隔最大间隔目标函数引入了间隔的概念,通过最大化样本点到超平面的距离,来增加分类的鲁棒性和泛化能力

T = { ( x 1 , y 1 ) , ( x 2 , y 2 ) , … , ( x N , y N ) } x i ∈ X = R n , y i ∈ Y = { − 1 , + 1 } , i = 1 , 2 , … , N ; 0 < η ⩽ 1 T=\{(x_1,y_1),(x_2,y_2),\dots,(x_N,y_N)\}\\ x_i\in \cal{X}=\bf{R}^n , y_i\in \cal{Y} =\{-1,+1\}, i=1,2,\dots, N; 0< \eta \leqslant 1 T={(x1,y1),(x2,y2),,(xN,yN)}xiX=Rn,yiY={1,+1},i=1,2,,N;0<η1

输出:
α , b ; f ( x ) = s i g n ( ∑ j = 1 N α j y j x j ⋅ x + b ) α = ( α 1 , α 2 , ⋯   , α N ) T \alpha ,b; f(x)=sign\left(\sum_{j=1}^N\alpha_jy_jx_j\cdot x+b\right)\nonumber\\ \alpha=(\alpha_1,\alpha_2,\cdots,\alpha_N)^T α,b;f(x)=sign(j=1Nαjyjxjx+b)α=(α1,α2,,αN)T

  1. α ← 0 , b ← 0 \alpha \leftarrow 0,b\leftarrow 0 α0,b0

  2. 训练集中选取数据 ( x i , y i ) (x_i,y_i) (xi,yi)

  3. 如果 y i ( ∑ j = 1 N α j y j x j ⋅ x + b ) ⩽ 0 y_i\left(\sum_{j=1}^N\alpha_jy_jx_j\cdot x+b\right) \leqslant 0 yi(j=1Nαjyjxjx+b)0

α i ← α i + η b ← b + η y i \alpha_i\leftarrow \alpha_i+\eta \nonumber\\ b\leftarrow b+\eta y_i αiαi+ηbb+ηyi

  1. 转至(2),直至训练集中没有误分类点
lGkLyB.png#pic_center

注意理解对偶性形式以及由来

对偶形式中训练实例仅以内积的形式出现,为了方便,可以预先将训练集中实例间的内积计算出来并以矩阵形式存储,这个矩阵就是所谓的Gram矩阵(Gram matrix)

G = [ x i ∙ x j ] M × N G=[x_i\bullet x_j]_{M\times N} G=[xixj]M×N

[ α 1 y 1 α 2 y 2 … α N y N ] [ x 1 x 1 x 1 x 2 … x 1 x N x 2 x 1 x 2 x 2 … x 2 x N … … … … x N x 1 x N x 1 … x N x N ] \begin{bmatrix}\alpha_1y_1&\alpha_2y_2&\dots&\alpha_N y_N\end{bmatrix}\begin{bmatrix}x_1x_1&x_1x_2&\dots&x_1x_N\\ x_2x_1&x_2x_2&\dots&x_2x_N\\ \dots&\dots&\dots&\dots\\ x_N x_1&x_N x_1&\dots&x_N x_N\end{bmatrix} [α1y1α2y2αNyN] x1x1x2x1xNx1x1x2x2x2xNx1x1xNx2xNxNxN

2.4 关于感知机问题


  1. η = 1 \eta=1 η=1
  2. α i ← α i + 1 , b ← b + y i \alpha_i\leftarrow \alpha_i+1, b\leftarrow b+y_i αiαi+1,bb+yi

以上:

  1. 为什么 η \eta η选了1,这样得到的值数量级是1
  2. 这个表达式中用到了上面的 η = 1 \eta=1 η=1这个结果,已经做了简化

所以,这里可以体会下,调整学习率$\eta $的作用。学习率决定了参数空间


  1. 损失函数 L ( w , b ) = − ∑ x i ∈ M y i ( w ⋅ x i + b ) L(w,b)=-\sum_{x_i\in M}y_i(w\cdot x_i+b) L(w,b)=xiMyi(wxi+b),其中 M M M 是错分的点集合,线性可分的数据集肯定能找到超平面 S S S, 所以这个损失函数最值是0

  2. 如果正确分类, y i ( w ⋅ x i + b ) = ∣ w ⋅ x i + b ∣ y_i(w\cdot x_i+b)=|w\cdot x_i+b| yi(wxi+b)=wxi+b ,错误分类的话,为了保证正数就加个负号,这就是损失函数里面那个负号,这个就是函数间隔

  3. 1 ∣ ∣ w ∣ ∣ \frac{1}{||w||} ∣∣w∣∣1 用来归一化超平面法向量,得到几何间隔,也就是点到超平面的距离, 函数间隔和几何间隔的差异在于同一个超平面 ( w , b ) (w,b) (w,b) 参数等比例放大成 ( k w , k b ) (kw,kb) (kw,kb) 之后,虽然表示的同一个超平面,但是点到超平面的函数间隔也放大了,但是几何间隔是不变的

  4. 具体算法实现的时候, w w w要初始化,然后每次迭代针对错分点进行调整,既然要初始化,那如果初始化个 ∣ ∣ w ∣ ∣ = 1 ||w||=1 ∣∣w∣∣=1 的情况也就不用纠结了,和不考虑 1 ∣ ∣ w ∣ ∣ \frac{1}{||w||} ∣∣w∣∣1 是一样的了

三 约束优化问题


3.1 拉格朗日乘子法一般形式


拉格朗日乘子法就是当我们的优化函数存在等值约束的情况下的一种最优化求解方式;其中参
数α被称为拉格朗日乘子,要求α不等于0
min ⁡ x f ( x ) s . t : h i ( x ) = 0 , i = 1 , 2 , . . . , p                         ↓ min ⁡ x f ( x ) + ∑ i = 1 p α i h i ( x ) ; α i ≠ 0 \begin{aligned} &\operatorname*{min}_{x}f(x) \\ &s.t:h_i(x)=0,i=1,2,...,p \\ \\ & \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \downarrow \\ &\operatorname*{min}_{x}f(x)+\sum_{i=1}^{p}\alpha_{i}h_{i}(x);\alpha_{i}\neq0 \end{aligned} xminf(x)s.t:hi(x)=0,i=1,2,...,p                       xminf(x)+i=1pαihi(x);αi=0

3.2 进一步拉格朗日探究


拉格朗日
强对偶关系
梯度等于0
带约束最小值
无约束的形式
对偶性的形式
含有一个参数
  1. 非线性带来高维转换(模型)

  2. 对偶表示带来内积(优化)

原问题和对偶问题满足强对偶关系的充要条件为其满足 KKT 条件

一般地,约束优化问题(原问题)可以写成:
$$
\begin{align}

&\min_{x\in\mathbb{R^p}}f(x)\
&s.t.\ m_i(x)\le0,i=1,2,\cdots,M\
&\ \ \ \ \ \ \ \ n_j(x)=0,j=1,2,\cdots,N

\end{align}
∗ ∗ 定义 L a g r a n g e 函数: ∗ ∗ **定义 Lagrange 函数:** 定义Lagrange函数:
L(x,\lambda,\eta)=f(x)+\sum\limits_{i=1}M\lambda_im_i(x)+\sum\limits_{i=1}N\eta_in_i(x)
$$
那么原问题可以等价于无约束形式:

min ⁡ x ∈ R p max ⁡ λ , η L ( x , λ , η )   s . t .   λ i ≥ 0 \min_{x\in\mathbb{R}^p}\max_{\lambda,\eta}L(x,\lambda,\eta)\ s.t.\ \lambda_i\ge0 xRpminλ,ηmaxL(x,λ,η) s.t. λi0

这是由于,当满足原问题的不等式约束的时候, λ i = 0 \lambda_i=0 λi=0 才能取得最大值,直接等价于原问题,如果不满足原问题的不等式约束,那么最大值就为 + ∞ +\infin +,由于需要取最小值,于是不会取到这个情况

这个问题的对偶形式:
max ⁡ λ , η min ⁡ x ∈ R p L ( x , λ , η )   s . t .   λ i ≥ 0 \max_{\lambda,\eta}\min_{x\in\mathbb{R}^p}L(x,\lambda,\eta)\ s.t.\ \lambda_i\ge0 λ,ηmaxxRpminL(x,λ,η) s.t. λi0
对偶问题是关于 $ \lambda, \eta$ 的最大化问题

由于:
max ⁡ λ i , η j min ⁡ x L ( x , λ i , η j ) ≤ min ⁡ x max ⁡ λ i , η j L ( x , λ i , η j ) \max_{\lambda_i,\eta_j}\min_{x}L(x,\lambda_i,\eta_j)\le\min_{x}\max_{\lambda_i,\eta_j}L(x,\lambda_i,\eta_j) λi,ηjmaxxminL(x,λi,ηj)xminλi,ηjmaxL(x,λi,ηj)

证明:显然有 min ⁡ x L ≤ L ≤ max ⁡ λ , η L \min\limits_{x}L\le L\le\max\limits_{\lambda,\eta}L xminLLλ,ηmaxL,于是显然有 max ⁡ λ , η min ⁡ x L ≤ L \max\limits_{\lambda,\eta}\min\limits_{x}L\le L λ,ηmaxxminLL,且 min ⁡ x max ⁡ λ , η L ≥ L \min\limits_{x}\max\limits_{\lambda,\eta}L\ge L xminλ,ηmaxLL

对偶问题的解小于原问题,有两种情况:

  1. **强对偶:**可以取等于号
  2. **弱对偶:**不可以取等于号

其实这一点也可以通过一张图来说明:

lunSc9.png#pic_center

对于一个凸优化问题,有如下定理:

如果凸优化问题满足某些条件如 Slater 条件,那么它和其对偶问题满足强对偶关系。记问题的定义域为: D = d o m f ( x ) ∩ d o m m i ( x ) ∩ d o m n j ( x ) \mathcal{D}=domf(x)\cap dom m_i(x)\cap domn_j(x) D=domf(x)dommi(x)domnj(x)。于是 Slater 条件为:
∃ x ^ ∈ R e l i n t D   s . t .   ∀ i = 1 , 2 , ⋯   , M , m i ( x ) < 0 \exist\hat{x}\in Relint\mathcal{D}\ s.t.\ \forall i=1,2,\cdots,M,m_i(x)\lt0 x^RelintD s.t. i=1,2,,M,mi(x)<0
其中 Relint 表示相对内部(不包含边界的内部)。

  1. 对于大多数凸优化问题,Slater 条件成立
  2. 松弛 Slater 条件,如果 M 个不等式约束中,有 K 个函数为仿射函数,那么只要其余的函数满足 Slater 条件即可

上面介绍了原问题和对偶问题的对偶关系,但是实际还需要对参数进行求解,求解方法使用 KKT 条件进行:

KKT 条件强对偶关系是等价关系。KKT 条件对最优解的条件为:

  1. 可行域:
    m i ( x ∗ ) ≤ 0 n j ( x ∗ ) = 0 λ ∗ ≥ 0 \begin{align} m_i(x^*)\le0\\ n_j(x^*)=0\\ \lambda^*\ge0 \end{align} mi(x)0nj(x)=0λ0

  2. 互补松弛 λ ∗ m i ( x ∗ ) = 0 , ∀ m i \lambda^*m_i(x^*)=0,\forall m_i λmi(x)=0,mi,对偶问题的最佳值为 d ∗ d^* d,原问题为 p ∗ p^* p
    d ∗ = max ⁡ λ , η g ( λ , η ) = g ( λ ∗ , η ∗ ) = min ⁡ x L ( x , λ ∗ , η ∗ ) ≤ L ( x ∗ , λ ∗ , η ∗ ) = f ( x ∗ ) + ∑ i = 1 M λ ∗ m i ( x ∗ ) ≤ f ( x ∗ ) = p ∗ \begin{align} d^*&=\max_{\lambda,\eta}g(\lambda,\eta)=g(\lambda^*,\eta^*)\nonumber\\ &=\min_{x}L(x,\lambda^*,\eta^*)\nonumber\\ &\le L(x^*,\lambda^*,\eta^*)\nonumber\\ &=f(x^*)+\sum\limits_{i=1}^M\lambda^*m_i(x^*)\nonumber\\ &\le f(x^*)=p^* \end{align} d=λ,ηmaxg(λ,η)=g(λ,η)=xminL(x,λ,η)L(x,λ,η)=f(x)+i=1Mλmi(x)f(x)=p

    为了满足相等,两个不等式必须成立,于是,对于第一个不等于号,需要有梯度为0条件,对于第二个不等于号需要满足互补松弛条件

  3. 梯度为0: ∂ L ( x , λ ∗ , η ∗ ) ∂ x ∣ x = x ∗ = 0 \frac{\partial L(x,\lambda^*,\eta^*)}{\partial x}|_{x=x^*}=0 xL(x,λ,η)x=x=0

四 支持向量机(Support Vector Machine)


4.1 简述


支持向量机线性
核技巧非线性
SVM体现了结构风险最小化的思想
算法最大间隔法
  1. 基本模型是定义在特征空间上的间隔最大的线性分类器

  2. 支持向量机还包括核技巧, 这使它称为实质上的非线性分类器

  3. KKT条件是该最优化问题的充分必要条件

  4. 样本比较多的时候,Boosting和RF往往能得到最好的效果,但是数据集较少的时候,SVM的效果可能会比较好

    1. 最大间隔法,针对线性可分支持向量机,直接求 w ∗ , b ∗ w^*,b^* w,b
    2. 学习的对偶算法,求 α \alpha α进一步求 w ∗ , b ∗ w^*,b^* w,b
    3. 线性支持向量机的学习算法, 增加超参 C C C,求 α \alpha α进一步求 w ∗ , b ∗ w^*,b^* w,b
    4. 非线性支持向量机的学习算法,进一步引入核函数 K ( x , z ) K(x,z) K(x,z),求 α \alpha α进一步求 b ∗ b^* b
    5. 序列最小最优化

支撑向量机(SVM)算法在分类问题中有着重要地位,其主要思想是最大化两类之间的间隔。按照数据集的特点:

  1. 线性可分问题,如之前的感知机算法处理的问题
  2. 线性可分,只有一点点错误点,如感知机算法发展出来的 Pocket 算法处理的问题
  3. 非线性问题完全不可分,如在感知机问题发展出来的多层感知机和深度学习

这三种情况对于 SVM 分别有下面三种处理手段

  1. hard-margin SVM
  2. soft-margin SVM
  3. kernel Method

SVM 的求解中,大量用到了 Lagrange 乘子法,前期已经对这种方法进行了介绍。

4.2 原理


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

思想:

在感知器模型中,我们可以找到多个可以分类的超平面将数据分开,并且优化时希望所有的点(预测正确的点)都离超平面尽可能的远,但是实际上离超平面足够远的点基本上都是被正确分类的,所以这个是没有意义的;反而比较关心那些离超平面很近的点,这些点比较容易分错。所以说我们只要让离超平面比较近的点尽可能的远离这个超平面,那么我们的模型分类效果应该就会比较不错喽。SVM其实就是这个思想

l7Bwjw.png

4.3 几个概念


  1. **线性可分(**Linearly Separable):在数据集中,如果可以找出一个超平面,将两组数据分开,那么这个数据集叫做线性可分数据

  2. 线性不可分(Linear Inseparable):在数据集中,没法找出一个超平面,能够将两组数据分开,那么这个数据集就叫做线性不可分数据

  3. 分割超平面(Separating Hyperplane):将数据集分割开来的直线/平面叫做分割超平面

  4. 支持向量(Support Vector):离分割超平面最近的那些点叫做支持向量

  5. 间隔(Margin):支持向量数据点到分割超平面的距离称为间隔

    l7BaG9.png

4.4 函数间隔与几何间隔


4.4.1 函数间隔


对于给定数据集 T T T和超平面 ( w , b ) (w,b) (w,b),定义超平面 ( w , b ) (w,b) (w,b)关于样本点 ( x i , y i ) (x_i,y_i) (xi,yi)的函数间隔为
γ ^ i = y i ( w ⋅ x i + b ) \hat \gamma_i=y_i(w\cdot x_i+b) γ^i=yi(wxi+b)
定义超平面 ( w , b ) (w,b) (w,b)关于训练数据集 T T T的函数间隔为超平面 ( w , b ) (w,b) (w,b)关于 T T T中所有样本点 ( x i , y i ) (x_i,y_i) (xi,yi)的函数间隔之最小值,即
γ ^ = min ⁡ i = 1 , ⋯   , N γ ^ i \hat \gamma=\min_{i=1,\cdots,N}\hat\gamma_i γ^=i=1,,Nminγ^i
函数间隔可以表示分类预测的正确性确信度

但是选择分离超平面时,只有函数间隔还不够。因为只要成比例地改变w和例如将它们改为20和2超平面并没有改变,但函数间隔却成为原来的2倍。这一事实启示我们,可以对分离超平面的法向量w加某些约束,如规范化,w=1使得间隔是确定的。这时函数间隔成为几何间隔(geometricmargin)

4.4.2 几何间隔


γ i = y i ( w ∥ w ∥ ⋅ x i + b ∥ w ∥ ) \gamma_i=y_i\left(\frac{w}{\|w\|}\cdot x_i+\frac{b}{\|w\|}\right) γi=yi(wwxi+wb)

lGH2H3.png#pic_center

4.5 线性可分SVM


4.6 问题引入


l7BnHG.png#pic_center

点到平面的距离: d = ∣ A x 1 + B y 1 + C z 1 + D ∣ A 2 + B 2 + C 2 d=\frac{|Ax_{1}+B y_{1}+C z_{1}+D|}{\sqrt{A^{2}+B^{2}+C^{2}}} d=A2+B2+C2 Ax1+By1+Cz1+D

支持向量到超平面的距离为:

∵ w T x + b = ± 1 ∵ y ∈ { + 1 , − 1 } ∴ ∣ ( w T x + b ) ∣ ∥ w ∥ 2 = 1 ∥ w ∥ 2 \begin{gathered} \because w^T x+b=\pm1 \\ \because y\in\left\{+1,-1\right\} \\ \therefore{\frac{\left|\left(w^{T}x+b\right)\right|}{\left\|w\right\|_{2}}}={\frac{1}{\left\|w\right\|_{2}}} \end{gathered} wTx+b=±1y{+1,1}w2 (wTx+b) =w21

**备注:**在SVM中支持向量到超平面的函数距离一般设置为1,简单理解就是可以等比例缩放

将间隔规定为1在SVM中是为了简化计算和优化问题,并保证模型的泛化能力全局最优解的存在:

  1. **硬间隔最大化:**设置间隔为1可以将SVM的优化问题转化为一个约束最优化问题。最大化间隔意味着将分类超平面尽可能地远离样本点,从而降低过拟合的风险。通过规定间隔为1,可以确保分类超平面的位置与样本点的距离至少为1,避免过度拟合训练数据
  2. **凸优化问题:**通过规定间隔为1,SVM的优化目标可以转化为一个凸优化问题。凸优化问题具有全局最优解的性质,因此可以保证找到全局最优的分类超平面,即具有最大间隔的分类超平面。这有助于提高模型在新样本上的泛化能力
  3. **结构风险最小化:**SVM的间隔定义反映了结构风险最小化的思想,即在最大化分类间隔的同时,尽可能减少误分类。通过将间隔规定为1,可以明确了模型对于误分类的容忍程度,有助于在保持泛化能力的同时解决优化问题

SVM模型是让所有的分类点在各自类别的支持向量远离超平面的一侧,同时要求支持向量尽可能的远离这个超平面,用数学公式表示如下:

max ⁡ w , b 1 ∥ w ∥ 2 s . t : y ( i ) ( w T x ( i ) + b ) ≥ 1 , i = 1 , 2 , . . . , m \begin{aligned} &\operatorname*{max}_{w,b}{\frac{1}{\left\|w\right\|_{2}}} \\ &s.t:y^{(i)}{\big(}w^{T}x^{(i)}+b{\big)}{\geq}1,i=1,2,...,m \end{aligned} w,bmaxw21s.t:y(i)(wTx(i)+b)1,i=1,2,...,m

l7TVFB.png

4.7 损失函数


目标函数:

l7TRbQ.png#pic_center

将此时的目标函数约束条件使用KKT条件转换为拉格朗日函数,从而转换为无约束的优化函
:

l7T4aj.png#pic_center

所以对于该优化函数而言,可以先求优化函数对于w和b的极小值,然后再求解对于拉格朗日乘
子β的极大值:

l7Tj54.png#pic_center

4.8 进一步优化损失函数


max ⁡ β ≥ 0 min ⁡ w , b L ( w , b , β ) L ( w , b , β ) = 1 2 ∥ w ∥ 2 2 + ∑ i = 1 m β i [ 1 − y ( i ) ( w T ˉ x ( i ) + b ) ] , β i ≥ 0 \begin{aligned} &\operatorname*{max}_{\beta\geq0}\operatorname*{min}_{w,b}L{\bigl(}w,b,\beta{\bigr)} \\ &L{\big(}w,b,\beta{\big)}={\frac{1}{2}}\|w{\big\|}_{2}^{2}+\sum_{i=1}^{m}\beta_{i}{\big[}1-y^{(i)}{\big(}w^{\bar{T}}x^{(i)}+b{\big)}{\big]},\beta_{i}\geq0 \end{aligned} β0maxw,bminL(w,b,β)L(w,b,β)=21w 22+i=1mβi[1y(i)(wTˉx(i)+b)],βi0

首先求让函数L极小化的时候w和b的取值,这个极值可以直接通过对函数L分别求w和b的偏导
数得到:

∂ L ∂ w = 0 ⇒ w − ∑ i = 1 m β i y ( i ) x ( i ) = 0 ⇒ w = ∑ i = 1 m β i y ( i ) x ( i ) ∂ c L ∂ b = 0 ⇒ − ∑ i = 1 m β i y ( i ) = 0 ⇒ ∑ i = 1 m β i y ( i ) = 0 \begin{aligned} &{\frac{\partial L}{\partial w}}=0\Rightarrow w-\sum_{i=1}^{m}\beta_{i}y^{(i)}x^{(i)}=0\Rightarrow w=\sum_{i=1}^{m}\beta_{i}y^{(i)}x^{(i)} \\ & \\ &\frac{\partial{cL}}{\partial{b}}=0\Rightarrow-\sum_{i=1}^{m}\beta_i y^{(i)}=0\Rightarrow\sum_{i=1}^{m}\beta_i y^{(i)}=0 \end{aligned} wL=0wi=1mβiy(i)x(i)=0w=i=1mβiy(i)x(i)bcL=0i=1mβiy(i)=0i=1mβiy(i)=0

带入(9)得:

e ( β ) = 1 2 ∥ w ∥ 2 2 + ∑ i = 1 m β i [ 1 − y ( i ) ( w T x ( i ) + b ) ] = 1 2 ∥ w ∥ 2 2 − ∑ i = 1 m β i [ y ( i ) ( w T x ( i ) + b ) − 1 ] = 1 2 w T w − ∑ i = 1 m β i y ( i ) w T x ( i ) − ∑ i = 1 m β i y ( i ) b + ∑ i = 1 m β i = 1 2 w 7 ∑ i = 1 m β i y ( i ) x ( i ) − w 7 ∑ i = 1 m β i y ( i ) x ( i ) − b ∑ i = 1 m β i y ( i ) + ∑ i = 1 m β i = − 1 2 w 7 ∑ i = 1 m β i y ( i ) x ( i ) − b ∑ i = 1 m β i y ( i ) + ∑ i = 1 m β i = − 1 2 ( ∑ j = 1 m β j y ( j ) x ( j ) ) T ( ∑ i = 1 m β i y ( i ) x ( i ) ) + ∑ i = 1 m β i = − 1 2 ∑ j = 1 m β j y ( j ) x ( j ) ′ ∑ i = 1 m β i y ( i ) x ( i ) + ∑ i = 1 m β i = ∑ i = 1 m β i − 1 2 ∑ i = 1 m ∑ j = 1 m β i β j y ( i ) y ( j ) x ( j ) r x ( i ) \begin{aligned} e\left(\beta\right)& ={\frac{1}{2}}\left\|w\right\|_{2}^{2}+\sum_{i=1}^{m}\beta_{i}\left[1-y^{(i)}\left(w^{T}x^{(i)}+b\right)\right] \\ &={\frac{1}{2}}\left\|w\right\|_{2}^{2}-\sum_{i=1}^{m}\beta_{i}\left[y^{(i)}\left(w^{T}x^{(i)}+b\right)-1\right] \\ &={\frac{1}{2}}w^{T}w-\sum_{i=1}^{m}\beta_{i}y^{(i)}w^{T}x^{(i)}-\sum_{i=1}^{m}\beta_{i}y^{(i)}b+\sum_{i=1}^{m}\beta_{i} \\ &=\frac{1}{2}w^{7}\sum_{i=1}^{m}\beta_{i}y^{(i)}x^{(i)}-w^{7}\sum_{i=1}^{m}\beta_{i}y^{(i)}x^{(i)}-b\sum_{i=1}^{m}\beta_{i}y^{(i)}+\sum_{i=1}^{m}\beta_{i} \\ &=-\frac{1}{2}w^{7}\sum_{i=1}^{m}\beta_{i}y^{(i)}x^{(i)}-b\sum_{i=1}^{m}\beta_{i}y^{(i)}+\sum_{i=1}^{m}\beta_{i} \\ &=-\frac{1}{2}\Biggl(\sum_{j=1}^{m}\beta_{j}y^{(j)}x^{(j)}\Biggr)^T\Biggl(\sum_{i=1}^{m}\beta_{i}y^{(i)}x^{(i)}\Biggr)+\sum_{i=1}^{m}\beta_{i} \\ &=-\frac{1}{2}\sum_{j=1}^{m}\beta_{j}y^{(j)}x^{(j)^{\prime}}\sum_{i=1}^{m}\beta_{i}y^{(i)}x^{(i)}+\sum_{i=1}^{m}\beta_{i} \\ &=\sum_{i=1}^{m}\beta_{i}-\frac{1}{2}\sum_{i=1}^{m}\sum_{j=1}^{m}\beta_{i}\beta_{j}y^{(i)}y^{(j)}x^{(j)^{r}}x^{(i)} \end{aligned} e(β)=21w22+i=1mβi[1y(i)(wTx(i)+b)]=21w22i=1mβi[y(i)(wTx(i)+b)1]=21wTwi=1mβiy(i)wTx(i)i=1mβiy(i)b+i=1mβi=21w7i=1mβiy(i)x(i)w7i=1mβiy(i)x(i)bi=1mβiy(i)+i=1mβi=21w7i=1mβiy(i)x(i)bi=1mβiy(i)+i=1mβi=21(j=1mβjy(j)x(j))T(i=1mβiy(i)x(i))+i=1mβi=21j=1mβjy(j)x(j)i=1mβiy(i)x(i)+i=1mβi=i=1mβi21i=1mj=1mβiβjy(i)y(j)x(j)rx(i)

进一步得到:

ℓ ( β ) = ∑ i = 1 m β i − 1 2 ∑ i = 1 , j = 1 m β i β j y ( i ) y ( j ) x ( i ) i x ( j ) s . t : ∑ i = 1 m β i y ( i ) = 0 β i ≥ 0 , i = 1 , 2 , . . . , m \begin{gathered} \ell\big(\beta\big)=\sum_{i=1}^{m}\beta_{i}-\frac{1}{2}\sum_{i=1,j=1}^{m}\beta_{i}\beta_{j}y^{(i)}y^{(j)}x^{(i)^{i}}x^{(j)} \\ s.t:\sum_{i=1}^{m}\beta_{i}y^{(i)}=0 \\ \beta_{i}\geq 0,i=1,2,...,m \end{gathered} (β)=i=1mβi21i=1,j=1mβiβjy(i)y(j)x(i)ix(j)s.t:i=1mβiy(i)=0βi0,i=1,2,...,m

通过对w、b极小化后,我们最终得到的优化函数只和β有关,所以此时我们可以直接极大化我们优化函数,得到β的值,从而可以最终得到w和b的值

l7mwgO.png#pic_center

得到支持向量

根据KKT条件中的对偶互补条件 β t ( y ( i ) ( w t x ( i ) + b ) − 1 ) = 0 \beta_t\left(y^{(i)}\left(w^t x^{(i)}+b\right)-1\right)=0 βt(y(i)(wtx(i)+b)1)=0,如果βi>0则yi(wTxi+b)=1 即点在支持向量上,否则如果βi=0则有yi(wTxi+b)≥1,即样本在支持向量上或者已经被正确分类

l7mHZf.png

4.9 算法流程


l7mgO3.png#pic_center

4.10 总结


  1. 要求数据必须是线性可分
  2. 纯线性可分的SVM模型对于异常数据的预测可能会不太准
  3. 对于线性可分的数据,线性SVM分类器的效果非常不错

网络总结:

优点:

  1. 可以解决高维问题,即大型特征空间
  2. 解决小样本下机器学习问题
  3. 能够处理非线性特征的相互作用
  4. 无局部极小值问题;(相对于神经网络等算法)
  5. 无需依赖整个数据
  6. 泛化能力比较强

缺点:

  1. 观测样本很多时,效率并不是很高
  2. 常规SVM只支持二分类
  3. 缺失数据敏感

五 软间隔模型


5.1 简述


线性可分SVM中要求数据必须是线性可分的,才可以找到分类的超平面,但是有的时候线性数据集中存在少量的异常点,由于这些异常点导致了数据集不能够线性划分;直白来讲就是:正常数据本身是线性可分的,但是由于存在异常点数据,导致数据集不能够线性可分

l7mxVm.png#pic_center

5.2 硬间隔与软间隔


l7mVTh.png#pic_center

5.3 软间隔模型


松弛因子(ξ)越大,表示样本点离超平面越近,如果松弛因子大于1,那么表示允许该样本点分错,所以说加入松弛因子是有成本的,过大的松弛因子可能会导致模型分类错误,所以最终的目标函数转换成为:

min ⁡ w , b 1 2 ∥ w ∥ 2 2 + C ∑ i = 1 m ξ i s . t : y ( i ) ( w T x ( i ) + b ) ≥ 1 − ξ i , i = 1 , 2 , . . . , m ξ i ≥ 0 , i = 1 , 2 , . . . , m \begin{aligned} & \operatorname*{min}_{w,b}{\frac{1}{2}}\left\|w\right\|_{2}^{2}+C\sum_{i=1}^{m}\xi_{i} \\ &s.t:y^{(i)}\Big(w^Tx^{(i)}+b\Big)\geq1-\xi_i,i=1,2,...,m \\ &\xi_{i}\geq0,i=1,2,...,m \end{aligned} w,bmin21w22+Ci=1mξis.t:y(i)(wTx(i)+b)1ξi,i=1,2,...,mξi0,i=1,2,...,m

**备注:**函数中的C>0是惩罚参数,是一个超参数,类似L1/L2 norm的参数;C越大表示对误分类的惩罚越大,也就是越不允许存在分错的样本;C越小表示对误分类的惩罚越小, 也就是表示允许更多的分错样本存在;C值的给定需要调参

得到模型:

l7mWh9.png

5.4 求解


先求优化函数对于w、b、ξ的极小值,这个可以通过分别对优化函数L求w、b、ξ的偏导数得,
从而可以得到w、b、ξ关于β和μ之间的关系

L [ ( w , b , ξ , β , μ ) = 1 2 ∥ w ∥ 2 2 + C ∑ i = 1 m ξ i + ∑ i = 1 m β i [ 1 − ξ i − y ( i ) ( w τ x ( i ) + b ) ] − ∑ i = 1 m μ i ξ i , β i ≥ 0 , μ i ≥ 0 ∂ L ∂ w = 0 ⟹ w − ∑ i = 1 m β i y ( i ) x ( i ) = 0 ⇒ w = ∑ i = 1 m β i y ( i ) x ( i ) ∂ L ∂ b = 0 ⇒ − ∑ i = 1 m β i y ( i ) = 0 ⟹ ∑ i = 1 m β i y ( i ) = 0 ∂ L ∂ ξ i = 0 ⇒ C − β i − μ i = 0 \begin{aligned} &L[\left(w,b,\xi,\beta,\mu\right)=\frac{1}{2}\left\|w\right\|_{2}^{2}+C\sum_{i=1}^{m}\xi_{i}+\sum_{i=1}^{m}\beta_{i}\left[1-\xi_{i}-y^{(i)}\left(w^{\tau}x^{(i)}+b\right)\right]-\sum_{i=1}^{m}\mu_{i}\xi_{i},\beta_{i}\geq0,\mu_{i}\geq0 \\ &\frac{\partial L}{\partial w}=0\Longrightarrow w-\sum_{i=1}^{m}\beta_{i}y^{(i)}x^{(i)}=0\Rightarrow w=\sum_{i=1}^{m}\beta_{i}y^{(i)}x^{(i)} \\ &\frac{\partial L}{\partial b}=0\Rightarrow-\sum_{i=1}^{m}\beta_{i}y^{(i)}=0\Longrightarrow\sum_{i=1}^{m}\beta_{i}y^{(i)}=0 \\ &\frac{\partial L}{\partial\xi_{i}}=0\Rightarrow C-\beta_{i}-\mu_{i}=0 \end{aligned} L[(w,b,ξ,β,μ)=21w22+Ci=1mξi+i=1mβi[1ξiy(i)(wτx(i)+b)]i=1mμiξi,βi0,μi0wL=0wi=1mβiy(i)x(i)=0w=i=1mβiy(i)x(i)bL=0i=1mβiy(i)=0i=1mβiy(i)=0ξiL=0Cβiμi=0

将w、b、ξ的值带入L函数中,就可以消去优化函数中的w、b、ξ,定义优化之后的函数如下:

e ( β , μ ) = 1 2 ∥ w ∥ 2 2 + C ∑ i = 1 m ξ i + ∑ i = 1 m β i [ 1 − ξ i − y ( i ) ( w T x ( i ) + b ) ] − ∑ i = 1 m μ i ξ i = 1 2 ∥ w ∥ 2 2 − ∑ i = 1 m β i [ y ( i ) ( w T x ( i ) + b ) − 1 + ξ i ] + ∑ i = 1 m ( C − μ i ) ξ i = 1 2 ∥ w ∥ 2 2 − ∑ i = 1 m β i [ y ( i ) ( w T x ( i ) + b ) − 1 ] = 1 2 w T ˉ w − ∑ i = 1 m β i y ( i ) w T ˉ x ( i ) − ∑ i = 1 m β i y ( i ) b + ∑ i = 1 m β i = − 1 2 w 7 ∑ i = 1 m β i y ( i ) x ( i ) − b ∑ i = 1 m β i y ( i ) + ∑ i = 1 m β i = − 1 2 ( ∑ i = 1 m β i y ( i ) x ( i ) ) T ( ∑ i = 1 m β i y ( i ) x ( i ) ) + ∑ i = 1 m β i = − 1 2 ∑ i = 1 m β i y ( i ) x ( i ) j ∑ i = 1 m β i y ( i ) x ( i ) + ∑ i = 1 m β i = ∑ i = 1 m β i − 1 2 ∑ i = 1 m ∑ j = 1 m β i β j y ( i ) y ( j ) x ( i ) j ˉ x ( j ) \begin{aligned} e\left(\beta,\mu\right)& ={\frac{1}{2}}\left\|w\right\|_{2}^{2}+C\sum_{i=1}^{m}\xi_{i}+\sum_{i=1}^{m}\beta_{i}\left[1-\xi_{i}-y^{(i)}\left(w^{T}x^{(i)}+b\right)\right]-\sum_{i=1}^{m}\mu_{i}\xi_{i} \\ &=\frac{1}{2}\|w\|_2^2-\sum_{i=1}^{m}\beta_i\left[y^{(i)}\left(w^Tx^{(i)}+b\right)-1+\xi_i\right]+\sum_{i=1}^{m}\left(C-\mu_i\right)\xi_i \\ &=\frac{1}{2}\|w\|_2^2-\sum_{i=1}^{m}\beta_i\left[y^{(i)}\left(w^Tx^{(i)}+b\right)-1\right] \\ &=\frac{1}{2}w^{\bar{T}}w-\sum_{i=1}^{m}\beta_{i}y^{(i)}w^{\bar{T}}x^{(i)}-\sum_{i=1}^{m}\beta_{i}y^{(i)}b+\sum_{i=1}^{m}\beta_{i} \\ &=-\frac{1}{2}w^{7}\sum_{i=1}^{m}\beta_{i}y^{(i)}x^{(i)}-b\sum_{i=1}^{m}\beta_{i}y^{(i)}+\sum_{i=1}^{m}\beta_{i} \\ &=-\frac{1}{2}\bigg(\sum_{i=1}^m\beta_i y^{(i)}x^{(i)}\bigg)^T\bigg(\sum_{i=1}^m\beta_i y^{(i)}x^{(i)}\bigg)+\sum_{i=1}^m\beta_i \\ &=-\frac{1}{2}\sum_{i=1}^{m}\beta_i y^{(i)}x^{(i)^j}\sum_{i=1}^{m}\beta_i y^{(i)}x^{(i)}+\sum_{i=1}^{m}\beta_i \\ &=\sum_{i=1}^{m}\beta_{i}-\frac{1}{2}\sum_{i=1}^{m}\sum_{j=1}^{m}\beta_{i}\beta_{j}y^{(i)}y^{(j)}x^{(i)^{\bar{j}}}x^{(j)} \end{aligned} e(β,μ)=21w22+Ci=1mξi+i=1mβi[1ξiy(i)(wTx(i)+b)]i=1mμiξi=21w22i=1mβi[y(i)(wTx(i)+b)1+ξi]+i=1m(Cμi)ξi=21w22i=1mβi[y(i)(wTx(i)+b)1]=21wTˉwi=1mβiy(i)wTˉx(i)i=1mβiy(i)b+i=1mβi=21w7i=1mβiy(i)x(i)bi=1mβiy(i)+i=1mβi=21(i=1mβiy(i)x(i))T(i=1mβiy(i)x(i))+i=1mβi=21i=1mβiy(i)x(i)ji=1mβiy(i)x(i)+i=1mβi=i=1mβi21i=1mj=1mβiβjy(i)y(j)x(i)jˉx(j)

进一步得到:

ℓ ( β ) = ∑ i = 1 m β i − 1 2 ∑ i = 1 , j = 1 m β i β j y ( i ) y ( j ) x ( i ) τ x ( j ) s . t : ∑ i = 1 m β i y ( i ) = 0 C − β i − μ i = 0 β i ≥ 0 , i = 1 , 2 , . . . , m μ i ≥ 0 , i = 1 , 2 , . . . , m \begin{gathered} \ell\big(\beta\big)=\sum_{i=1}^{m}\beta_{i}-\frac{1}{2}\sum_{i=1,j=1}^{m}\beta_{i}\beta_{j}y^{(i)}y^{(j)}x^{(i)^{\tau}}x^{(j)} \\ s.t:\sum_{i=1}^{m}\beta_{i}y^{(i)}=0 \\ C-\beta_i-\mu_i=0 \\ \beta_{i}\geq0,i=1,2,...,m \\ \mu_{i}\geq0,i=1,2,...,m \end{gathered} (β)=i=1mβi21i=1,j=1mβiβjy(i)y(j)x(i)τx(j)s.t:i=1mβiy(i)=0Cβiμi=0βi0,i=1,2,...,mμi0,i=1,2,...,m

最终优化后的目标函数/损失函数和线性可分SVM(硬间隔)模型基本一样,除了约束条件不同
而已, 也就是说也可以使用SMO算法来求解

5.5 支持向量


l7LAPY.png

5.6 算法流程


l703DZ.png#pic_center

5.7 总结


  1. 可以解决线性数据中携带异常点的分类模型构建的问题
  2. 通过引入惩罚项系数(松弛因子),可以增加模型的泛化能力,即鲁棒性
  3. 如果给定的惩罚项系数C越小,表示在模型构建的时候,就允许存在越多的分类错误的样本, 也就表示此时模型的准确率会比较低;如果惩罚项系数越大,表示在模型构建的时候,就越不允许存在分类错误的样本,也就表示此时模型的准确率会比较高
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

小酒馆燃着灯

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值