第十四周:支持向量机(SVM)

文章目录

Abstract:

This week, I focused on Support Vector Machines (SVMs), covering their core concepts, the difference between SVMs and logistic regression, and the use of kernel functions for non-linear classification. The report also provides a brief comparison and guidelines for choosing between SVMs and logistic regression based on dataset characteristics.

支持向量机(Support Vector Machines)

SVM概述

支持向量机 ( Csupport vector machines. SVM) 是一种二分类分类模型。它的基本模型是定义在特征空间上的间隔最大的线性分类器,间隔最大使它有别于感知机。

"支持向量"即距离超平面最近的几个训练样本点。支持向量可以使约束条件等式成立。

支持向量机学习的基本思想:求解能够正确划分训练数据集井且几何间隔最大的分离超平面。

样本空间中划分超平面可以用线性方程描述: w T x + b = 0 {w}^{\mathrm{T}} {x}+b=0 wTx+b=0,其中 w {w} w为超平面法向量

分类决策函数为: f ( x ) = sign ⁡ ( w ∗ ⋅ x + b ∗ ) f(x)=\operatorname{sign}\left(w^{*} \cdot x+b^{*}\right) f(x)=sign(w∗⋅x+b∗)

样本空间中任意点到 x x x到超平面 ( w , b ) (w,b) (w,b)的距离为: γ = ∣ w T x + b ∣ ∥ w ∥ \gamma=\frac{\left|\boldsymbol{w}^{\mathrm{T}} \boldsymbol{x}+b\right|}{\|\boldsymbol{w}\|} γ=∥w∥∣wTx+b∣两个异类支持向量到超平面的距离,即"间隔"为 γ = 2 ∥ w ∥ \gamma=\frac{2}{\|{w}\|} γ=∥w∥2

支持向量机目的找到最大间隔的划分超平面,所以支持向量机的基本问题即为:
min ⁡ w , b 1 2 ∥ w ∥ 2 s . t . y i ( w T x i + b ) ⩾ 1 , i = 1 , 2 , ... , m \begin{aligned} &\min_{{w}, b}\frac{1}{2}\|\boldsymbol{w}\|^{2}\\ & s.t. \quad y_{i}\left(\boldsymbol{w}^{\mathrm{T}} \boldsymbol{x}_{i}+b\right) \geqslant 1, \quad i=1,2, \ldots, m \end{aligned} w,bmin21∥w∥2s.t.yi(wTxi+b)⩾1,i=1,2,...,m

通过使用拉格朗日乘子法可以得到该问题的对偶问题:

对偶问题往往更容易求解: 是自然引入核函数,进而推广到非线性分类问题

求解出 α \alpha α后再求出 w , b w,b w,b即可得到最终模型: f ( x ) = w T x + b = ∑ i = 1 m α i y i x i T x + b 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 f(x)=wTx+b=∑i=1mαiyixiTx+b

通常建立模型之前还要对特征值进行标准化处理。

线性支持向量机与软间隔

对于线性不可分的数据集,通常除去数据中的一些特异点,剩下的大部分样本点组成的集合是线性可分的。

"软间隔"即允许某些样本不满足约束,示意图如下:

为了使特异点满足约束条件,我们可以对每个样本点引入一个松弛变量 ξ i ≥ 0 \xi_i \ge0 ξi≥0,用来表征某样本不满足约束的程度。

约束条件 变为: y i ( w T x i + b ) ≥ 1 − ξ i y_i(w^{\mathrm{T}}x_i+b)\ge1-\xi_i yi(wTxi+b)≥1−ξi
目标函数 变为: 1 2 ∥ w ∥ 2 + C ∑ i = 1 N ξ i \frac{1}{2}\|w\|^{2}+C \sum_{i=1}^{N} \xi_{i} 21∥w∥2+C∑i=1Nξi ,其中 ( C > 0 C>0 C>0)

可以得到线性不可分问题的线性支持向量机(软间隔支持向量机)模型:

C C C称为惩罚项,一般由实际问题确定,显然 C C C很大时 ξ \xi ξ必须小,则允许有较大错误; C C C很小时,则 ξ \xi ξ可以比较大,即可容许较大的错误。

所用分类决策函数与解得超平面形式同线性可分支持向量机相同。

线性支持向量机的优化目标

min ⁡ w , b 1 2 ∥ w ∥ 2 + C ∑ i = 1 m ℓ 0 / 1 ( y i ( w T x i + b ) − 1 ) \min {\boldsymbol{w}, b} \frac{1}{2}\|\boldsymbol{w}\|^{2}+C \sum{i=1}^{m} \ell_{0 / 1}\left(y_{i}\left(\boldsymbol{w}^{\mathrm{T}} \boldsymbol{x}_{i}+b\right)-1\right) w,bmin21∥w∥2+Ci=1∑mℓ0/1(yi(wTxi+b)−1)

ℓ 0 / 1 \ell_{0 / 1} ℓ0/1是"0/1损失函数",可用一些"替代函数"代替

三种常用的替代损失函数如下

● 合页 ( hinge ) 损失函数: ℓ hinge ( z ) = max ⁡ ( 0 , 1 − z ) \ell_{\text {hinge }}(z)=\max (0,1-z) ℓhinge (z)=max(0,1−z)

● 指数损失 ( exponential loss )函数: ℓ exp ⁡ ( z ) = exp ⁡ ( − z ) \ell_{\exp }(z)=\exp (-z) ℓexp(z)=exp(−z)

● 对率损失 ( logistic loss )函数: ℓ log ⁡ ( z ) = log ⁡ ( 1 + exp ⁡ ( − z ) ) \ell_{\log }(z)=\log (1+\exp (-z)) ℓlog(z)=log(1+exp(−z))

若采用合页损失函数,则优化目标为:

min ⁡ w , b 1 2 ∥ w ∥ 2 + C ∑ i = 1 m max ⁡ ( 0 , 1 − y i ( w T x i + b ) ) \min {\boldsymbol{w}, b} \frac{1}{2}\|\boldsymbol{w}\|^{2}+C \sum{i=1}^{m} \max \left(0,1-y_{i}\left(\boldsymbol{w}^{\mathrm{T}} \boldsymbol{x}_{i}+b\right)\right) w,bmin21∥w∥2+Ci=1∑mmax(0,1−yi(wTxi+b))

合页损失函数与正则化

合页损失函数性能最好,所用通常使用它作为损失函数

采用合页损失函数的优化目标可改写为如下形式:

min ⁡ w , b ∑ i = 1 m max ⁡ ( 0 , 1 − y i ( w T x i + b ) ) + λ ∥ w ∥ 2 \min {\boldsymbol{w}, b} \sum{i=1}^{m} \max \left(0,1-y_{i}\left(\boldsymbol{w}^{\mathrm{T}} \boldsymbol{x}_{i}+b\right)\right)+\lambda\|\boldsymbol{w}\|^{2} w,bmini=1∑mmax(0,1−yi(wTxi+b))+λ∥w∥2

也就是说,当样本点 ( x i , y i ) (x_i,y_i) (xi,yi)被正确分类且函数间隔(确信度) y i ( w T x i + b ) > 1 y_i(w^{\mathrm{T}}x_i+b) >1 yi(wTxi+b)>1时,损失为0,否则损失为 1 − y i ( w T x i ) 1-y_i(w^{\mathrm{T}} x_i) 1−yi(wTxi)

非线性支持向量机与核函数

非线性问题往往不好求解,所以希望将非线性问题转化为线性问题。

核技巧的基本思想:将样本从原始空间映射到高维的特征空间,使得这个样本在这个特征空间内线性可分。

令 ϕ ( x ) \mathrm{\phi}(x) ϕ(x)表示将 x x x映射后的特征向量,则高维空间中对应超平面为: f ( x ) = w T ϕ ( x ) + b f(x)=w^{\mathrm{T}}\phi(x)+b f(x)=wTϕ(x)+b

