传统机器学习(七)支持向量机(1)超平面、SVM硬间隔、软间隔模型和损失函数

news/2024/11/24 12:53:31/

传统机器学习(七)支持向量机(1)

1 算法概述

1.1 超平面的理解

1.1.1 超平面公式

我们对“平面”概念的理解,一般是定义在三维空间中的,如下:

在这里插入图片描述

假设M和M0为平面上的两点,n为该平面的法向量,那么,通过下图可以容易推导出三维空间中的平面方程:
A x + B y + C z + D = 0 Ax + By+Cz+D=0 Ax+By+Cz+D=0
在这里插入图片描述

我们把A、B、C写作w,把x、y、z写作x,且拓展到n维空间:
w 1 x 1 + w 2 x 2 + w 3 x 3 + . . . + w n x n + b = w T x + b = 0 w_1x_1 + w_2x_2 + w_3x_3 + ...+w_nx_n + b=w^Tx + b=0 w1x1+w2x2+w3x3+...+wnxn+b=wTx+b=0
因此,n维空间的超平面方程为
ω T x + b = 0 \omega^T x + b = 0 ωTx+b=0
虽然当维度大于3才可以成为“超”平面,但是你仍然可以认为,一条直线是 R2 空间内的超平面,一个平面是 R3 空间内的超平面 。Rn 空间的超平面是Rn 空间内的一个 n - 1 维的仿射子空间。

1.1.2 点到超平面的距离公式推导

我们已经知道,超平面A可以表达为:
ω T x + b = 0 \omega^T x + b = 0 ωTx+b=0
假设x'为超平面上任意一点,那么显然就满足:
ω T x ’ + b = 0 ( 公式 1 ) \omega^T x’ + b = 0 (公式1) ωTx+b=0(公式1)

我们知道,对于空间上任意一点 x, 到平面 A 的距离 H,等于 向量 xx’ 在平面A法向量上的投影。

在这里插入图片描述

