作者:張張張張
github地址:https://github.com/zhanghekai
【转载请注明出处,谢谢!】

【机器学习系列】之SVM硬间隔和软间隔
【机器学习系列】之SVM核函数和SMO算法
【机器学习系列】之支持向量回归SVR
【机器学习系列】之sklearn实现SVM代码

SVM概述

假定给出训练样本集D={(x1,y1),(x2,y2),...,(xm,ym)},yi∈{−1,+1}D=\{(x_1,y_1),(x_2,y_2),...,(x_m,y_m)\},y_i \in \{-1,+1\}D={(x1​,y1​),(x2​,y2​),...,(xm​,ym​)},yi​∈{−1,+1},为二分类问题,其中y为分类标签,有两类分别为+1和-1。分类学习最基本的想法就是基于训练集D在样本空间中找到一个划分超平,将不同类别的样本分开,但能将训练样本分开的划分超平面可能有很多,我们应该找哪一条呢?如下图所示,图中红色的那个超平面是最好的,因为这个划分超平面所产生的分类结果是最鲁棒的,对未见示例的泛化能力最强。支持向量机SVM所要解决的事情就是找到这样一个鲁棒性最好的超平面。

SVM算法的主要优点:

  • 解决高维特征的分类问题和回归问题很有效,在特征维度大于样本数时依然有很好的效果。
  • 仅仅使用一部分支持向量来做超平面的决策无需依赖全部数据。
  • 有大量的核函数可以使用,从而可以很灵活的来解决各种非线性的分类回归问题。
  • 样本量不是海量数据的时候,分类准确率高,泛化能力强。

SVM算法的主要缺点:

  • 如果特征维度远远大于样本数,则SVM表现一般。
  • SVM在样本量非常大,核函数映射维度非常高时,计算量过大,不太适合使用。
  • 非线性问题的核函数的选择没有通用标准,难以选择一个合适的核函数。
  • SVM对缺失数据敏感。

一、硬间隔SVM基本型

1.超平面定义

在样本空间中,划分的超平面可用如下线性方程来表述:
wTx+b=0(1)w^Tx+b=0 \quad\quad\quad\quad(1) wTx+b=0(1)

其中x=(x1;x2;...;xd)x=(x_1;x_2;...;x_d)x=(x1​;x2​;...;xd​)为样本点在样本空间中的坐标,xix_ixi​代表样本点在每一维度上坐标点的值;w=(w1;w2;...;wd)w=(w_1;w_2;...;w_d)w=(w1​;w2​;...;wd​)为法向量,决定了超平面的方向,x是几维的,就有几个w;b为位移项,决定了超平面与原点之间的距离。显然,划分超平面可被法向量w和位移b确定,记超平面为(w,b)

2.点到直线间的距离

样本空间中任意点x到超平面(w,b)的距离可写为:
r=∣wT+b∣∣∣w∣∣(2)r = \frac{|w^T+b|}{||w||}\quad\quad\quad\quad(2) r=∣∣w∣∣∣wT+b∣​(2)
拓展:

  1. L2范数:∣∣w∣∣=∑i=1k∣wi∣2||w|| = \sqrt {\sum_{i=1}^{k}|w_i|^2}∣∣w∣∣=∑i=1k​∣wi​∣2​

  2. 二维空间点到直线的距离:d=∣Ax+By+c∣A2+B2d = \frac{|Ax+By+c|}{\sqrt{A^2+B^2}}d=A2+B2​∣Ax+By+c∣​,由此可以类比到多维空间上点到直线的距离。

3.模型假设