(目标函数和其对偶问题只需将 x x x替换为 ϕ ( x ) \phi(x) ϕ(x)即可)

目标函数的对偶问题为:

min ⁡ α 1 2 ∑ i = 1 m ∑ j = 1 m α i α j y i y j ϕ ( x i ) T ϕ ( x j ) − ∑ i = 1 m α i s . t . ∑ i = 1 m α i y i = 0 α i ⩾ 0 , i = 1 , 2 , ⋯   , m \min {\alpha} \frac{1}{2} \sum{i=1}^{m} \sum_{j=1}^{m} \alpha_{i} \alpha_{j} y_{i} y_{j}\phi(x_{i})^\mathrm{T} \phi(x_{j})-\sum_{i=1}^{m} \alpha_{i}\\ s.t. \sum_{i = 1}^{m} \alpha_{i} y_{i} = 0 \quad \alpha_{i} \geqslant 0, \quad i = 1,2, \cdots, m αmin21i=1∑mj=1∑mαiαjyiyjϕ(xi)Tϕ(xj)−i=1∑mαis.t.i=1∑mαiyi=0αi⩾0,i=1,2,⋯,m

由于求解涉及到计算 ϕ ( x i ) T ϕ ( x j ) \phi(x_i)^{\mathrm{T}}\phi(x_j) ϕ(xi)Tϕ(xj),即样本 x i x_i xi与 x j x_j xj映射到特征空间之后的内积,由于特征空间的维度可能很高,所以直接计算往往很困难,而且我们通常不知道 ϕ ( ⋅ ) \phi(·) ϕ(⋅)是什么形式,所以我们引入"核函数 "(kernel function) κ ( ⋅ , ⋅ ) \boldsymbol{\kappa(·,·)} κ(⋅,⋅)

x i x_i xi与 x j x_j xj在特征空间中的内积等于它们在原始样本空间通过核函数 κ ( x i , x j ) \kappa(x_i,x_j) κ(xi,xj)计算的结果.

所以我们不必去计算高位空间中的内积,则目标函数可以重写为:

min ⁡ α 1 2 ∑ i = 1 m ∑ j = 1 m α i α j y i y j κ ( x i , x j ) − ∑ i = 1 m α i s . t . ∑ i = 1 m α i y i = 0 α i ⩾ 0 , i = 1 , 2 , ⋯   , m \min {\alpha} \frac{1}{2} \sum{i=1}^{m} \sum_{j=1}^{m} \alpha_{i} \alpha_{j} y_{i} y_{j}\kappa(x_i,x_j)-\sum_{i=1}^{m} \alpha_{i}\\ s.t. \sum_{i = 1}^{m} \alpha_{i} y_{i} = 0 \quad\alpha_{i} \geqslant 0, \quad i = 1,2, \cdots, m αmin21i=1∑mj=1∑mαiαjyiyjκ(xi,xj)−i=1∑mαis.t.i=1∑mαiyi=0αi⩾0,i=1,2,⋯,m

求解后得到: f ( x ) = ∑ i = 1 m α i y i κ ( x , x i ) + b f(x)=\sum_{i=1}^{m} \alpha_{i} y_{i} \kappa\left(\boldsymbol{x}, \boldsymbol{x}_{i}\right)+b f(x)=∑i=1mαiyiκ(x,xi)+b,这一结果也称为"支持向量展式"

定理:只要一个对称函数所对应的核矩阵是半正定的,它就能作为核函数使用。即对于一个半正定核矩阵,总能找到一个与之对应的映射 ϕ \phi ϕ

常用"高斯核函数 "(Gaussian kernel function): κ ( x i , x j ) = exp ⁡ ( − ∥ x i − x j ∥ 2 2 σ 2 ) \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) κ(xi,xj)=exp(−2σ2∥xi−xj∥2)

