当前位置: 首页 > news >正文

支持向量机SVM简述

支持向量机SVM

1、概述

SVM全称是supported vector machine(支持向量机),即寻找到一个超平面使样本分成两类,并且间隔最大。

SVM 模型有3种:

  • 线性可分支持向量机:适用于训练数据线性可分。
  • 线性支持向量机:适用于训练数据近似线性可分,也就是存在一些特异点。
  • 非线性支持向量机:适用于训练数据线性不可分。

2、相关概念

(一)、硬间隔

如果样本线性可分,在所有的样本分类都正确的情况下,寻找最大间隔,这就是硬间隔。如果出现异常值、或者样本不能线性可分,此时硬间隔无法实现。

总结一句,硬间隔是严格的间隔,不允许有任何异常值。

(二)、软间隔和惩罚系数

允许部分样本,在最大间隔之内,甚至在错误的一边,寻找最大间隔,这就是软间隔。目标是尽可能在保持间隔宽阔和限制间隔违例之间找到良好的平衡。

通过惩罚系数C来控制这个平衡:C值越小,则间隔越宽,但是间隔违例也会越多。

(三)、核函数

核函数将原始输入空间映射到新的特征空间,使得原本线性不可分的样本在核空间可分

3、相关原理

样本空间中任何点x到超平面(w,b)的距离可以写成:
d = ∣ W T x + b ∣ ∣ ∣ W ∣ ∣ d=\frac{|W^Tx+b|}{||W||} d=∣∣W∣∣WTx+b
如果要找到间距最大的超平面,也就是要找到满足下式中约束的参数w和b,使得间隔最大。
假设两边宽度都为 1 , y i 指样本属于哪一类 { W T x i + b > = + 1 , y i = + 1 W T x i + b = < − 1 , y i = − 1 假设两边宽度都为1,y_i指样本属于哪一类\\ \begin{cases}W^Tx_i+b>=+1,y_i=+1\\W^Tx_i+b=<-1,y_i=-1\end{cases} 假设两边宽度都为1yi指样本属于哪一类{WTxi+b>=+1,yi=+1WTxi+b=<1,yi=1
距离超平面最近的几个训练样本点使上式等号成立,这些点被称为“支持向量”,两个异类支持向量到超平面的距离之和为:
γ = 2 ∣ ∣ W ∣ ∣ \gamma=\frac{2}{||W||} γ=∣∣W∣∣2
可以根据上述公式将最大间隔表示为:
m a x W , b = 2 ∣ ∣ W ∣ ∣ y i ( W T x i + b ) > = 1 , 其中 i = 1 , 2 , 3 , . . . , n max_{W,b}=\frac{2}{||W||}\\ y_i(W^Tx_i+b)>=1,其中i = 1,2,3,...,n maxW,b=∣∣W∣∣2yi(WTxi+b)>=1,其中i=123...n
对上式进行优化:
m i n W , b = 1 2 ∣ ∣ W ∣ ∣ 2 其中 y i ( W T x i + b ) > = 1 , 其中 i = 1 , 2 , 3 , . . . , n min_{W,b}=\frac{1}{2}||W||^2\\ 其中y_i(W^Tx_i+b)>=1,其中i = 1,2,3,...,n minW,b=21∣∣W2其中yi(WTxi+b)>=1,其中i=123...n
添加核函数,对目标函数进行转换:
m i n W , b = 1 2 ∣ ∣ W ∣ ∣ 2 ∑ i = 1 n ( 1 − y i ( w T ⋅ Φ ( x i ) + b ) ) < = 0 min_{W,b}=\frac{1}{2}||W||^2\\ \sum_{i=1}^n(1-y_i(w^T·\Phi(x_i)+b))<=0 minW,b=21∣∣W2i=1n(1yi(wTΦ(xi)+b))<=0
构建拉格朗日函数,其中αi为拉格朗日乘子。拉格朗日乘子法构建的拉格朗日函数将目标优化函数和优化约束条件放在了一起,从而将带约束的极值问题转换为不带约束极值问题。
L ( w , b , α ) = 1 2 ∣ ∣ w ∣ ∣ 2 = ∑ i = 1 n α i ( y i ( w T ⋅ Φ ( x i ) + b ) − 1 ) L(w,b,\alpha)=\frac{1}{2}||w||^2=\sum_{i=1}^n\alpha_i(y_i(w^T·\Phi(x_i)+b)-1) L(w,b,α)=21∣∣w2=i=1nαi(yi(wTΦ(xi)+b)1)
想要对上式求极小值,可以转化为对后式求最大值,转化为对偶问题。

此时就可以利用KKT方式求拉格朗日函数的极值。众所周知,使用拉格朗日乘子法计算不等式约束的极值,结果必须满足3个条件,这就是KKT条件。
∂ L ∂ x = 0 ,拉格朗日函数对变量求导为 0 α i > = 0 ,所有乘子大于等于 0 α i g i ( x ) = 0 ,乘子和约束 ( g i ( x ) 为约束 ) 至少一个为零,互补松弛条件 \frac{\partial L}{\partial x}=0,拉格朗日函数对变量求导为0\\ \alpha_i>=0,所有乘子大于等于0\\ \alpha_ig_i(x)=0,乘子和约束(g_i(x)为约束)至少一个为零,互补松弛条件 xL=0,拉格朗日函数对变量求导为0αi>=0,所有乘子大于等于0αigi(x)=0,乘子和约束(gi(x)为约束)至少一个为零,互补松弛条件
利用上面的特性,对目标式子做偏导:
1 :对 w 求偏导,并令其等于 0 ∂ L ∂ w = w − ∑ i = 1 n α i y i Φ ( x i ) = 0 2 :对 b 求偏导,并令其等于 0 ∂ L ∂ b = ∑ i = 1 n α i y i = 0 1:对w求偏导,并令其等于0\\ \frac{\partial L}{\partial w}=w-\sum_{i=1}^n\alpha_iy_i\Phi(x_i)=0\\ 2:对b求偏导,并令其等于0\\ \frac{\partial L}{\partial b}=\sum_{i=1}^n\alpha_iy_i=0 1:对w求偏导,并令其等于0wL=wi=1nαiyiΦ(xi)=02:对b求偏导,并令其等于0bL=i=1nαiyi=0
求出两个参数偏导后,将结果带入到原式L中
L ( w , b , α ) = 1 2 ∣ ∣ w ∣ ∣ 2 = ∑ i = 1 n α i ( y i ( w T ⋅ Φ ( x i ) + b ) − 1 ) = 1 2 w T w − ∑ i = 1 n ( α i y i w T Φ ( x i ) + α i y i b − α i ) = 1 2 w T w − ∑ i = 1 n α i y i w T Φ ( x i ) − ∑ i = 1 n α i y i b + ∑ i = 1 n α i = 1 2 w T w − ∑ i = 1 n α i y i w T Φ ( x i ) + ∑ i = 1 n α i = 1 2 w T ∑ i = 1 n α i y i Φ ( x i ) − w T ∑ i = 1 n α i y i Φ ( x i ) + ∑ i = 1 n α i = ∑ i = 1 n α i − 1 2 ( ∑ i = 1 n α i y i Φ ( x i ) ) T ⋅ ∑ i = 1 n α i y i Φ ( x i ) = ∑ i = 1 n α i − 1 2 ∑ i = 1 n ∑ j = 1 m α i α j y i y j Φ T ( x i ) Φ ( x j ) L(w,b,\alpha)=\frac{1}{2}||w||^2=\sum_{i=1}^n\alpha_i(y_i(w^T·\Phi(x_i)+b)-1)\\ =\frac{1}{2}w^Tw-\sum_{i=1}^n(\alpha_iy_iw^T\Phi(x_i)+\alpha_iy_ib-\alpha_i)\\ =\frac{1}{2}w^Tw-\sum_{i=1}^n\alpha_iy_iw^T\Phi(x_i)-\sum_{i=1}^n\alpha_iy_ib+\sum_{i=1}^n\alpha_i\\ =\frac{1}{2}w^Tw-\sum_{i=1}^n\alpha_iy_iw^T\Phi(x_i)+\sum_{i=1}^n\alpha_i\\ =\frac{1}{2}w^T\sum_{i=1}^n\alpha_iy_i\Phi(x_i)-w^T\sum_{i=1}^n\alpha_iy_i\Phi(x_i)+\sum_{i=1}^n\alpha_i\\ =\sum_{i=1}^n\alpha_i-\frac{1}{2}(\sum_{i=1}^n\alpha_iy_i\Phi(x_i))T·\sum_{i=1}^n\alpha_iy_i\Phi(x_i)\\ =\sum_{i=1}^n\alpha_i-\frac{1}{2}\sum_{i=1}^n\sum_{j=1}^m\alpha_i\alpha_jy_iy_j\Phi^T(x_i)\Phi(x_j) L(w,b,α)=21∣∣w2=i=1nαi(yi(wTΦ(xi)+b)1)=21wTwi=1n(αiyiwTΦ(xi)+αiyibαi)=21wTwi=1nαiyiwTΦ(xi)i=1nαiyib+i=1nαi=21wTwi=1nαiyiwTΦ(xi)+i=1nαi=21wTi=1nαiyiΦ(xi)wTi=1nαiyiΦ(xi)+i=1nαi=i=1nαi21(i=1nαiyiΦ(xi))Ti=1nαiyiΦ(xi)=i=1nαi21i=1nj=1mαiαjyiyjΦT(xi)Φ(xj)
此时我们就需要求解α等于多少时拉格朗日函数最大。
a ∗ = a r g m a x ( ∑ i = 1 n α i − 1 2 ∑ i = 1 n ∑ j = 1 m α i α j y i y j Φ T ( x i ) Φ ( x j ) ) a^*=arg max(\sum_{i=1}^n\alpha_i-\frac{1}{2}\sum_{i=1}^n\sum_{j=1}^m\alpha_i\alpha_jy_iy_j\Phi^T(x_i)\Phi(x_j)) a=argmax(i=1nαi21i=1nj=1mαiαjyiyjΦT(xi)Φ(xj))
再次转换,将上式转为求最小值问题:
m i n ( 1 2 ∑ i = 1 n ∑ j = 1 m α i α j y i y j Φ T ( x i ) Φ ( x j ) − ∑ i = 1 n α i ) ∑ i = 1 n α i y i = 0 , α i > = 0 , i = 1 , 2 , 3 , . . . , n min(\frac{1}{2}\sum_{i=1}^n\sum_{j=1}^m\alpha_i\alpha_jy_iy_j\Phi^T(x_i)\Phi(x_j)-\sum_{i=1}^n\alpha_i)\\ \sum_{i=1}^n\alpha_iy_i=0,\alpha_i>=0,i=1,2,3,...,n min(21i=1nj=1mαiαjyiyjΦT(xi)Φ(xj)i=1nαi)i=1nαiyi=0αi>=0i=123...n
将训练样本带入上述公式,求解出αi值,再将该值带入之前偏导的结果式子中,得出:
w ∗ = ∑ i = 1 n α i ∗ y i Φ ( x i ) b ∗ = y k − ∑ i = 1 n α i ∗ y i Φ T ( x i ) Φ ( x k ) 其中 k 时一个支持向量点,即对 求得最终分类超平面: α k > 0 ,有 y k ( w T Φ ( x k ) + b ) = 1 w ∗ Φ ( x ) + b ∗ = 0 w^*=\sum_{i=1}^n\alpha_i^*y_i\Phi(x_i)\\ b^*=y_k-\sum_{i=1}^n\alpha_i^*y_i\Phi^T(x_i)\Phi(x_k)\\ 其中k时一个支持向量点,即对\\ 求得最终分类超平面:\alpha_k>0,有y_k(w^T\Phi(x_k)+b)=1\\ w^*\Phi(x)+b^*=0 w=i=1nαiyiΦ(xi)b=yki=1nαiyiΦT(xi)Φ(xk)其中k时一个支持向量点,即对求得最终分类超平面:αk>0,有yk(wTΦ(xk)+b)=1wΦ(x)+b=0

4、相关api

导包:

from sklearn.svm import LinearSVC

调用:

LinearSVC(C=1.0)

C:惩罚系数,类似于线性回归中的正则化系数

C惩罚力度越大,则间隔越小

C惩罚力度越小,则间隔越大

5、核函数

(一)、概述

原始输入空间映射到新的特征空间,从而,使原本线性不可分的样本可能在核空间可分

(二)、分类

线性核:一般是不增加数据维度,而是预先计算内积,提高速度

多项式核:一般是通过增加多项式特征,提升数据维度,并计算内积

高斯核(RBF、径向基函数):产生将样本投射到无限维空间的运算效果,使得原来不可分的数据变得可分。使用最多

(三)、高斯核函数

(1)、概述

高斯核 Radial Basis Function Kernel (径向基函数,又称RBF核)
K ( x , y ) = e − γ ∣ ∣ x − y ∣ ∣ 2 γ 是超参数,作用于标准差相反 K(x,y)=e^{-\gamma||x-y||^2}\\ \gamma是超参数,作用于标准差相反 K(x,y)=eγ∣∣xy2γ是超参数,作用于标准差相反
gamma越大,高斯分布越窄,gamma越小,高斯分布越宽

(2)、相关api

导包:

from sklearn.svm import SVC

调用:

SVC(kernel=‘rbf’,gamma=gamma)

(3)、对比高斯函数

K ( x , y ) = e − γ ∣ ∣ x − y ∣ ∣ 2 g ( x ) = 1 σ 2 π e − 1 2 ( x − μ σ ) 2 可以看的出来 γ 等价于 1 2 σ 2 K(x,y)=e^{-\gamma||x-y||^2}\\ g(x)=\frac{1}{\sigma\sqrt{2\pi}}e^{-\frac{1}{2}(\frac{x-\mu}{\sigma})^2}\\ 可以看的出来\gamma等价于\frac{1}{2\sigma^2} K(x,y)=eγ∣∣xy2g(x)=σ2π 1e21(σxμ)2可以看的出来γ等价于2σ21


http://www.mrgr.cn/news/60298.html

相关文章:

  • el-table在某些条件下禁止选中
  • Vue学习笔记(六)
  • STL-常用容器-list
  • 前端学习---(6)js基础--4
  • AI 提示词(Prompt)入门 :ChatGPT 4.0 高级功能指南
  • 远程:HTTP基本身份验证失败。提供的密码或令牌不正确,或者您的账户启用了两步验证,您必须使用个人访问令牌而不是密码。
  • Spring Boot摄影工作室:构建Web版在线服务平台
  • jieba:智能文本处理的利器,结巴中文分词
  • 培育增长新动能,英搏尔数字化管理升级与创新的实践
  • Go语言编译详解
  • PHP员工管理系统小程序
  • 充电宝哪个牌子好?2024精选五款优质充电宝,入门避坑必看攻略!
  • 了解 SQL 查询执行顺序
  • 突破AI极限!GPT写的英语作文在全国大学生大赛中得分99!
  • 【论文阅读】jina-embeddings-v3: Multilingual Embeddings With Task LoRA
  • 代码随想录(十二)——图论
  • VLAN聚合的实验配置
  • 前端内存空间(堆、栈、队列、拷贝、垃圾回收)
  • 【React】React 18:新特性与重大更新解析
  • Redis安装说明
  • Colorful/七彩虹将星X17 Pro 22 Win11原厂OEM系统 带COLORFUL一键还原
  • 用Spring Boot打造你的网上摄影工作室
  • 《AI 大模型与深度合成技术:安全隐患与应对之策》
  • 靶向赋能 以学促战——山海关公安特邀知名警务教官徐忠宁授课培训
  • 分布式 ID 生成策略(一)
  • AI语音机器人系统的六大特色语音识别呼叫系统部署