假设超平面(w,b)能将训练样本正确分类,即对于二分类问题,训练样本上的点均为x坐标已知,对应的y分类已知:若yi=+1y_i=+1yi​=+1,则有wTxi+b&gt;0w^Tx_i+b&gt;0wTxi​+b>0;若yi=−1y_i=-1yi​=−1,则有wTxi+b&lt;0w^Tx_i+b&lt;0wTxi​+b<0,令:
{wTxi+b≥+1,yi=+1wTxi+b≤−1,yi=−1(3)\begin{cases} w^Tx_i+b \geq +1, &amp; y_i = +1 \\ \\ w^Tx_i+b \leq -1, &amp; y_i=-1 \end{cases}\quad\quad\quad\quad(3) ⎩⎪⎨⎪⎧​wTxi​+b≥+1,wTxi​+b≤−1,​yi​=+1yi​=−1​(3)
注释:

  1. "硬间隔SVM"模型的建立,是基于数据为“线性可分”的,所谓线性可分指的是:不含噪音,可将训练数据完美分成两类。而硬间隔SVM模型就是基于这个假设构建的,即:假设正确分类的样本点在各自支持向量的两边。
  2. ∣wTx+b∣|w^Tx+b|∣wTx+b∣表示点x到超平面的相对距离,通过观察wTx+bw^Tx+bwTx+b和yyy是否同号,判断分类是否正确。
  3. SVM的模型是让所有点到超平面的距离大于一定的距离,即所有分类点要在各自类别的支持向量两边。一般我们都取这个距离为1

4.间隔与支持向量

如上图所示,距离超平面最近的这几个训练样本点使公式(3)的等号成立,它们被称为“支持向量(support vector)”,两个异类支持向量到超平面的距离之和为公式(4)所示,它被称为“间隔(margin)”。
γ=2∣∣w∣∣(4)\gamma = \frac{2}{||w||}\quad\quad\quad(4) γ=∣∣w∣∣2​(4)
注释:

  1. 函数间隔y(wTx+b)y(w^T x+b)y(wTx+b)对于训练集中m个样本点对应的m个函数间隔的最小值,就是整个训练集的函数间隔。找到训练样本中函数间隔最小的那个样本,并且要让它的函数间隔最大!这就是SVM的目标函数。
  2. 间隔貌似仅与www有关,但事实上bbb通过约束隐式地影响着www的取值,进而对间隔产生影响。

欲找到具有“最大间隔(maximum margin)”的划分超平面,即:找到满足(3)式中约束的参数www和bbb,使得γ\gammaγ最大,有:
max⎵w,b2∣∣w∣∣s.t.yi(wTxi+b)≥1,i=1,2,...,m\underbrace{max}_{w,b}\frac{2}{||w||}\\ s.t. \quad y_i(w^Tx_i+b)\geq 1,\quad i=1,2,...,m w,bmax​​∣∣w∣∣2​s.t.yi​(wTxi​+b)≥1,i=1,2,...,m

  1. 为了最大化间隔,仅需最大化∣∣w∣∣−1||w||^{-1}∣∣w∣∣−1,这等价于最小化∣∣w∣∣2||w||^2∣∣w∣∣2,于是“支持向量机(Support Vector Machine)”的基本型如下式所示:

{min⎵w,b12∣∣w∣∣2s.t.yi(wTxi+b)≥1,i=1,2,...,m(5)\begin{cases} \underbrace{min}_{w,b}\frac{1}{2}||w||^2\\ \\ s.t. \quad y_i(w^Tx_i+b)\geq 1,\quad i=1,2,...,m \end{cases}\quad\quad\quad(5) ⎩⎪⎪⎪⎨⎪⎪⎪⎧​w,bmin​​21​∣∣w∣∣2s.t.yi​(wTxi​+b)≥1,i=1,2,...,m​(5)

5.例题,加深理解

目前无需纠结解法,只需要理解SVM公式的使用,具体解法我们会在下一节中讲述。

已知一个如下图所示的训练数据集,其正例点是x1=(3,3)Tx_1=(3,3)^Tx1​=(3,3)T,x2=(4,3)Tx_2=(4,3)^Tx2​=(4,3)T,负例点是x3=(1,1)Tx_3=(1,1)^Tx3​=(1,1)T,试列出求最大间隔分离超平面的公式。

解:根据训练数据集构造约束最优化问题:
{min⎵w,b12(w12+w22)s.t.3w1+3w2+b≥14w1+3w2+b≥1−w1−w2−b≥1\begin{cases}\underbrace{min}_{w,b} \frac{1}{2}(w_1^2+w_2^2)\\ \\ s.t.\quad 3w_1+3w_2+b \geq1\\ \quad\quad \quad 4w_1+3w_2+b \geq 1\\ \quad\quad\quad -w_1-w_2-b \geq 1 \end{cases} ⎩⎪⎪⎪⎪⎪⎪⎪⎨⎪⎪⎪⎪⎪⎪⎪⎧​w,bmin​​21​(w12​+w22​)s.t.3w1​+3w2​+b≥14w1​+3w2​+b≥1−w1​−w2​−b≥1​
注意:

  1. x是几维,就有几个w。
  2. xi代表样本点在每一维度上坐标点的值。

二、硬间隔SVM对偶问题

1.先用拉格朗日乘子法

我们可以通过拉格朗日乘子法将我们的优化目标公式(5)转换为无约束的优化函数,对公式(5)的每条约束添加拉格朗日乘子αi≥0\alpha_i \geq 0αi​≥0,则该问题的拉格朗日函数可写为:
L(w,b,α)=12∣∣w2∣∣+∑i=1mαi(1−yi(wTxi+b))(6)L(w,b,\alpha)=\frac{1}{2}||w^2||+\sum_{i=1}^{m}\alpha_i(1-y_i(w^Tx_i+b))\quad\quad\quad(6) L(w,b,α)=21​∣∣w2∣∣+i=1∑m​αi​(1−yi​(wTxi​+b))(6)
其中α=(α1,α2,...,αm)\alpha = (\alpha_1,\alpha_2,...,\alpha_m)α=(α1​,α2​,...,αm​),这样可以通过每个样本点的α\alphaα取值,知道该样本点相对于支持向量的位置。

拓展:拉格朗日乘子法——不等式约束优化

给定不等式约束问题:
min⎵xf(x)s.t.h(x)=0g(x)≤0\underbrace{min}_{x}f(x)\\ s.t.\quad h(x)=0\\ \quad g(x)\leq 0 xmin​​f(x)s.t.h(x)=0g(x)≤0
等式约束和不等式约束:h(x)=0,g(x)≤0h(x)=0,g(x) \leq 0h(x)=0,g(x)≤0分别是由一个等式方程和一个不等式方程组成的方程组。

拉格朗日乘子:λ=(λ1,λ2,...,λm)α=(α1,α2,...,αn)\lambda = (\lambda_1,\lambda_2,...,\lambda_m) \quad \alpha=(\alpha_1,\alpha_2,...,\alpha_n)λ=(λ1​,λ2​,...,λm​)α=(α1​,α2​,...,αn​)

拉格朗日函数:L(x,λ,α)=f(x)+λh(x)+αg(x)L(x,\lambda,\alpha) = f(x)+\lambda h(x)+\alpha g(x)L(x,λ,α)=f(x)+λh(x)+αg(x)

注释:将拉格朗日乘子法应用于SVM

给定不等式约束问题:f(x)=min⎵w,b12∣∣w∣∣2f(x) = \underbrace{min}_{w,b}\frac{1}{2}||w||^2f(x)=w,bmin​​21​∣∣w∣∣2

不等式约束:g(x)=1−yi(wTxi+b≤0)g(x)=1-y_i(w^T x_i+b \leq 0)g(x)=1−yi​(wTxi​+b≤0)

拉格朗日乘子:α=(α1,α2,...,αm)\alpha = (\alpha_1,\alpha_2,...,\alpha_m)α=(α1​,α2​,...,αm​)

拉格朗日函数:L(w,b,α)=f(x)+αg(x)L(w,b,\alpha)=f(x)+\alpha g(x)L(w,b,α)=f(x)+αg(x)

由于引入了拉格朗日乘子,我们的优化目标变成了:
min⎵w,bmax⎵ai≥0L(w,b,α)\underbrace{min}_{w,b} \quad \underbrace{max}_{a_i \geq 0} L(w,b,\alpha) w,bmin​​ai​≥0max​​L(w,b,α)
解释:为什么可以转换为min⎵w,bmax⎵ai≥0L(w,b,α)\underbrace{min}_{w,b} \quad \underbrace{max}_{a_i \geq 0} L(w,b,\alpha)w,bmin​​ai​≥0max​​L(w,b,α)

  1. 我们要求解的目标为min⎵w,b12∣∣w∣∣2\underbrace{min}_{w,b} \frac{1}{2}||w||^2w,bmin​​21​∣∣w∣∣2,即min⎵xf(x)\underbrace{min}_{x}f(x)xmin​​f(x)
  2. 可以把f(x)f(x)f(x)写为max⎵ai≥0L(w,b,α)\underbrace{max}_{a_i \geq 0} L(w,b,\alpha)ai​≥0max​​L(w,b,α)。因为αi≥0,g(xi)≤0\alpha_i \geq 0 ,g(x_i) \leq 0αi​≥0,g(xi​)≤0,所以αi×g(xi)≤0\alpha_i \times g(x_i) \leq 0αi​×g(xi​)≤0,只有在αi×g(xi)=0\alpha_i \times g(x_i) = 0αi​×g(xi​)=0的情况下L(w,b,α)L(w,b,\alpha)L(w,b,α)才能取得最大值,此时L(w,b,α)L(w,b,\alpha)L(w,b,α)等于f(x)f(x)f(x)。所以f(x)=max⎵ai≥0L(w,b,α)f(x)=\underbrace{max}_{a_i \geq 0} L(w,b,\alpha)f(x)=ai​≥0max​​L(w,b,α)
  3. 结合上述1、2知:最终求解目标转换为min⎵w,bmax⎵ai≥0L(w,b,α)\underbrace{min}_{w,b} \quad \underbrace{max}_{a_i \geq 0} L(w,b,\alpha)w,bmin​​ai​≥0max​​L(w,b,α)

2.对偶问题

我们的这个规划问题是“强对偶关系”,所以可以直接转换为求解:
max⎵ai≥0min⎵w,bL(w,b,α)(7)\underbrace{max}_{a_i \geq 0}\quad \underbrace{min}_{w,b} L(w,b,\alpha)\quad\quad\quad(7) ai​≥0max​​w,bmin​​L(w,b,α)(7)
拓展:

3.求解min L(w,b,a):

高中数学,求极值先对变量求导等于0,再把求得的变量值代回原函数,即可得到原函数的极值。

令L(w,b,α)L(w,b,\alpha)L(w,b,α)对www和bbb的偏导为零:

最终求得结果如下:
{w=∑i=1mαiyixi0=∑i=1mαiyi(8)\begin{cases} w = \sum_{i=1}^{m}\alpha_i y_i x_i\\ \\ 0=\sum_{i=1}^{m}\alpha_i y_i \end{cases}\quad\quad\quad(8) ⎩⎪⎨⎪⎧​w=∑i=1m​αi​yi​xi​0=∑i=1m​αi​yi​​(8)
从上式中我们已经求得了www和α\alphaα的关系,只要我们后面能够求出优化函数极大化对应的α\alphaα,就可以求出我们的www了;至于bbb,由于上述两式中已经没有bbb,所以最后的bbb可以有多个。

将公式(8)带入公式(6),即可将L(w,b,α)L(w,b,\alpha)L(w,b,α)中的www和bbb消去:

所以,最终求得:
max⎵ai≥0min⎵w,bL(w,b,α)=max⎵ai≥0∑i=1mαi−12∑i=1m∑j=1mαiαjyiyjxiTxj\underbrace{max}_{a_i \geq 0}\quad \underbrace{min}_{w,b} L(w,b,\alpha) = \underbrace{max}_{a_i \geq 0}\quad \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 x_i^T x_j ai​≥0max​​w,bmin​​L(w,b,α)=ai​≥0max​​i=1∑m​αi​−21​i=1∑m​j=1∑m​αi​αj​yi​yj​xiT​xj​

从上面可以看出,通过对www和bbb极小化以后,我们的优化函数仅仅只有α\alphaα向量做参数,只要我们能够极大化上式,就可以求出此时对应的α\alphaα,进而求出www和bbb。对于上式,可以去掉负号,转换为等价的极小化问题如下:
{min⎵ai≥012∑i=1m∑j=1mαiαjyiyjxiTxj−∑i=1mαis.t.∑i=1mαiyi=0αi≥0i=1,2,...,m(9)\begin{cases} \underbrace{min}_{a_i \geq 0}\frac{1}{2}\sum_{i=1}^{m}\sum_{j=1}^{m}\alpha_i \alpha_j y_i y_j x_i^T x_j -\sum_{i=1}^{m}\alpha_i\\ \\ s.t. \quad \sum_{i=1}^{m}\alpha_i y_i = 0\\ \quad \quad \quad \alpha_i \geq0 \quad i=1,2,...,m \end{cases}\quad\quad\quad\quad\quad(9)⎩⎪⎪⎪⎪⎪⎨⎪⎪⎪⎪⎪⎧​ai​≥0min​​21​∑i=1m​∑j=1m​αi​αj​yi​yj​xiT​xj​−∑i=1m​αi​s.t.∑i=1m​αi​yi​=0αi​≥0i=1,2,...,m​(9)

注意到公式(5)中含有约束条件,所以在上述求解的过程中需要满足KKT条件
KKT条件{∂L∂w=0;∂L∂b=0;∂L∂α=0αi≥0;yi(wTxi+b)−1≥0;αi(yi(wTxi+b)−1)=0.KKT\text{条件}\quad\begin{cases} \frac{\partial L}{\partial w} = 0;\frac{\partial L}{\partial b} = 0;\frac{\partial L}{\partial \alpha} = 0 \\ \\ \alpha_i \geq 0;\\ \\ y_i (w^Tx_i+b)-1 \geq 0;\\ \\ \alpha_i(y_i(w^Tx_i+b)-1)=0. \end{cases}KKT条件⎩⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎨⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎧​∂w∂L​=0;∂b∂L​=0;∂α∂L​=0αi​≥0;yi​(wTxi​+b)−1≥0;αi​(yi​(wTxi​+b)−1)=0.​

注释:原问题和对偶问题具有强对偶关系的充要条件是:满足KKT条件!所以由上述的强对偶关系,可以直接得到KKT条件。

4.求得最优w和最优b

由KKT条件可以求解出最优的w∗w^*w∗和b∗b^*b∗

对于线性可分训练数据集,假设对偶最优化问题,也就是公式(9)对α\alphaα的解为α∗=(α1∗,α2∗,...,αm∗)\alpha^* = (\alpha_1^*,\alpha_2^*,...,\alpha_m^*)α∗=(α1∗​,α2∗​,...,αm∗​),可以由a∗a^*a∗求得原始最优化问题公式(5)对(w,b)的解w∗,b∗w^*,b^*w∗,b∗。
w∗=∑i=1Mαi∗yixi(10)b∗=yj−∑i=1Mαi∗yi(xi⋅xj)(11)w^* = \sum_{i=1}^{M}\alpha_i^*y_ix_i\quad\quad\quad(10)\\ b^*=y_j-\sum_{i=1}^{M}\alpha_i^*y_i(x_i \cdot x_j) \quad\quad\quad(11) w∗=i=1∑M​αi∗​yi​xi​(10)b∗=yj​−i=1∑M​αi∗​yi​(xi​⋅xj​)(11)
求解α\alphaα的值可以用凸优化或SMO算法进行求解,我会在下一篇博客中对SMO算法做详细讲解,这里不多做赘述(对于样本的特征较多、维度较高时,这时可以采用SMO算法求解α\alphaα)。

在这里,我们假设通过SMO算法,得到了对应α\alphaα的最优值α∗\alpha^*α∗

4.1.求解最优w

由KKT条件第一行,将公式(6)对www求导可得最优w∗w^*w∗:
w∗=∑i=1Mαi∗yixiw^* = \sum_{i=1}^{M}\alpha_i^* y_i x_i w∗=i=1∑M​αi∗​yi​xi​
然后将求解的最优α\alphaα带入上式中,即可求出最优w∗w^*w∗。

4.2.求解最优b

由于b求偏导后的结果中不带b,所以另寻他法。由KKT条件第2~4行知:对任意训练样本(xi,yi)(x_i,y_i)(xi​,yi​),总有αi=0\alpha_i = 0αi​=0或yif(xi)=1y_i f(x_i)=1yi​f(xi​)=1。若αi=0\alpha_i = 0αi​=0,则该样本将不会在公式(10)中出现,也就不会对模型有任何影响;若αi&gt;0\alpha_i &gt; 0αi​>0,则必有yi(wTxi+b)=1y_i (w^Tx_i+b)=1yi​(wTxi​+b)=1,所对应的样本点位于最大间隔边界上,是一个支持向量。也就是说只有支持向量上的样本才会对模型有影响,根据这条性质我们可以求出b的最优解。

重要性质:训练完成后,大部分的训练样本都不需要保留,最终模型仅与支持向量有关。
∃(xk,yk),s.t.1−yk(w∗Txk+b∗)=0&ThickSpace;⟹&ThickSpace;yk(w∗Txk+b∗)=1&ThickSpace;⟹&ThickSpace;yk2(w∗Txk+b∗)=yk(因为y取值为+1或−1,所以y2=1)&ThickSpace;⟹&ThickSpace;(w∗Txk+b∗)=yk&ThickSpace;⟹&ThickSpace;b∗=yk−w∗Txk&ThickSpace;⟹&ThickSpace;b∗=yk−∑i=0Mαi∗yi(xi⋅xk)\exists(x_k,y_k),s.t.\quad 1-y_k(w^{*T}x_k+b^*)=0\\ \qquad\qquad\implies y_k(w^{*T}x_k+b^*)=1\\[2ex] \qquad\quad\qquad\qquad\qquad\qquad\qquad\qquad\quad\implies y_k^2(w^{*T}x_k+b^*)=y_k \quad(因为y取值为+1或-1,所以y^2=1)\\[3ex] \qquad\qquad\quad\implies(w^{*T}x_k+b^*)=y_k\\[2ex] \qquad\quad\implies b^*=y_k-w^{*T}x_k\\[2ex] \qquad\quad\quad\qquad\implies b^*=y_k-\sum_{i=0}^{M}\alpha_i^* y_i( x_i \cdot x_k) ∃(xk​,yk​),s.t.1−yk​(w∗Txk​+b∗)=0⟹yk​(w∗Txk​+b∗)=1⟹yk2​(w∗Txk​+b∗)=yk​(因为y取值为+1或−1,所以y2=1)⟹(w∗Txk​+b∗)=yk​⟹b∗=yk​−w∗Txk​⟹b∗=yk​−i=0∑M​αi∗​yi​(xi​⋅xk​)
然后将求解的最优α\alphaα带入上式中,即可求出最优b∗b^*b∗。

现实任务中采用一种更鲁棒的做法:求出所有支持向量所对应的b∗b^*b∗,然后将其平均值作为最后的结果。

4.3.求得的模型

最终求得分离超平面为:
w∗⋅x+b∗=0w^* \cdot x + b^* = 0 w∗⋅x+b∗=0
综上所述:对于给定的线性可分训练数据集,可以首先求对偶问题公式(9)的解α∗\alpha^*α∗;再利用公式(10)和(11)求得原始问题的解w∗,b∗w^*,b^*w∗,b∗;从而得到分离超平面。这种算法称为线性可分支持向量机的对偶学习算法,是线性可分支持向量机学习的基本算法。

4.4.线性可分硬SVM算法过程

4.5.例题,加深理解

已知一个如上图所示的训练数据集,其正例点是x1=(3,3)Tx_1=(3,3)^Tx1​=(3,3)T,x2=(4,3)Tx_2=(4,3)^Tx2​=(4,3)T,负例点是x3=(1,1)Tx_3=(1,1)^Tx3​=(1,1)T,试用求线性可分支持向量机。

4.6 sklearn实现上述例题

导入包:

from sklearn import svm

输入样本并训练模型:

x = [[3,3],[4,3],[1,1]]
y = [1,1,-1]model = svm.SVC(kernel='linear')
model.fit(x,y)

打印支持向量:

print(model.support_vectors_)
>>>[[1. 1.][3. 3.]]

输出哪些样本点为支持向量:

print(model.support_)
>>>[2 0]

输出每一边各有几个支持向量:

print(model.n_support_)
>>>[1 1]

预测为哪个类别:

print(model.predict([[4,3]]))
>>>[1]

计算每个 w 的值:

print(model.coef_)
>>>[[0.5 0.5]]

计算 b 的值:

print(model.intercept_)
>>>[-2.]

三、软间隔SVM

在前面的讨论中,我们一直假定训练样本空间或特征空间中是i阿宁可分得,即存在一个超平面能将不同类的样本完全划分开。然而,在现实任务中往往很难确定合适的核函数使得训练样本在特征空间中线性可分。如下图所示:红色圈出了一些不满足约束的样本。

硬间隔线性可分SVM面临的问题:

  1. 有时候数据本来是可分的,但由于混入了异常点,导致不能线性可分。
  2. 模型依然线性可分,但效果不好。如果不考虑异常点,则可能会得到一个很好的模型,此类异常点的存在会严重影响分类模型预测效果。

SVM引入了软间隔最大化的方法来解决上述问题:允许支持向量机在一些样本上出错,即:允许某些样本不满足约束yi(wiT+b)≥1y_i(w^T_i+b) \geq1yi​(wiT​+b)≥1。(当然,在最大化间隔的同时不满足约束的样本应尽可能少。)

1.引入松弛变量

对训练集里面的每个样本(xi,yi)(x_i,y_i)(xi​,yi​)引入了一个松弛变量ξi≥0\xi_i\geq0ξi​≥0,使函数间隔加上松弛变量大于等于1。
yi(wTxi+b)≥1−ξiy_i(w^Tx_i +b)\geq1-\xi_iyi​(wTxi​+b)≥1−ξi​
显然,每一个样本都有一个对应的松弛变量。
我们认为:

  1. ξ=0\xi=0ξ=0时,样本在被支持向量正确分类。
  2. 0&lt;ξ&lt;10&lt;\xi&lt;10<ξ<1时,样本在函数间隔与超平面之间。
  3. ξ=1\xi=1ξ=1时,样本在函数间隔上。
  4. ξ≥1\xi\geq1ξ≥1时,样本此时为异常点。

当然,松弛变量不能白加,这是有成本的,这样就得到了软间隔最大化SVM学习条件如下:
{min⎵w,b,ξi12∣∣w∣∣2+C∑i=1mξis.t.yi(wTxi+b)≥1−ξiξi≥0i=1,2,...,m(12)\begin{cases} \underbrace{min}_{w,b,\xi_i}\frac{1}{2}||w||^2+C\sum_{i=1}^{m}\xi_i\\ \\ s.t. \quad y_i(w^Tx_i+b)\geq1-\xi_i\\ \quad \quad \quad \xi_i \geq0 \quad i=1,2,...,m \end{cases}\quad\quad\quad\quad\quad(12)⎩⎪⎪⎪⎪⎪⎨⎪⎪⎪⎪⎪⎧​w,b,ξi​min​​21​∣∣w∣∣2+C∑i=1m​ξi​s.t.yi​(wTxi​+b)≥1−ξi​ξi​≥0i=1,2,...,m​(12)
其中C&gt;0C&gt;0C>0是一个常数,为惩罚参数。我们希望12∣∣w∣∣2\frac{1}{2}||w||^221​∣∣w∣∣2尽量小,误分类的点尽可能的少,CCC是协调两者关系的正则化惩罚系数。CCC越大,对误分类的惩罚越大;CCC越小,对误分类的惩罚越小。

2.软间隔SVM最大化目标优化函数

首先将软价格最大化的约束问题用拉格朗日函数转化为无约束问题如下:

  1. 待求目标:f(x)=min⎵w,b,ξi12∣∣w∣∣2+C∑i=1mξif(x)=\underbrace{min}_{w,b,\xi_i}\frac{1}{2}||w||^2+C\sum_{i=1}^{m}\xi_if(x)=w,b,ξi​min​​21​∣∣w∣∣2+C∑i=1m​ξi​
  2. 不等式约束:g(x)=1−ξi−yi(wTxi+b)≤0g(x)=1-\xi_i-y_i(w^Tx_i+b)\leq0g(x)=1−ξi​−yi​(wTxi​+b)≤0
    h(x)=−ξi≤0\quad \qquad \qquad h(x)=-\xi_i\leq0h(x)=−ξi​≤0
  3. 拉格朗日乘子:α=(α1,α2,⋯&ThinSpace;,αm)\alpha=(\alpha_1,\alpha_2,\cdots,\alpha_m)α=(α1​,α2​,⋯,αm​)
    μ=(μ1,μ2,⋯&ThinSpace;,μm)\qquad \qquad \qquad \mu=(\mu_1,\mu_2,\cdots,\mu_m)μ=(μ1​,μ2​,⋯,μm​)
  4. 拉格朗日函数:L(w,v,ξ,α,μ)=f(x)+αg(x)+μh(x)L(w,v,\xi,\alpha,\mu)=f(x)+\alpha g(x)+\mu h(x)L(w,v,ξ,α,μ)=f(x)+αg(x)+μh(x)

整理得:
L(w,b,ξ,α,μ)=12∣∣w∣∣2+C∑i=1mξi+∑i=1mαi(1−ξi−yi(wTxi+b))−∑i=1mμiξi(13)L(w,b,\xi,\alpha,\mu)=\frac{1}{2}||w||^2+C\sum_{i=1}^{m}\xi_i+\sum_{i=1}^{m}\alpha_i(1-\xi_i-y_i(w^Tx_i+b))-\sum_{i=1}^{m}\mu_i\xi_i\qquad\qquad\qquad(13)L(w,b,ξ,α,μ)=21​∣∣w∣∣2+Ci=1∑m​ξi​+i=1∑m​αi​(1−ξi​−yi​(wTxi​+b))−i=1∑m​μi​ξi​(13)

也就是说,我们现在要优化的目标函数是:
min⎵w,b,ξmax⎵α≥0;μ≥0L(w,b,ξ,α,μ)\underbrace{min}_{w,b,\xi}\underbrace{max}_{\alpha\geq0;\mu\geq0}L(w,b,\xi,\alpha,\mu)w,b,ξmin​​α≥0;μ≥0max​​L(w,b,ξ,α,μ)
这个优化目标也满足KKT条件,可以通过拉格朗日对偶将这个优化问题转化为等价的对偶问题来求解:
max⎵α≥0;μ≥0min⎵w,b,ξL(w,b,ξ,α,μ)(14)\underbrace{max}_{\alpha\geq0;\mu\geq0}\underbrace{min}_{w,b,\xi}L(w,b,\xi,\alpha,\mu)\qquad\qquad\qquad(14)α≥0;μ≥0max​​w,b,ξmin​​L(w,b,ξ,α,μ)(14)

3.求解min&ThickSpace;L(w,b,ξ,α,μ)min\;L(w,b,\xi,\alpha,\mu)minL(w,b,ξ,α,μ)

首先来求优化函数对于w,b,ξw,b,\xiw,b,ξ的极小值,这个可以通过求偏导数求得:
{∂L∂w=0&ThickSpace;⟹&ThickSpace;w=∑i=1mαiyixi∂L∂b=0&ThickSpace;⟹&ThickSpace;0=∑i=1mαiyi∂L∂ξ=0&ThickSpace;⟹&ThickSpace;C=αi−μi\begin{cases}\frac{\partial L}{\partial w}=0\implies w=\sum_{i=1}^{m}\alpha_iy_ix_i \\[2ex] \frac{\partial L}{\partial b}=0\implies 0=\sum_{i=1}^{m}\alpha_iy_i\\[2ex] \frac{\partial L}{\partial \xi}=0\implies C=\alpha_i-\mu_i\end{cases}⎩⎪⎪⎪⎪⎨⎪⎪⎪⎪⎧​∂w∂L​=0⟹w=∑i=1m​αi​yi​xi​∂b∂L​=0⟹0=∑i=1m​αi​yi​∂ξ∂L​=0⟹C=αi​−μi​​
利用上面三个师子消除www和bbb:

优化目标的数学形式:
{max⎵α∑i=1mαi−12∑i=1m∑j=1mαiαjyiyjxiTxjs.t.&ThickSpace;∑i=1mαiyi=0C−αi−μi=0αi≥0(i=1,2,⋯&ThinSpace;,m)μi≥0(i=1,2,⋯&ThinSpace;,m)\begin{cases}\underbrace{max}_{\alpha}\sum_{i=1}^{m}\alpha_i-\frac{1}{2}\sum_{i=1}^{m}\sum_{j=1}^{m}\alpha_i\alpha_jy_iy_jx_i^Tx_j\\[2ex] s.t.\;\sum_{i=1}^{m}\alpha_iy_i=0\\[2ex] C-\alpha_i-\mu_i=0\\[2ex] \alpha_i\geq0\quad(i=1,2,\cdots ,m)\\[2ex] \mu_i\geq0\quad(i=1,2,\cdots,m)\end{cases}⎩⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎨⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎧​αmax​​∑i=1m​αi​−21​∑i=1m​∑j=1m​αi​αj​yi​yj​xiT​xj​s.t.∑i=1m​αi​yi​=0C−αi​−μi​=0αi​≥0(i=1,2,⋯,m)μi​≥0(i=1,2,⋯,m)​
对于上述中后三个式子,可以消去μi\mu_iμi​,只留下αi\alpha_iαi​,即:0≤α≤C0\leq\alpha\leq C0≤α≤C,同时将优化目标函数变号,求极小值:
{max⎵α∑i=1mαi−12∑i=1m∑j=1mαiαjyiyjxiTxjs.t.&ThickSpace;∑i=1mαiyi=00≤αi≤C(15)\begin{cases}\underbrace{max}_{\alpha}\sum_{i=1}^{m}\alpha_i-\frac{1}{2}\sum_{i=1}^{m}\sum_{j=1}^{m}\alpha_i\alpha_jy_iy_jx_i^Tx_j\\[2ex] s.t.\;\sum_{i=1}^{m}\alpha_iy_i=0\\[2ex] 0\leq\alpha_i\leq C\end{cases}\qquad\qquad\qquad(15)⎩⎪⎪⎪⎪⎨⎪⎪⎪⎪⎧​αmax​​∑i=1m​αi​−21​∑i=1m​∑j=1m​αi​αj​yi​yj​xiT​xj​s.t.∑i=1m​αi​yi​=00≤αi​≤C​(15)
这就是软间隔SVM优化目标形式,和硬间隔SVM相比,仅仅只多了一个约束条件0≤αi≤C0\leq\alpha_i\leq C0≤αi​≤C。依然可以通过SMO算法来求上式极小化对应的α\alphaα,然后即可求出www和bbb了。

4.软间隔KKT条件

对软间隔SVM,KKT条件要求:
{αi≥0,μi≥0,yi(wTxi+b)−1+ξi≥0,αi(yi(wTxi+b)−1+ξi)=0ξi≥0,μiξi=0(16)\begin{cases}\alpha_i\geq0, \qquad \mu_i \geq0,\\[2ex] y_i(w^Tx_i+b)-1+\xi_i \geq 0,\\[2ex] \alpha_i(y_i(w^Tx_i+b)-1+\xi_i)=0\\[2ex] \xi_i\geq0,\quad \mu_i\xi_i=0\end{cases}\qquad\qquad\qquad(16)⎩⎪⎪⎪⎪⎪⎪⎪⎪⎨⎪⎪⎪⎪⎪⎪⎪⎪⎧​αi​≥0,μi​≥0,yi​(wTxi​+b)−1+ξi​≥0,αi​(yi​(wTxi​+b)−1+ξi​)=0ξi​≥0,μi​ξi​=0​(16)
根据软间隔最大化时KKT条件中的对偶互补条件αi(yi(wTxi+b)−1+ξi)=0\alpha_i(y_i(w^Tx_i+b)-1+\xi_i)=0αi​(yi​(wTxi​+b)−1+ξi​)=0可知:

  • 如果αi=0\alpha_i = 0αi​=0,那么yi(wTxi+b)−1≥0y_i(w^Tx_i+b)-1\geq0yi​(wTxi​+b)−1≥0,则样本不会对模型产生任何影响,即:样本已经被正确分类。如下图中所有远离间隔边界的点。
  • 如果αi&gt;0\alpha_i&gt;0αi​>0,则必有yi(wTxi+b)=1−ξiy_i(w^Tx_i+b)=1-\xi_iyi​(wTxi​+b)=1−ξi​,即:该样本是支持向量,由C=αi+μiC=\alpha_i+\mu_iC=αi​+μi​和μiξi=0\mu_i\xi_i=0μi​ξi​=0可知:
    • 如果αi&lt;C\alpha_i&lt;Cαi​<C,则μi&gt;0\mu_i&gt;0μi​>0,进而有ξi=0\xi_i=0ξi​=0,即该样本恰在最大间隔边界上;
    • 如果αi=C\alpha_i=Cαi​=C,则μi=0\mu_i=0μi​=0,此时:
      • 如果0≤ξi≤10\leq\xi_i\leq10≤ξi​≤1,则样本已被正确分类,但是却在超平面和自己类别的间隔边界之间。如图中的样本2和4;
      • 如果ξi&gt;1\xi_i&gt;1ξi​>1,则该样本被错误分类。如图中的样本1和3。

5.软间隔SVM算法流程

\qquad软间隔SVM算法流程通硬间隔SVM,这里不再赘述。


【参考文献】

  • 机器学习-白板推到系列:https://www.bilibili.com/video/av28186618?from=search&seid=6646758741854824399
  • 机器学习算法基础:https://www.bilibili.com/video/av37947862/?p=76
  • 西瓜书PumpkinBook :https://datawhalechina.github.io/pumpkin-book/#/
  • 刘建平 博客园:https://www.cnblogs.com/pinard/
  • 周志华 《机器学习》
  • 李航 《统计学方法》

【机器学习系列】之SVM硬间隔和软间隔相关推荐

  1. 机器学习-SVM硬间隔与软间隔:重要参数C

    SVM在软间隔数据上的推广 到这里,我们已经了解了线性SVC的基本原理,以及SVM如何被推广到非线性情况下,还了解了核函数的选择和应用.但实际上,我们依然没有完全了解SVM用于二分类的全貌.我们之前在 ...

  2. 机器学习入门学习笔记:(4.2)SVM的核函数和软间隔

    前言 之前讲了有关基本的SVM的数学模型(机器学习入门学习笔记:(4.1)SVM算法).这次主要介绍介绍svm的核函数.软间隔等概念,并进行详细的数学推导.这里仅将自己的笔记记录下来,以便以后复习查看 ...

  3. 【机器学习算法专题(蓄力计划)】十八、机器学习中SVM算法中的硬间隔和软间隔

    文章目录 感知机 感知机代码实现 支持向量机(硬间隔) 原优化问题的对偶问题 SMO求解对偶问题最优解 软间隔支持向量机 KKT条件 w ∗ , b ∗ w^*,b^*

  4. 手撕SVM公式——硬间隔、软间隔、核技巧

    1.SVM作用 对于给定的训练样本集D={(x1,y1), (x2,y2),- (xn,yn)},yi属于{-1,+1},希望能找出一个超平面,把不同类别的数据集分开,对于线性可分的数据集来说,这样的 ...

  5. svm硬间隔与软间隔

    硬间隔:完全分类准确,其损失函数不存在:其损失值为0:只要找出两个异类正中间的那个平面: 软间隔:允许一定量的样本分类错误:优化函数包括两个部分,一部分是点到平面的间隔距离,一部分是误分类的损失个数: ...

  6. svm硬间隔与软间隔(转)

    硬间隔:完全分类准确,其损失函数不存在:其损失值为0:只要找出两个异类正中间的那个平面:软间隔:允许一定量的样本分类错误:优化函数包括两个部分,一部分是点到平面的间隔距离,一部分是误分类的损失个数:C ...

  7. 支持向量机SVM(三)软间隔与松弛变量的替代损失函数

    前两篇关于SVM的讨论中,我们只讨论了样本在原始空间和特征空间中线性可分的情况,但是,现实不可能这么完美,就算真的被找到了,但是世上没有免费的午餐,最后的结果很可能过拟合了. 所以要来讨论一下,怎么付 ...

  8. SVM支持向量机——核函数、软间隔

    支持向量机的目的是寻找一个能讲两类样本正确分类的超平面,很多时候这些样本并不是线性分布的. 由此,可以将原始特征空间映射到更高维的特征空间,使其线性可分.而且,如果原始空间是有限维,即属性数量有限, ...

  9. 机器学习——支持向量机(SVM)之超平面、间隔与支持向量

    描述 SVM是一种二类分类模型,基本模型是定义在特征空间中的间隔最大的线性分类器. 学习策略是间隔最大化. 训练集线性可分时,通过硬间隔最大化,学习一个线性可分支持向量机: 训练集近似线性可分时,通过 ...

最新文章

  1. windows7 php 无法启动服务,windows update服务无法启动怎么解决?
  2. 【本人秃顶程序员】synchronized锁住的是代码还是对象
  3. HDFS副本设置——默认3
  4. 【设计模式】访问者模式 ( 简介 | 适用场景 | 优缺点 | 代码示例 )
  5. 打开vs2010,提示无效的许可证数据,需要重新安装
  6. 用队列实现栈 AND 用栈实现队列
  7. SpringCloud学习--微服务架构
  8. 线程池开门营业招聘开发人员的一天
  9. 张朝阳直播带货首秀 带的不仅是好物而是价值平台
  10. h5 如何录音保存上传_html5 网页录音、试听以及上传
  11. Vue的开发常用的工具有哪些?
  12. html英文书籍推荐,Html英文
  13. 《Detecting Adversarial Examples through Image Transformation》和CW attack的阅读笔记
  14. 大气幼儿园html模板,幼儿园儿童HTML主题
  15. python中4j_GitHub - Byron4j/PythonVeterans: Python新手到老鸟的历程;基于Python 3.6
  16. less中的变量 单位问题
  17. SpringBoot:Sa-Token的具体介绍与使用
  18. 沁恒CH552 USB学习之旅(一)
  19. java毕业设计小区生活服务平台的设计与实现Mybatis+系统+数据库+调试部署
  20. 慕课-初识 学习ts笔记

热门文章

  1. sourceinsight教程
  2. 谷歌(Google): reCaptcha(3.0版本)做网站验证
  3. 中计播客 | 美团全资收购摩拜单车
  4. adb 报错 device unauthorized
  5. ModHeader修改请求和响应头
  6. 路标漆用石油树脂的性能要求
  7. FZU - 2244 - Daxia want to buy house
  8. 人间不正经生活语录(四)
  9. makemigrations 和 migrate工作原理分别是什么
  10. php think migrate,thinkphp5 migrate数据库迁移使用详解