支持向量机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} 假设两边宽度都为1,yi指样本属于哪一类{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=1,2,3,...,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∣∣W∣∣2其中yi(WTxi+b)>=1,其中i=1,2,3,...,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∣∣W∣∣2i=1∑n(1−yi(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∣∣w∣∣2=i=1∑nα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)为约束)至少一个为零,互补松弛条件 ∂x∂L=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求偏导,并令其等于0∂w∂L=w−i=1∑nαiyiΦ(xi)=02:对b求偏导,并令其等于0∂b∂L=i=1∑nα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∣∣w∣∣2=i=1∑nαi(yi(wT⋅Φ(xi)+b)−1)=21wTw−i=1∑n(αiyiwTΦ(xi)+αiyib−αi)=21wTw−i=1∑nαiyiwTΦ(xi)−i=1∑nαiyib+i=1∑nαi=21wTw−i=1∑nαiyiwTΦ(xi)+i=1∑nαi=21wTi=1∑nαiyiΦ(xi)−wTi=1∑nαiyiΦ(xi)+i=1∑nαi=i=1∑nαi−21(i=1∑nαiyiΦ(xi))T⋅i=1∑nαiyiΦ(xi)=i=1∑nαi−21i=1∑nj=1∑mα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=1∑nαi−21i=1∑nj=1∑mα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=1∑nj=1∑mαiαjyiyjΦT(xi)Φ(xj)−i=1∑nαi)i=1∑nαiyi=0,αi>=0,i=1,2,3,...,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=1∑nαi∗yiΦ(xi)b∗=yk−i=1∑nαi∗yiΦ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−γ∣∣x−y∣∣2γ是超参数,作用于标准差相反

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−γ∣∣x−y∣∣2g(x)=σ2π 1e−21(σx−μ)2可以看的出来γ等价于2σ21

相关推荐
胖哥真不错9 分钟前
Python基于TensorFlow实现GRU-Transformer回归模型(GRU-Transformer回归算法)项目实战
python·gru·tensorflow·transformer·回归模型·项目实战·gru-transformer
feilieren13 分钟前
leetcode - 684. 冗余连接
java·开发语言·算法
chusheng184016 分钟前
Python Transformer 模型的基本原理:BERT 和 GPT 以及它们在情感分析中的应用
python·bert·transformer
余~1853816280023 分钟前
矩阵系统源码搭建,OEM贴牌技术
网络·人工智能·线性代数·算法·矩阵
Tianwen_Burning33 分钟前
Halcon相机外参自理解
算法
離離原上譜38 分钟前
python网络爬虫基础:requests库的应用
爬虫·python
weixin_466202781 小时前
第29周:实现mnist手写数字识别(Tensorflow实战第一周)
人工智能·python·tensorflow
代码猪猪傻瓜coding1 小时前
python mac vscode 脚本文件的运行
pytorch·python
梓羽玩Python1 小时前
推荐一款基于快手Kolors模型开发的虚拟试衣浏览器插件!妥妥的安排上!
人工智能·python·github