【自学笔记】支持向量机(3)——软间隔

引入

上一回解决了SVM在曲线边界的上的使用,使得非线性数据集也能得到正确的分类。然而,对于一个大数据集来说,极有可能大体呈线性分类趋势,但是边界处混杂,若仍采用原来的方式,会得到极其复杂的超平面边界,浪费了算力。

上述要求所有训练样本满足约束的分类方式称为硬分类 。而允许部分样本不满足约束的分类方式则被称为软分类

实现逻辑

在实现软间隔的同时,我们既要保证模型的性能(违反约束的样本点尽量少),同时保证模型复杂度不要过高,我们需要设置一个损失函数 来控制模型的样本点是否需要满足约束。

最简单的,定义0/1损失函数 ℓ 0 / 1 ( z ) \ell _{0/1}(z) ℓ0/1(z):

ℓ 0 / 1 ( z ) = { 1 , i f z < 0 0 , o t h e r w i s e \ell _{0/1}(z)=\begin{cases}1,\ if \ z<0 \\0, \ otherwise\end{cases} ℓ0/1(z)={1, if z<00, otherwise

并修改优化目标为:

m i n w ⃗ , b 1 2 ∣ ∣ w ⃗ ∣ ∣ 2 + C ∑ i = 1 m ℓ 0 / 1 ( y i ( w ⃗ T x ⃗ i + b ) − 1 ) min_{\vec{w}, b}\ \frac{1}{2}||\vec{w}||^{2}+C\sum_{i=1}^{m}\ell {0/1}(y{i}(\vec{w}^{T}\vec{x}_{i}+b)-1) minw ,b 21∣∣w ∣∣2+C∑i=1mℓ0/1(yi(w Tx i+b)−1)

其中常数 C > 0 C>0 C>0,称为正则化参数,控制了对误分类样本的惩罚程度。而损失函数则决定这个样本点误分类是否需要产生惩罚。

然而,0/1损失函数非凸,非连续,使得后续求解不方便。人们通常用其他一些函数来替代 ℓ 0 / 1 ( z ) \ell _{0/1}(z) ℓ0/1(z),称为替代损失

替代损失 函数形式
hinge 损失 ℓ h i n g e ( z ) = m a x ( 0 , 1 − z ) \ell_{hinge}(z)=max(0, 1-z) ℓhinge(z)=max(0,1−z)
指数损失 ℓ e x p ( z ) = e x p ( − z ) \ell_{exp}(z)=exp(-z) ℓexp(z)=exp(−z)
对率损失 ℓ l o g ( z ) = l o g ( 1 + e x p ( − z ) ) \ell_{log}(z)=log(1+exp(-z)) ℓlog(z)=log(1+exp(−z))

以 h i n g e hinge hinge损失为例,目标变成:

m i n w ⃗ , b 1 2 ∣ ∣ w ⃗ ∣ ∣ 2 + C ∑ i = 1 m m a x ( 0 , 1 − y i ( w ⃗ T x ⃗ i + b ) ) min_{\vec{w}, b}\ \frac{1}{2}||\vec{w}||^{2}+C\sum_{i=1}^{m}max(0,1-y_{i}(\vec{w}^{T}\vec{x}_{i}+b)) minw ,b 21∣∣w ∣∣2+C∑i=1mmax(0,1−yi(w Tx i+b))

将求和符号后的部分记作松弛变量 ξ i ≥ 0 \xi _{i} \ge 0 ξi≥0,可重写为:

m i n w ⃗ , b 1 2 ∣ ∣ w ⃗ ∣ ∣ 2 + C ∑ i = 1 m ξ i min_{\vec{w}, b}\ \frac{1}{2}||\vec{w}||^{2}+C\sum_{i=1}^{m}\xi _{i} minw ,b 21∣∣w ∣∣2+C∑i=1mξi

s . t . y i ( w ⃗ T x ⃗ i + b ) ≥ 1 − ξ i s.t. \ y_{i}(\vec{w}^{T}\vec{x}{i}+b)\ge1-\xi{i} s.t. yi(w Tx i+b)≥1−ξi
ξ i ≥ 0 , i = 1 , 2 , . . . , m \ \ \ \ \ \ \xi_{i} \ge 0, i=1,2,...,m ξi≥0,i=1,2,...,m

松弛变量的值反映了样本点离群的程度。值越大,样本点离正确的分类区域越远。

使用软间隔方法的SVM被称为软间隔支持向量机

求解

问题被转化后,依然是一个二次规划问题,我们仍用拉格朗日乘子法得到拉格朗日函数:

L ( w ⃗ , b , α ⃗ , ξ ⃗ , μ ⃗ ) = 1 2 ∣ ∣ w ⃗ ∣ ∣ 2 L(\vec{w},b,\vec{\alpha}, \vec{\xi},\vec{\mu})=\frac{1}{2}||\vec{w}||^{2} L(w ,b,α ,ξ ,μ )=21∣∣w ∣∣2

  • C ∑ i = 1 m ξ i \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ +C\sum_{i=1}^{m}\xi_{i} +C∑i=1mξi
  • ∑ i = 1 m α i [ 1 − ξ i − y i ( w ⃗ T x ⃗ i + b ) ] \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ +\sum_{i=1}^{m}\alpha {i}[1-\xi{i}-y_{i}(\vec{w}^{T}\vec{x}{i}+b)] +∑i=1mαi[1−ξi−yi(w Tx i+b)]
    − ∑ i = 1 m μ i ξ i \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ - \sum
    {i=1}^{m}\mu_{i}\xi_{i} −∑i=1mμiξi

其中 α i ≥ 0 \alpha_{i} \ge 0 αi≥0, μ i ≥ 0 \mu_{i} \ge 0 μi≥0是拉格朗日乘子

令 L ( w ⃗ , b , α ⃗ , ξ ⃗ , μ ⃗ ) L(\vec{w},b,\vec{\alpha}, \vec{\xi},\vec{\mu}) L(w ,b,α ,ξ ,μ )对 w ⃗ , b , ξ i \vec{w}, b, \xi_{i} w ,b,ξi求导为 0 0 0,得:

w ⃗ = ∑ i = 1 m α i y i x ⃗ i \vec{w}=\sum_{i=1}^{m}\alpha_{i}y_{i}\vec{x}{i} w =∑i=1mαiyix i
0 = ∑ i = 1 m α i y i 0 = \sum
{i=1}^{m}\alpha_{i}y_{i} 0=∑i=1mαiyi
C = α i + μ i C = \alpha_{i}+\mu_{i} C=αi+μi

代回得:

m a x α ⃗ ∑ i = 1 m α i − 1 2 ∑ i = 1 m ∑ j = 1 m α i α j y i y j x ⃗ i T x ⃗ j max_{\vec{\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}\vec{x}{i}^{T}\vec{x}{j} maxα ∑i=1mαi−21∑i=1m∑j=1mαiαjyiyjx iTx j

s . t . ∑ i = 1 m α i y i = 0 s.t.\ \sum_{i=1}^{m}\alpha_{i}y_{i}=0 s.t. ∑i=1mαiyi=0
0 ≥ α i ≥ C , i = 1 , 2 , . . . , m \ \ \ \ \ \ \ 0 \ge \alpha_{i} \ge C, i=1,2,...,m 0≥αi≥C,i=1,2,...,m

不难发现,与硬间隔的对偶问题相比,只是把 0 ≤ α i 0 \le \alpha_{i} 0≤αi改成了 0 ≤ α i ≤ C 0 \le \alpha_{i} \le C 0≤αi≤C。

更改后的KKT要求为:

1.互补松弛条件

α i [ y i ( w ⃗ x ⃗ i + b ) − ( 1 − ξ i ) ] = 0 \alpha_{i}[y_{i}(\vec{w}\vec{x}{i}+b)-(1-\xi{i})]=0 αi[yi(w x i+b)−(1−ξi)]=0

μ i ξ i = 0 \mu_{i}\xi_{i}=0 μiξi=0

2.原始约束

y i ( w ⃗ x ⃗ i + b ) − ( 1 − ξ i ) ≥ 0 y_{i}(\vec{w}\vec{x}{i}+b)-(1-\xi{i}) \ge 0 yi(w x i+b)−(1−ξi)≥0

ξ i ≥ 0 \xi_{i} \ge 0 ξi≥0

3.对偶约束

0 ≤ α i ≤ C 0 \le \alpha_{i} \le C 0≤αi≤C

∑ i = 1 m α i y i = 0 \sum_{i=1}^{m}\alpha_{i}y_{i}=0 ∑i=1mαiyi=0

分析一下上面的式子,发现对任意样本 ( x ⃗ i , y i ) (\vec{x}{i},y{i}) (x i,yi),总有 α i = 0 \alpha_{i}=0 αi=0或 y i ( w ⃗ x ⃗ i + b ) − ( 1 − ξ i ) = 0 y_{i}(\vec{w}\vec{x}{i}+b)-(1-\xi{i}) = 0 yi(w x i+b)−(1−ξi)=0。(由第一个式子推得)

当 α i = 0 \alpha_{i}=0 αi=0,则说明该样本不会对 f ( x ⃗ ) f(\vec{x}) f(x )有任何影响

否则,有 y i ( w ⃗ x ⃗ i + b ) = 1 − ξ i y_{i}(\vec{w}\vec{x}{i}+b)=1-\xi{i} yi(w x i+b)=1−ξi,则该样本是支持向量

注意,由于软间隔对边界附近的数据点进行了处理,支持向量的定义不再限制于完全在分类边界上的样本,而是规定为满足 y i f ( x ⃗ i ) = 1 − ξ i y_{i}f(\vec{x}{i})=1-\xi{i} yif(x i)=1−ξi这个式子的样本。

而对于所有的支持向量,也有一些分类:

条件 性质
若 α i < C \alpha_{i}<C αi<C,则 μ i > 0 \mu_{i}>0 μi>0,有 ξ i = 0 \xi_{i}=0 ξi=0 样本恰好在最大间隔边界上
若 α i = C \alpha_{i}=C αi=C,则 μ i = 0 \mu_{i}=0 μi=0,若 ξ i ≤ 1 \xi_{i} \le 1 ξi≤1 样本落在最大间隔内部
若 α i = C \alpha_{i}=C αi=C,则 μ i = 0 \mu_{i}=0 μi=0,若 ξ i > 1 \xi_{i} > 1 ξi>1 样本被错误分类

在《机器学习》中,紧跟了一句话:

由此可以看出,软间隔支持向量机的最终模型仅与支持向量有关,即通过采用 h i n g e hinge hinge损失函数仍保持了稀疏性。

这里作个解释:

一般化

以上其实是以 h i n g e hinge hinge损失函数替代 0 / 1 0/1 0/1损失函数的例子,我们当然可以通过其他的损失函数来得到其他的学习模型,最终都会变成以下的一般形式:

m i n f Ω ( f ) + C ∑ i = 1 m ℓ ( f ( x ⃗ i ) , y i ) min_{f} \ \Omega (f)+C\sum_{i=1}{m}\ell(f(\vec{x}{i}),y{i}) minf Ω(f)+C∑i=1mℓ(f(x i),yi)

前半部分的 Ω ( f ) \Omega (f) Ω(f)称为结构风险 (structural risk),是由模型的结构所产生的惩罚,如各种正则化,描述了模型 f f f的各种性质。

后半部分的 C ∑ i = 1 m ℓ ( f ( x ⃗ i , y i ) C\sum_{i=1}{m}\ell(f(\vec{x}{i},y{i}) C∑i=1mℓ(f(x i,yi)被称为经验风险,是模型在训练数据集上的平均损失,它衡量了模型在已知训练数据上的拟合程度。

相关推荐
chao_6666661 分钟前
【深度】为GPT-5而生的「草莓」模型!从快思考—慢思考到Self-play RL的强化学习框架
人工智能·深度学习·学习·机器学习
Pandaconda15 分钟前
【计算机网络 - 基础问题】每日 3 题(二十六)
开发语言·经验分享·笔记·后端·计算机网络·面试·职场和发展
小宇python44 分钟前
机械学习和深度学习的区别
机器学习
Ace'1 小时前
学习笔记&&每日一题
笔记·学习·算法
mez_Blog1 小时前
React学习笔记(3.0)
前端·笔记·学习·react.js·前端框架
马哥小迷弟1321 小时前
【xhs截流软件】爬取小红书关键词笔记下的筛选评论
笔记·爬虫·软件需求
zenpluck2 小时前
GS-SLAM论文阅读笔记--MM3DGS SLAM
论文阅读·笔记·3d
全貌2 小时前
C++笔记 --基本语法(命名空间/函数重载/缺省参数/引用/inline/nulltpr)
开发语言·c++·笔记
苏格拉没有底1112 小时前
数据结构——顺序表、链表
c语言·开发语言·数据结构·笔记·学习·算法·链表