其中 σ \sigma σ为高斯核的带宽 ( width ),不使用核函数又称为"线性核函数" (linear kernel)

● C = 1 / λ C=1/λ C=1/λ

● C C C 较大时,相当于 λ λ λ较小,可能会导致过拟合,高方差;

● C C C 较小时,相当于 λ λ λ较大,可能会导致低拟合,高偏差;

● σ σ σ较大时,可能会导致低方差,高偏差;

● σ σ σ较小时,可能会导致低偏差,高方差。

logistic 回归和SVM的比较

相同点:

  1. LR和SVM都可以处理分类问题,且一般都用于处理线性二分类问题(在改进的情况下可以处理多分类问题
  2. 两个方法都可以增加不同的正则化项,如L1、L2等等。所以在很多实验中,两种算法的结果是很接近的。

不同点:

  1. 从目标函数来看,区别在于logistic 回归采用的是logistical loss,SVM主要采用的是hinge loss. 这两个损失函数的目的都是增加对分类影响较大的数据点的权重,减少与分类关系较小的数据点的权重。
  2. SVM的处理方法是只考虑support vectors,也就是和分类最相关的少数点,去学习分类器。而logistic 回归中所有点都会起作用,只是通过非线性映射大大减小了离分类平面较远的点的权重,相对提升了与分类最相关的数据点的权重。
  3. 逻辑回归一般应用梯度下降的方法求解,支持向量机应用SMO求解拉格朗日乘子,进而求解最优划分曲线方程。
  4. 线性可分支持向量机本身就是结构风险最小化,而logistic 回归需要通过正则项权衡结构风险

下面是一些普遍使用的准则:

设 n n n为特征数, m m m为训练样本数。

  1. 如果相较于 m m m而言, n n n要大许多,即训练集数据量不够支持我们训练一个复杂的非线性模型,我们选用逻辑回归模型或者不带核函数的支持向量机。

  2. 如果 n n n较小,而且 m m m大小中等,例如 n n n在 1-1000 之间,而 m m m在10-10000之间,使用高斯核函数的支持向量机。

  3. 如果 n n n较小,而 m m m较大,例如 n n n在1-1000之间,而 m m m大于50000,则使用支持向量机会非常慢,解决方案是选取并增加更多的特征,然后使用逻辑回归或不带核函数的支持向量机。

神经网络在以上三种情况下都可能会有较好的表现,但是训练神经网络可能非常慢,选择支持向量机的原因主要在于它的代价函数是凸函数,不存在局部最小值。

总结

本周回顾机器学习,SVM是一个传统的分类方法,但与神经网络的逻辑回归有不同之处。两者各有特点,互为补充。

相关推荐
一只码代码的章鱼9 分钟前
数据结构与算法-搜索-剪枝
算法·深度优先·剪枝
roman_日积跬步-终至千里1 小时前
【后端基础】布隆过滤器原理
算法·哈希算法
若兰幽竹1 小时前
【机器学习】多元线性回归算法和正规方程解求解
算法·机器学习·线性回归
鱼力舟1 小时前
【hot100】240搜索二维矩阵
算法
Watermelo6172 小时前
从DeepSeek大爆发看AI革命困局:大模型如何突破算力囚笼与信任危机?
人工智能·深度学习·神经网络·机器学习·ai·语言模型·自然语言处理
北_鱼3 小时前
支持向量机(SVM):算法讲解与原理推导
算法·机器学习·支持向量机
MZWeiei4 小时前
PTA:运用顺序表实现多项式相加
算法
GISer_Jing4 小时前
Javascript排序算法(冒泡排序、快速排序、选择排序、堆排序、插入排序、希尔排序)详解
javascript·算法·排序算法
cookies_s_s4 小时前
Linux--进程(进程虚拟地址空间、页表、进程控制、实现简易shell)
linux·运维·服务器·数据结构·c++·算法·哈希算法
不想编程小谭5 小时前
力扣LeetCode: 2506 统计相似字符串对的数目
c++·算法·leetcode