而计算投影,将 xx’ 乘以法向量 w 即可。并且,我们不光要投影,还要计算单位,即使用单位为 1 的投影。也就是在分母除以 || w ||。所以,距离 H 可以表示为:
H = ∣ ω T ( x − x ′ ) ∣ ∣ ∣ ω ∣ ∣ ( 公式 2 ) H = \frac{\mid \omega^T (x-x') \mid}{\mid\mid \omega \mid\mid}(公式2) H=∣∣ω∣∣ωT(xx)(公式2)
然后,将公式1和公式2进行合并。

因此,样本空间中的任意一点 x,到超平面(w,b)的距离,可以表示为
d = ∣ ω T x + b ∣ ∣ ∣ ω ∣ ∣ d = \frac{\mid \omega^T x + b \mid}{\mid\mid \omega \mid\mid} d=∣∣ω∣∣ωTx+b

1.2 SVM硬间隔模型和损失函数

SVM硬间隔模型用于样本线性可分的二分类,它的原始目的是找出一个判别面,让样本离判断面的最小距离最大化。硬间隔是相对软间隔模型而言,软间隔不要求样本线性可分。

在这里插入图片描述

不过,由于直接找最优判别面较难找,SVM并不是直接找最优判别面,而是在两类样本之间,引入两个平行的支持面(支持面之间不能有样本),然后让支持平面尽量撑开。

当两个支持平面的距离最大化时,两个支持平面的中心,就是要找的最优判别面。所以,SVM的直接目标是找出距离最大化的两个支持面,从而找出最优判别面的原始目的。

落在支持面上的样本,称为支持向量,它们是模型的关键样本。

1.2.1 SVM支持面的表达式

(w,b)代表两个支持面的中心平面(即判别面)wx + b = 0,中心平面向两边展开d距离,就是两个支持面。
我们注意到 d 的取值范围为 ( 0 , + ∞ ) 对平面 w x + b = 0 , 1 ∥ w ∥ 的取值范围也是 ( 0 , + ∞ ) 不妨用 1 ∥ w ∥ 来替代 d , 这样可以消去 d 我们注意到d的取值范围为 (0,+\infty ) \\对平面wx+b=0,\dfrac{1}{\left \| w \right \| } 的取值范围也是 (0,+\infty ) \\不妨用\dfrac{1}{\left \| w \right \| } 来替代d,这样可以消去d 我们注意到d的取值范围为(0,+)对平面wx+b=0w1的取值范围也是(0,+)不妨用w1来替代d,这样可以消去d

在这里插入图片描述

因此,SVM对于支持面的表示如下:
支持面的表示方法: ( w , b ) 其中, w x + b = 0 是两个支持面的中心 ( 即判别面 ) d = 1 ∥ w ∥ 是支持面离中面心的距离,即由 w x + b = 0 ,两边展开 1 ∥ w ∥ 距离, 就得到了两个支持面 支持面的表示方法:(w,b) \\ 其中,wx+b=0是两个支持面的中心(即判别面) \\ d=\dfrac{1}{\left \| w \right \| }是支持面离中面心的距离,即由wx+b=0,两边展开\dfrac{1}{\left \| w \right \| } 距离,\\ 就得到了两个支持面 支持面的表示方法:(w,b)其中,wx+b=0是两个支持面的中心(即判别面)d=w1是支持面离中面心的距离,即由wx+b=0,两边展开w1距离,就得到了两个支持面

1.2.2 SVM模型表达式

SVM模型数学表达式为
y = sign ( w x + b ) \text{y} = \text{sign}(wx+b) y=sign(wx+b)
也就是判断样本是在判别面的正侧还是负侧,从而决定模型是正样本还是负样本。
由几何关系可知,样本到判别面的距离为 d ( x ) = ∣ w x + b ∥ w ∥ ∣ 如果保留距离的正负号,则有 d ± ( x ) = w x i + b ∥ w ∥ 即有: d ± ( x ) = w x + b ∥ w ∥ ⇒ d ± ( x ) = d ∗ ( w x + b ) ⇒ d ± ( x ) d = w x + b 其中 d = 1 ∥ w ∥ 是支持平面到判别平面的距离 由几何关系可知,样本到判别面的距离为 d(x) = \left | \dfrac{wx+b}{\left \| w \right \| } \right | \\ 如果保留距离的正负号,则有 d_{\pm }(x) = \dfrac{wx_i+b}{\left \| w \right \| } \\ 即有:\\ \begin{aligned} &d_{\pm }(x) = \dfrac{wx+b}{\left \| w \right \| } \\ \Rightarrow &d_{\pm }(x) = d*(wx+b) \\ \Rightarrow & \dfrac{ d_{\pm }(x)}{d} = wx+b \end{aligned} \\ 其中 d=\dfrac{1}{\left \| w \right \| }是支持平面到判别平面的距离 由几何关系可知,样本到判别面的距离为d(x)= wwx+b 如果保留距离的正负号,则有d±(x)=wwxi+b即有:d±(x)=wwx+bd±(x)=d(wx+b)dd±(x)=wx+b其中d=w1是支持平面到判别平面的距离
因此,如下图,wx + b的意义是:样本和判别面直接的距离支持面到判别面的距离的比值,符号代表在判别面的正侧还是负侧。

在这里插入图片描述

1.2.3 SVM模型的损失函数

1.2.3.1 损失函数的推导

优化目标

在这里插入图片描述

目标函数

在这里插入图片描述

在这里插入图片描述

1.2.3.2 损失函数的意义

损失函数的优化目标 L ( w , b ) =  1 2 ∥ w ∥ 2 本质是最小化 ∥ w ∥ , 又因为 ∥ w ∥ = 1 d ,所以本质是最大化两个支持面之间的距离 ( 2 d ) 将 ∥ w ∥ 改成 1 2 ∥ w ∥ 2 ,加平方是为了可以去掉范数里的根号, 同时乘以 1 2 ,进一步方便损失函数求导后的简洁 损失函数的优化目标 L(w,b) = \dfrac{1}{2} \left \| w \right \|^2 \\ 本质是最小化\left \| w \right \|,\\ 又因为\left \| w \right \|=\dfrac{1}{d},所以本质是最大化两个支持面之间的距离(2d) \\ 将 \left \| w \right \| 改成 \dfrac{1}{2} \left \| w \right \|^2 ,加平方是为了可以去掉范数里的根号,\\同时乘以\dfrac{1}{2} ,进一步方便损失函数求导后的简洁 损失函数的优化目标L(w,b)=21w2本质是最小化w又因为w=d1,所以本质是最大化两个支持面之间的距离(2d)w改成21w2,加平方是为了可以去掉范数里的根号,同时乘以21,进一步方便损失函数求导后的简洁

y i ( w x i + b ) ⩾ 1 ,可以将它拆成 y i = 1 , 和 y i = − 1 两种情况 ( w x i + b ) ⩾ 1 , y i = 1 ( w x i + b ) ≤ − 1 , y i = − 1 w x + b 的意义就是样本和判别面直接的距离与支持面到判别面的距离的比值,符号代表在判别面的正侧还是负侧。 因此约束条件是 y i = 1 时,即正样本,不能在正支持面的负侧 因此约束条件是 y i = − 1 时,即负样本,不能在负支持面的正侧 y_i(wx_i+b)⩾1,可以将它拆成\text{y}_i=1,和 \text{y}_i=-1两种情况 \\ (wx_i+b)⩾1,\text{y}_i=1 \\ (wx_i+b)≤-1,\text{y}_i=-1 \\ wx +b的意义就是样本和判别面直接的距离与支持面到判别面的距离的比值,符号代表在判别面的正侧还是负侧。\\ 因此约束条件是\text{y}_i=1时,即正样本,不能在正支持面的负侧\\ 因此约束条件是\text{y}_i=-1时,即负样本,不能在负支持面的正侧 yi(wxi+b)1,可以将它拆成yi=1,yi=1两种情况(wxi+b)1,yi=1(wxi+b)1,yi=1wx+b的意义就是样本和判别面直接的距离与支持面到判别面的距离的比值,符号代表在判别面的正侧还是负侧。因此约束条件是yi=1时,即正样本,不能在正支持面的负侧因此约束条件是yi=1时,即负样本,不能在负支持面的正侧
损失函数总的意思就是约束两个支持面必须在正负样本之间,且两个支持面之间不能有样本,然后最大化两个支持面之间的距离。

1.2.4 拉格朗日乘子法求解硬间隔损失函数

硬间隔的损失函数
目标函数 : L ( w , b ) =  1 2 ∥ w ∥ 2 约束条件 : y i ( w x i + b ) − 1 ⩾ 0 , i = 1 , 2 , 3 , . . . , N 目标函数: L(w,b) = \dfrac{1}{2} \left \| w \right \|^2 \\ 约束条件: y_i(wx_i+b) - 1⩾0,i=1,2,3,...,N 目标函数:L(w,b)=21w2约束条件:yi(wxi+b)10i=1,2,3,...,N
带有约束条件,一般先转为拉格朗日函数形式:
拉格朗日函数形式 : L ( w , b , a ) = 1 2 ∥ w ∥ 2 − ∑ i = 1 N a i [ y i ( w x i + b ) − 1 ] = 1 2 ∥ w ∥ 2 − ∑ i = 1 N a i y i ( w x i + b ) + ∑ i = 1 N a i 其中 a i ⩾ 0 拉格朗日函数形式: \\ L(w,b,a) = \dfrac{1}{2} \left \| w \right \|^2 - \sum\limits_{i=1}^N a_i[y_i(wx_i+b) - 1] \\ = \dfrac{1}{2} \left \| w \right \|^2 - \sum\limits_{i=1}^Na_iy_i(wx_i+b)+ \sum\limits_{i=1}^Na_i \\ 其中a_i⩾0 拉格朗日函数形式:L(w,b,a)=21w2i=1Nai[yi(wxi+b)1]=21w2i=1Naiyi(wxi+b)+i=1Nai其中ai0
svm求解

-- 满足以下两个条件,可以转为对偶问题
1.目标函数与约束条件是凸函数                  
2.约束条件里,是严格可执行的(即一定有解)
原问题与对偶问题的解就相等,且两个问题的解满足满足KKT条件

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

通过拉格朗日乘子法以及对原问题的对偶问题进行求解,我们得到了二次规划的公式。虽然我们已经把式子化简成了只有一种参数α,但这个极值又应该怎么求呢?这需要引入一个新的算法——SMO。

SMO的全写是Sequential Minimal Optimization,翻译过来是序列最小优化算法。算法的核心思想是由于我们需要寻找的是一系列的α值使得二次规划的公式取极值。后续会详细介绍SMO算法。

1.2.5 SVM求解实例

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

1.3 SVM软间隔模型和损失函数

  • 由于硬间隔损失函数的前提是样本一定线性可分,但现实中的数据往往无法线性可分,于是,在SVM硬间隔模型的基础上进行改进,提出了SVM软间隔模型。

  • 软间隔SVM模型与硬间隔SVM模型一致,仍然是判别平面+两个支持平面,用(w,b)表示,其中(w,b)代表判别平面,1/|w|代表支持平面到判别平面的距离。

  • 软间隔SVM模型与硬间隔SVM模型不同的是,软间隔SVM允许正支持平面的负侧有正样本,也允许负支持平面正侧有负样本,它的目标在于,尽量让两个支持面的距离更大的同时,样本的错误程度尽量少

在这里插入图片描述

1.3.1 SVM软间隔模型

SVM模型数学表达式为
y = sign ( w x + b ) \text{y} = \text{sign}(wx+b) y=sign(wx+b)
损失函数表达式为
目标函数 : L ( w , b ) = 1 2 ∥ w ∥ 2 + C ∑ i = 1 N ϵ i 约束条件 : ( 1 ) y i ( w x i + b ) − ( 1 − ϵ i ) ⩾ 0 ( 2 ) ϵ i ⩾ 0 目标函数: L(w,b) = \dfrac{1}{2} \left \| w \right \|^2 + C\sum\limits_{i=1}^N\epsilon_i \\ 约束条件: (1) y_i(wx_i+b) - (1-\epsilon_i)⩾0 \\ (2)\epsilon_i⩾0 目标函数:L(w,b)=21w2+Ci=1Nϵi约束条件:(1)yi(wxi+b)(1ϵi)0(2)ϵi0

约束条件的意义
y i ( w x i + b ) ⩾ ( 1 − ϵ i ) ,可以将它拆成 y i = 1 , 和 y i = − 1 两种情况 ( w x i + b ) ⩾ ( 1 − ϵ i ) , y i = 1 ( w x i + b ) ≤ − ( 1 − ϵ i ) , y i = − 1 硬间隔 y i ( w x i + b ) ⩾ 1 ,代表正样本不能在正支持面的负侧,现在改为 y i ( w x i + b ) ⩾ ( 1 − ϵ i ) 其实是引入了松弛变量 ϵ i ,代表允许第 i 个正样本,可以在正支持面的负侧 ϵ i 位置 同理,第 i 个负样本,可以在负支持面的正侧 ϵ i 位置 y_i(wx_i+b)⩾(1-\epsilon_i),可以将它拆成\text{y}_i=1,和 \text{y}_i=-1两种情况 \\ (wx_i+b)⩾(1-\epsilon_i),\text{y}_i=1 \\ (wx_i+b)≤-(1-\epsilon_i),\text{y}_i=-1 \\ 硬间隔y_i(wx_i+b)⩾1,代表正样本不能在正支持面的负侧,现在改为y_i(wx_i+b)⩾(1-\epsilon_i)\\ 其实是引入了松弛变量\epsilon_i,代表允许第i个正样本,可以在正支持面的负侧\epsilon_i位置 \\ 同理,第i个负样本,可以在负支持面的正侧\epsilon_i位置 yi(wxi+b)(1ϵi),可以将它拆成yi=1,yi=1两种情况(wxi+b)(1ϵi),yi=1(wxi+b)(1ϵi),yi=1硬间隔yi(wxi+b)1,代表正样本不能在正支持面的负侧,现在改为yi(wxi+b)(1ϵi)其实是引入了松弛变量ϵi,代表允许第i个正样本,可以在正支持面的负侧ϵi位置同理,第i个负样本,可以在负支持面的正侧ϵi位置
在这里插入图片描述

目标函数的意义
在约束条件的基础上,再在目标函数中,加入对所有样本总偏离的惩罚项 C ∑ i = 1 N ϵ i ,其中 C 为惩罚因子。 当 C 很大的时候,意味着分类严格不能有错误。 当 C 很大小时候,意味着可以有更大的错误容忍。 总的损失函数为 L ( w , b ) = 1 2 ∥ w ∥ 2 + C ∑ i = 1 N ϵ i 这样既能够让两个支持面尽量最大化的同时,也在尽量降低支持面没有支持到样本的总偏离总量。 在约束条件的基础上,再在目标函数中,加入对所有样本总偏离的惩罚项C\sum\limits_{i=1}^N\epsilon_i,其中C为惩罚因子。\\ 当C很大的时候,意味着分类严格不能有错误。\\ 当C很大小时候,意味着可以有更大的错误容忍。\\总的损失函数为L(w,b) = \dfrac{1}{2} \left \| w \right \|^2 + C\sum\limits_{i=1}^N\epsilon_i \\ 这样既能够让两个支持面尽量最大化的同时,也在尽量降低支持面没有支持到样本的总偏离总量。 在约束条件的基础上,再在目标函数中,加入对所有样本总偏离的惩罚项Ci=1Nϵi,其中C为惩罚因子。C很大的时候,意味着分类严格不能有错误。C很大小时候,意味着可以有更大的错误容忍。总的损失函数为L(w,b)=21w2+Ci=1Nϵi这样既能够让两个支持面尽量最大化的同时,也在尽量降低支持面没有支持到样本的总偏离总量。

软间隔支持向量定义

我们已经知道,硬间隔的支持向量,是指落在支持面上的样本。

而软间隔的支持向量,指的是落在支持面上的样本,及支持面没支持住的样本。

实质就是决定支持面的关键样本,在这点上与硬间隔是统一与一致的。不够软间隔支持面不仅要考虑最大间隔,还要考虑没支持住的样本。

在这里插入图片描述

1.3.2 拉格朗日乘子法求解软间隔损失函数

带有约束条件,一般先转为拉格朗日函数形式,再通过交换拉格朗日函数形式中的优化顺序来获得对偶问题。

软间隔损失函数如下:
目标函数 : L ( w , b ) = 1 2 ∥ w ∥ 2 + C ∑ i = 1 N ϵ i 约束条件 : ( 1 ) y i ( w x i + b ) − ( 1 − ϵ i ) ⩾ 0 , i = 1 , 2 , 3 , . . . , N ( 2 ) ϵ i ⩾ 0 , i = 1 , 2 , 3 , . . . , N 目标函数: L(w,b) = \dfrac{1}{2} \left \| w \right \|^2 + C\sum\limits_{i=1}^N\epsilon_i \\ 约束条件: (1) y_i(wx_i+b) - (1-\epsilon_i)⩾0 ,i=1,2,3,...,N\\ (2)\epsilon_i⩾0,i=1,2,3,...,N 目标函数:L(w,b)=21w2+Ci=1Nϵi约束条件:(1)yi(wxi+b)(1ϵi)0i=1,2,3,...,N(2)ϵi0i=1,2,3,...,N

在这里插入图片描述

推导过程可以参考:http://ml.bbbdata.com/site/text/226

1.4 SVM多类别模型

SVM的多类别模型,是基于两分类模型的基础上,进行改进得到的。它将样本数据按类别进行两两建模,最终得到 k*(k-1)/2个模型,k是类别个数。
在预测时,用这 k ∗ ( k − 1 ) / 2 个模型分别对样本进行投票,对于用 i , j 建立的模型, 如果输出的判别值 > 0 ,则认为是 i 类,给 i 类投一票如果输出的判别值 ⩽ 0 ,则认为是 j 类,给 j 类投一票 共 k ∗ ( k − 1 ) / 2 个模型,所以一共 k ∗ ( k − 1 ) / 2 票,最后哪个类别的得票最多,就认为是哪个类别 在预测时,用这 k*(k-1)/2 个模型分别对样本进行投票,对于用i,j建立的模型,\\ 如果输出的判别值>0,则认为是i类,给i类投一票 如果输出的判别值\leqslant0,则认为是j类,给j类投一票 \\ 共 k*(k-1)/2 个模型,所以一共 k*(k-1)/2票,最后哪个类别的得票最多,就认为是哪个类别 在预测时,用这k(k1)/2个模型分别对样本进行投票,对于用i,j建立的模型,如果输出的判别值>0,则认为是i类,给i类投一票如果输出的判别值0,则认为是j类,给j类投一票k(k1)/2个模型,所以一共k(k1)/2票,最后哪个类别的得票最多,就认为是哪个类别

本篇博客借鉴大佬的博客网站:

http://ml.bbbdata.com/site/text/223

https://www.huaxiaozhuan.com/

https://apachecn.org/#/docs/tree/README


http://www.ppmy.cn/news/97533.html

相关文章

MySQL存储引擎对比总结

文章目录 一、存储引擎是什么二、存储引擎有哪些三、常用存储引擎介绍1、InnoDB2、MyISAM3、MEMORY4、MRG_MYISAM (MERGE)5、ARCHIVE6、BLACKHOLE7、FEDERATED8、CSV9、PERFORMANCE_SCHEMA10、NDB 一、存储引擎是什么 存储引擎是数据库的核心&#xff0…

Cpolar内网穿透本地MariaDB数据库

Cpolar内网穿透本地MariaDB数据库 cpolar内网穿透本地MariaDB数据库,实现外公网环境下使用navicat图形化工具远程连接本地内网的MariaDB数据库 配置MariaDB数据库 安装MariaDB数据库 进入MariaDB数据库官网https://mariadb.com/downloads/community/,然后下载相应的…

centos7安装docker 并创建mysql

Docker 分为 CE 和 EE 两大版本。CE 即社区版(免费,支持周期 7 个月),EE 即企业版,强调安全,付费使用,支持周期 24 个月。 Docker CE 分为 stable test 和 nightly 三个更新频道。 官方网站上有…

分布式简要说明

1.分布式简要说明 《分布式系统原理与范型》定义: 分布式系统是若干独立计算机的集合,这些计算机对于用户来说就像单个相关系统。 分布式系统 (distributed system) 是建立在网络之上的软件系统。 随着互联网的发展,网站应用的规模不断扩…

Linux-0.11 文件系统char_dev.c详解

Linux-0.11 文件系统char_dev.c详解 模块简介 char_dev.c文件主要负责字符设备的访问方法。 函数详解 rw_ttyx static int rw_ttyx(int rw,unsigned minor,char * buf,int count,off_t * pos)该函数是串口终端的读写函数。 return ((rwREAD)?tty_read(minor,buf,count):…

使用PyTorch构建神经网络,并计算参数Params

文章目录 使用PyTorch构建神经网络,并计算参数Params举例计算具有全连接层的神经网络的参数数量计算卷积神经网络的参数数量Params计算过程 总结 使用PyTorch构建神经网络,并计算参数Params 在深度学习中,模型的参数数量是一个非常重要的指标…

学习WiFi,怎么入手?

欢迎大家一起学习探讨通信之WLAN。在工作和平时与朋友交流中,时不时有人问到,“想学WiFi,不知道如何入手?”,“搞了一两年WiFi,但感觉还是一头雾水,啥都没掌握,怎么办?”…

vue字符串拼接的多种方法

在 vue项目中,我们可以使用多个不同的方法来拼接字符串。今天我们就来介绍一下 vue中各种方法的用法。 第一种方法:使用 lodash进行字符串拼接,这是最简单的一个方法,它最大的缺点就是它比较慢,需要时间去执行拼接&…