支持向量机(SVM)原理小结(1)线性支持向量机
SVM系列文章:
支持向量机(SVM)原理小结(1)线性支持向量机
支持向量机(SVM)原理小结(2)非线性支持向量机
支持向量机(SVM)原理小结(3)支持向量回归SVR
本博客中使用到的完整代码请移步至: 我的github:https://github.com/qingyujean/Magic-NLPer,求赞求星求鼓励~~~
支持向量机(support vector machine,SVM)
是二类分类模型,是定义在特征空间上的 间隔最大
的线性分类器。通过使用核技巧,使得SVM成为实质上的非线性分类器。SVM的学习策略是:间隔最大化
,等价于正则化的合页损失函数的最小化问题。SVM的学习算法是:序列最小优化(SMO)算法
适用问题:二类分类
模型特点:分离超平面;核技巧
模型类型:判别模型
损失函数:合页损失
学习策略:极小化正则化的合页损失;最大化软间隔
学习算法:序列最小优化算法 SMO
1. 线性可分支持向量机(硬间隔SVM)
假设输入空间和特征空间是2个不同的空间,输入被映射到特征空间,得到特征向量。SVM是在 特征空间
进行的。
当训练数据是 线性可分
时,SVM学习的目标也是利用 间隔最大化
在特征空间中找到一个 分离超平面
:
w
∗
⋅
x
+
b
∗
=
0
w^* \cdot x+b^*=0
w∗⋅x+b∗=0,将训练实例完全分开。其确立的分类决策函数
为:
f ( x ) = s i g n ( w ∗ ⋅ x + b ∗ ) f(x)=sign(w^* \cdot x+b^*) f(x)=sign(w∗⋅x+b∗)
但是SVM
和感知机
的不同是,SVM得到的分离超平面是
唯一
的,而感知机求得的分离超平面却有
无穷多个
。这是因为他们采用的 学习策略
不同,感知机是 误分类(距离)最小化
,而SVM是 间隔最大化
。
1.1 函数间隔和几何间隔
样本点到超平面 ( w , b ) (w,b) (w,b)的函数间隔: γ ^ i = y i ( w ⋅ x + b ) = ∣ ∣ w ∣ ∣ γ i \hat\gamma_i=y_i(w\cdot x+b)={||w||}\gamma_i γ^i=yi(w⋅x+b)=∣∣w∣∣γi
数据集T到超平面
(
w
,
b
)
(w,b)
(w,b)的函数间隔
:
γ
^
=
min
i
=
1
,
.
.
.
,
N
γ
^
i
\hat\gamma=\min\limits_{i=1,...,N}\hat\gamma_i
γ^=i=1,...,Nminγ^i
函数间隔可以表示分类的正确性(符号的正负)和确信度( ∣ w ⋅ x + b ∣ |w\cdot x+b| ∣w⋅x+b∣)能相对的表示点x 距离超平面的远近程度。
样本点到超平面 ( w , b ) (w,b) (w,b)的几何间隔: γ i = y i ( w ∣ ∣ w ∣ ∣ ⋅ x + b ∣ ∣ w ∣ ∣ ) = γ ^ i ∣ ∣ w ∣ ∣ \gamma_i=y_i(\frac{w}{||w||}\cdot x+\frac{b}{||w||})=\frac{\hat\gamma_i}{||w||} γi=yi(∣∣w∣∣w⋅x+∣∣w∣∣b)=∣∣w∣∣γ^i
数据集T到超平面
(
w
,
b
)
(w,b)
(w,b)的几何间隔
:
γ
=
min
i
=
1
,
.
.
.
,
N
γ
i
\gamma=\min\limits_{i=1,...,N}\gamma_i
γ=i=1,...,Nminγi
几何间隔表示实例点到超平面的带符号的距离,当超平面参数w,b成比例改变时(超平面不变),几何间隔不变,但是函数间隔会按此比例改变。
1.2 学习策略:硬间隔最大化
对线性可分的数据集
,其 几何间隔
是 唯一
的。
基本想法:求解能够正确分类并且几何间隔最大的分离超平面,即最大间隔分离超平面。
将此问题表示为带约束的最优化问题:
max w , b γ s.t. y i ( w ∥ w ∥ ⋅ x i + b ∥ w ∥ ) ≥ γ , i = 1 , 2 , ⋯ , N \begin{array}{cl}\max\limits_{w,b}&\gamma\\\text{s.t.}&y_i\left(\frac{w}{\|w\|}\cdot x_i+\frac{b}{\|w\|}\right)\ge\gamma,\quad i=1,2,\cdots,N\end{array} w,bmaxs.t.γyi(∥w∥w⋅xi+∥w∥b)≥γ,i=1,2,⋯,N
约束条件表示超平面(w,b)关于每个训练样本点的几何间隔至少是 γ \gamma γ。
可改写为:
max w , b γ ^ ∥ w ∥ s.t. y i ( w ⋅ x i + b ) ≥ γ ^ , i = 1 , 2 , ⋯ , N \begin{array}{cl}\max\limits_{w,b}&\frac{\hat\gamma}{\|w\|}\\\text{s.t.}&y_i\left(w\cdot x_i+b\right)\ge\hat\gamma,\quad i=1,2,\cdots,N\end{array} w,bmaxs.t.∥w∥γ^yi(w⋅xi+b)≥γ^,i=1,2,⋯,N
函数间隔 γ ^ \hat\gamma γ^的取值并不影响最优化问题的解。取 γ ^ = 1 \hat\gamma=1 γ^=1,则目标转化为最大化 1 ∥ w ∥ \frac{1}{\|w\|} ∥w∥1,约束转化为 y i ( w ⋅ x i + b ) ≥ 1 y_i\left(w\cdot x_i+b\right)\ge1 yi(w⋅xi+b)≥1。又因为最大化 1 ∥ w ∥ \frac{1}{\|w\|} ∥w∥1和最小化 1 2 ∥ w ∥ 2 \frac{1}{2}\|w\|^2 21∥w∥2(更方便求导)等价,所以约束最优化问题可进一步改写为:
max w , b 1 2 ∥ w ∥ 2 s.t. y i ( w ⋅ x i + b ) − 1 ≥ 0 , i = 1 , 2 , ⋯ , N \begin{array}{cl}\max\limits_{w,b}&\frac{1}{2}\|w\|^2\\\text{s.t.}&y_i\left(w\cdot x_i+b\right)-1\ge0,\quad i=1,2,\cdots,N\end{array} w,bmaxs.t.21∥w∥2yi(w⋅xi+b)−1≥0,i=1,2,⋯,N
求出上述约束最优化问题的解
w
∗
,
b
∗
w^*,b^*
w∗,b∗,就得到了最大间隔分离超平面
w
∗
⋅
x
+
b
=
0
w^*\cdot x+b=0
w∗⋅x+b=0以及分类决策函数
f
(
x
)
=
s
i
g
n
(
w
∗
⋅
x
+
b
∗
)
f(x)=sign(w^* \cdot x+b^*)
f(x)=sign(w∗⋅x+b∗),即线性可分支持向量机
模型。
间隔最大化的直观解释:
对训练数据集找到几何间隔最大的超平面,意味着以充分大的确信度对训练数据进行分类。也就是说,不仅将正负实例点分开,而且最难分的点(离超平面最近的点)也有足够大的确信度把它们分开。而这样的超平面,对未知的新实例,应该有很好的分类预测能力。
1.3 学习算法—最大间隔法
线性可分训练数据集的最大间隔超平面是
存在且唯一
的。
支持向量和间隔边界
在线性可分
的情况下,离分离超平面最近的样本点,称为支持向量
。支持向量是约束不等式等号成立的点,即
y
i
(
w
⋅
x
i
+
b
)
−
1
=
0
y_i\left(w\cdot x_i+b\right)-1=0
yi(w⋅xi+b)−1=0。
超平面
H
1
:
w
⋅
x
+
b
=
1
H_1:w\cdot x+b=1
H1:w⋅x+b=1和超平面
H
2
:
w
⋅
x
+
b
=
−
1
H_2:w\cdot x+b=-1
H2:w⋅x+b=−1上的点就是 支持向量
。
H
1
H_1
H1与
H
2
H_2
H2称为 间隔边界
,他们之间没有实例点,
H
1
H_1
H1与
H
2
H_2
H2之间的距离成为 间隔(margin)
。间隔的大小等于
2
∥
w
∥
\frac{2}{\|w\|}
∥w∥2。
在决定分离超平面时,只有支持向量起作用,而其他实例点并不起作用
。这也是模型名称支持向量机的由来。支持向量个数一般很少,所以支持向量机由很少的但却很重要的训练样本确定。
1.4 学习算法—对偶形式
对偶算法的
优点
:
- 对偶问题往往
更容易
求解(内积形式
)- 自然引入
核函数
,进而推广到非线性分类问题
首先写出有约束最优化的 原始问题
的拉格朗日无约束优化函数
:
L ( w , b , α ) = 1 2 ∥ w ∥ 2 − ∑ i = 1 N α i y i ( w ⋅ x i + b ) + ∑ i = 1 N α i L(w, b, \alpha)=\frac{1}{2}\|w\|^{2}-\sum_{i=1}^{N} \alpha_{i} y_{i}\left(w \cdot x_{i}+b\right)+\sum_{i=1}^{N} \alpha_{i} L(w,b,α)=21∥w∥2−i=1∑Nαiyi(w⋅xi+b)+i=1∑Nαi
其中 α i ≥ 0 , i = 1 , . . . , N \alpha_i\ge0,i=1,...,N αi≥0,i=1,...,N,称为拉格朗日乘子。
约束最优化的原始问题可以表示为 拉格朗日极小极大问题
:
min
w
,
b
max
α
L
(
w
,
b
,
α
)
\min\limits_{w,b}\max\limits_{\alpha} L(w,b,\alpha)
w,bminαmaxL(w,b,α)。
由于 L ( w , b , α ) L(w,b,\alpha) L(w,b,α)和约束条件函数为连续可微的凸函数,且满足KKT条件,则原始问题的解与对偶问题的解是等价的,那么可以通过求解对偶问题来求解原始问题。
原始问题的对偶问题是 拉格朗日极大极小问题
:
max
α
min
w
,
b
L
(
w
,
b
,
α
)
\max\limits_{\alpha}\min\limits_{w,b} L(w,b,\alpha)
αmaxw,bminL(w,b,α)
(1)求 min w , b L ( w , b , α ) \min\limits_{w,b} L(w,b,\alpha) w,bminL(w,b,α)
将 L ( w , b , α ) L(w, b, \alpha) L(w,b,α)分别对 w w w和 b b b求偏导数,并令其等于0。
∇ w L ( w , b , α ) = w − ∑ i = 1 N α i y i x i = 0 ∇ b L ( w , b , α ) = − ∑ i = 1 N α i y i = 0 \nabla_{w} L(w, b, \alpha)=w-\sum_{i=1}^{N} \alpha_{i} y_{i} x_{i}=0 \\\nabla_{b} L(w, b, \alpha)=-\sum_{i=1}^{N} \alpha_{i} y_{i}=0 ∇wL(w,b,α)=w−i=1∑Nαiyixi=0∇bL(w,b,α)=−i=1∑Nαiyi=0
得
w = ∑ i = 1 N α i y i x i ∑ i = 1 N α i y i = 0 w=\sum_{i=1}^{N}\alpha_iy_ix_i\\\sum_{i=1}^{N}\alpha_iy_i=0 w=i=1∑Nαiyixii=1∑Nαiyi=0
代入得
L ( w , b , α ) = 1 2 ∑ i = 1 N ∑ j = 1 N α i α j y i y j ( x i ⋅ x j ) − ∑ i = 1 N α i y i ( ( ∑ j = 1 N α j y j x j ) ⋅ x i + b ) + ∑ i = 1 N α i = − 1 2 ∑ i = 1 N ∑ j = 1 N α i α j y i y j ( x i ⋅ x j ) + ∑ i = 1 N α i \begin{aligned}L(w, b, \alpha) =&\frac{1}{2} \sum_{i=1}^{N} \sum_{j=1}^{N} \alpha_{i} \alpha_{j} y_{i} y_{j}\left(x_{i} \cdot x_{j}\right)-\sum_{i=1}^{N} \alpha_{i} y_{i}\left(\left(\sum_{j=1}^{N} \alpha_{j} y_{j} x_{j}\right) \cdot x_{i}+b\right)+\\&\sum_{i=1}^{N} \alpha_{i} \\=&-\frac{1}{2} \sum_{i=1}^{N} \sum_{j=1}^{N} \alpha_{i} \alpha_{j} y_{i} y_{j}\left(x_{i} \cdot x_{j}\right)+\sum_{i=1}^{N} \alpha_{i}\end{aligned} L(w,b,α)==21i=1∑Nj=1∑Nαiαjyiyj(xi⋅xj)−i=1∑Nαiyi((j=1∑Nαjyjxj)⋅xi+b)+i=1∑Nαi−21i=1∑Nj=1∑Nαiαjyiyj(xi⋅xj)+i=1∑Nαi
即
min w , b L ( w , b , α ) = − 1 2 ∑ i = 1 N ∑ j = 1 N α i α j y i y j ( x i ⋅ x j ) + ∑ i = 1 N α i \min_{w,b}L(w, b, \alpha)=-\frac{1}{2} \sum_{i=1}^{N} \sum_{j=1}^{N} \alpha_{i} \alpha_{j} y_{i} y_{j}\left(x_{i} \cdot x_{j}\right)+\sum_{i=1}^{N} \alpha_{i} w,bminL(w,b,α)=−21i=1∑Nj=1∑Nαiαjyiyj(xi⋅xj)+i=1∑Nαi
(2)求 min w , b L ( w , b , α ) \min\limits_{w,b} L(w,b,\alpha) w,bminL(w,b,α)对 α \alpha α的极大,即对偶问题
max α − 1 2 ∑ i = 1 N ∑ j = 1 N α i α j y i y j ( x i ⋅ x j ) + ∑ i = 1 N α i s.t. ∑ i = 1 N α i y i = 0 α i ⩾ 0 , i = 1 , 2 , ⋯ , N \begin{array}{ll}\max\limits_{\alpha} & -\frac{1}{2} \sum\limits_{i=1}^{N} \sum\limits_{j=1}^{N} \alpha_{i} \alpha_{j} y_{i} y_{j}\left(x_{i} \cdot x_{j}\right)+\sum\limits_{i=1}^{N} \alpha_{i} \\\text { s.t. } & \sum\limits_{i=1}^{N} \alpha_{i} y_{i}=0 \\& \alpha_{i} \geqslant 0, \quad i=1,2, \cdots, N\end{array} αmax s.t. −21i=1∑Nj=1∑Nαiαjyiyj(xi⋅xj)+i=1∑Nαii=1∑Nαiyi=0αi⩾0,i=1,2,⋯,N
等价于
min α 1 2 ∑ i = 1 N ∑ j = 1 N α i α j y i y j ( x i ⋅ x j ) − ∑ i = 1 N α i s.t. ∑ i = 1 N α i y i = 0 α i ⩾ 0 , i = 1 , 2 , ⋯ , N \begin{array}{ll}\min\limits_{\alpha} & \frac{1}{2} \sum\limits_{i=1}^{N} \sum\limits_{j=1}^{N} \alpha_{i} \alpha_{j} y_{i} y_{j}\left(x_{i} \cdot x_{j}\right)-\sum\limits_{i=1}^{N} \alpha_{i} \\\text { s.t. } & \sum\limits_{i=1}^{N} \alpha_{i} y_{i}=0 \\& \alpha_{i} \geqslant 0, \quad i=1,2, \cdots, N\end{array} αmin s.t. 21i=1∑Nj=1∑Nαiαjyiyj(xi⋅xj)−i=1∑Nαii=1∑Nαiyi=0αi⩾0,i=1,2,⋯,N
上式即为 对偶最优化问题
。
对偶最优化问题对 α \alpha α的解设为 α ∗ \alpha^* α∗,那么原始问题最优化问题的解 w ∗ , b ∗ w^*,b^* w∗,b∗也可求出。
即求得
w ∗ = ∑ i = 1 N α i ∗ y i x i w^*=\sum_{i=1}^{N}\alpha_i^*y_ix_i w∗=i=1∑Nαi∗yixi
任选一个 α ∗ \alpha^* α∗的分量 α j ∗ \alpha_j^* αj∗满足 α j ∗ > 0 \alpha_{j}^* > 0 αj∗>0用来求 b ∗ b^* b∗(即任选一支持向量用来求 b ∗ b^* b∗):
b ∗ = y j − ∑ i = 1 N α i ∗ y i ( x i ⋅ x j ) b^*=y_j-\sum_{i=1}^{N}\alpha_i^*y_i(x_i\cdot x_j) b∗=yj−i=1∑Nαi∗yi(xi⋅xj)
分离超平面可以写为
∑ i = 1 N α i ∗ y i ( x ⋅ x i ) + b ∗ = 0 \sum_{i=1}^{N}\alpha_i^*y_i(x\cdot x_i)+b^*=0 i=1∑Nαi∗yi(x⋅xi)+b∗=0
分类决策函数可以写成
f ( x ) = sign ( ∑ i = 1 N α i ∗ y i ( x ⋅ x i ) + b ∗ ) f(x)=\text{sign}\left(\sum_{i=1}^{N}\alpha_i^*y_i(x\cdot x_i)+b^*\right) f(x)=sign(i=1∑Nαi∗yi(x⋅xi)+b∗)
对偶算法中,分类决策函数只依赖于输入
x
x
x 和 训练样本
x
i
x_i
xi的内积,而上式称为
线性可分支持向量机的对偶形式
。
总结来说,对于线性可分的数据集来说,先求解对偶问题的解 α ∗ \alpha^* α∗,再求原始问题的解 w ∗ , b ∗ w^*,b^* w∗,b∗,从而得到分离超平面和分类决策函数。
支持向量
w
∗
,
b
∗
w^*,b^*
w∗,b∗只依赖于训练数据中对应于
α
i
>
0
\alpha_i>0
αi>0的样本点
(
x
i
,
y
i
)
(x_i,y_i)
(xi,yi),其他样本点对
w
∗
,
b
∗
w^*,b^*
w∗,b∗无影响(保证了 解的稀疏性,最终模型仅与支持向量有关
)。训练数据中对应于
α
i
>
0
\alpha_i>0
αi>0的样本点称为 支持向量
。
由KKT互补条件知, α i ( y i ( w ∗ ⋅ x + b ∗ ) − 1 ) = 0 \alpha_i(y_i(w^*\cdot x+b^*)-1)=0 αi(yi(w∗⋅x+b∗)−1)=0,当 α i > 0 \alpha_i>0 αi>0时,则一定有 y i ( w ∗ ⋅ x + b ∗ ) − 1 = 0 y_i(w^*\cdot x+b^*)-1=0 yi(w∗⋅x+b∗)−1=0,即 w ∗ ⋅ x + b ∗ = ± 1 w^*\cdot x+b^*=\pm1 w∗⋅x+b∗=±1,即 x i x_i xi一定在间隔边界上,这与“最大间隔法”中定义的支持向量一致。
2. 线性支持向量机(软间隔SVM)
训练集线性可分太理想化了,现实中的数据往往是线性不可分
的,例如训练集中含有噪声或特异点时,此时硬间隔最大化的SVM就不再适用了,而需要使用更一般化的软间隔最大化SVM。
2.1 学习策略:软间隔最大化
假设数据集特点:数据集不是线性可分的,除去少许特异点后,
大部分样本组成的集合是线性可分的
。
对每个样本点
(
x
i
,
y
i
)
(x_i,y_i)
(xi,yi)引入一个松弛变量
ξ
i
≥
0
\xi_i\ge0
ξi≥0,使得约束变为:
y
i
(
w
⋅
x
+
b
)
≥
1
−
ξ
i
y_i(w\cdot x +b)\ge1-\xi_i
yi(w⋅x+b)≥1−ξi,同时对每个松弛变量支付一个代价
ξ
i
\xi_i
ξi(这里的代价
ξ
i
\xi_i
ξi,其实就是不满足约束的程度
,结合后面合页损失来看,也是一样的意思:满足约束的即间隔大于1的,代价为0;勉强满足约束的即点落在间隔边界和分离超平面之间的,代价比较小,完全背离约束的即落在超平面误分一侧的,代价最大),则线性不可分的 线性支持向量机
的的学习问题就转化为如下的约束最优化的原始问题:
min w , b , ξ 1 2 ∥ w ∥ 2 + C ∑ i = 1 N ξ i s.t. y i ( w ⋅ x i + b ) ⩾ 1 − ξ i , i = 1 , 2 , ⋯ , N ξ i ⩾ 0 , i = 1 , 2 , ⋯ , N \begin{array}{ll}\min\limits_{w, b, \xi} & \frac{1}{2}\|w\|^{2}+C \sum\limits_{i=1}^{N} \xi_{i} \\\text { s.t. } & y_{i}\left(w \cdot x_{i}+b\right) \geqslant 1-\xi_{i}, \quad i=1,2, \cdots, N \\& \xi_{i} \geqslant 0, \quad i=1,2, \cdots, N\end{array} w,b,ξmin s.t. 21∥w∥2+Ci=1∑Nξiyi(w⋅xi+b)⩾1−ξi,i=1,2,⋯,Nξi⩾0,i=1,2,⋯,N
其中
C
>
0
C>0
C>0为惩罚因子,C越大,对误分类的惩罚增大,会迫使样本去满足约束;C越小,对误分类的惩罚减小。最小化目标函数除了要使得间隔(
2
∥
w
∥
\frac{2}{\|w\|}
∥w∥2)尽量大(
1
2
∥
w
∥
2
\frac{1}{2}\|w\|^{2}
21∥w∥2尽量小),还要使得误分类点个数尽量小(
∑
i
=
1
N
ξ
i
\sum\limits_{i=1}^{N} \xi_{i}
i=1∑Nξi尽量小)。
上面问题的解:w是唯一的,但b不是唯一的,而是在一个区间内。
求出上述约束最优化问题的解
w
∗
,
b
∗
w^*,b^*
w∗,b∗,就得到了 最大化软间隔
的分离超平面
w
∗
⋅
x
+
b
=
0
w^*\cdot x+b=0
w∗⋅x+b=0以及分类决策函数
f
(
x
)
=
s
i
g
n
(
w
∗
⋅
x
+
b
∗
)
f(x)=sign(w^* \cdot x+b^*)
f(x)=sign(w∗⋅x+b∗),即 线性支持向量机模型
。
2.2 学习算法—对偶形式
首先写出有约束最优化的原始问题的拉格朗日无约束优化函数
:
L ( w , b , ξ , α , μ ) ≡ 1 2 ∥ w ∥ 2 + C ∑ i = 1 N ξ i − ∑ i = 1 N α i ( y i ( w ⋅ x i + b ) − 1 + ξ i ) − ∑ i = 1 N μ i ξ i L(w, b, \xi, \alpha, \mu) \equiv \frac{1}{2}\|w\|^{2}+C \sum_{i=1}^{N} \xi_{i}-\sum_{i=1}^{N} \alpha_{i}\left(y_{i}\left(w \cdot x_{i}+b\right)-1+\xi_{i}\right)-\sum_{i=1}^{N} \mu_{i} \xi_{i} L(w,b,ξ,α,μ)≡21∥w∥2+Ci=1∑Nξi−i=1∑Nαi(yi(w⋅xi+b)−1+ξi)−i=1∑Nμiξi
其中 α i ≥ 0 , μ i ≥ 0 , i = 1 , . . . , N \alpha_i\ge0,\mu_i\ge0,i=1,...,N αi≥0,μi≥0,i=1,...,N,称为拉格朗日乘子。
约束最优化的原始问题可以表示为 拉格朗日极小极大问题
:
min
w
,
b
,
ξ
max
α
,
μ
L
(
w
,
b
,
ξ
,
α
,
μ
)
\min\limits_{w,b,\xi}\max\limits_{\alpha,\mu} L(w, b, \xi, \alpha, \mu)
w,b,ξminα,μmaxL(w,b,ξ,α,μ)。
由于 L ( w , b , ξ , α , μ ) L(w, b, \xi, \alpha, \mu) L(w,b,ξ,α,μ)和约束条件函数为连续可微的凸函数,且满足KKT条件,则原始问题的解与对偶问题的解是等价的,那么可以通过求解对偶问题来求解原始问题。
原始问题的对偶问题是 拉格朗日极大极小问题
:
max
α
,
μ
min
w
,
b
,
ξ
L
(
w
,
b
,
ξ
,
α
,
μ
)
\max\limits_{\alpha,\mu}\min\limits_{w,b,\xi} L(w, b, \xi, \alpha, \mu)
α,μmaxw,b,ξminL(w,b,ξ,α,μ)
(1)求 min w , b , ξ L ( w , b , ξ , α , μ ) \min\limits_{w,b,\xi} L(w, b, \xi, \alpha, \mu) w,b,ξminL(w,b,ξ,α,μ)
将 L ( w , b , ξ , α , μ ) L(w, b, \xi, \alpha, \mu) L(w,b,ξ,α,μ)分别对 w w w, b b b和 ξ \xi ξ求偏导数,并令其等于0。
∇ w L ( w , b , ξ , α , μ ) = w − ∑ i = 1 N α i y i x i = 0 ∇ b L ( w , b , ξ , α , μ ) = − ∑ i = 1 N α i y i = 0 ∇ ξ i L ( w , b , ξ , α , μ ) = C − α i − μ i = 0 \nabla_{w} L(w, b, \xi, \alpha, \mu)=w-\sum_{i=1}^{N} \alpha_{i} y_{i} x_{i}=0 \\\nabla_{b} L(w, b, \xi, \alpha, \mu)=-\sum_{i=1}^{N} \alpha_{i} y_{i}=0 \\\nabla_{\xi_i} L(w, b, \xi, \alpha, \mu)=C-\alpha_i-\mu_i=0 ∇wL(w,b,ξ,α,μ)=w−i=1∑Nαiyixi=0∇bL(w,b,ξ,α,μ)=−i=1∑Nαiyi=0∇ξiL(w,b,ξ,α,μ)=C−αi−μi=0
得
w = ∑ i = 1 N α i y i x i ∑ i = 1 N α i y i = 0 C − α i − μ i = 0 w=\sum_{i=1}^{N}\alpha_iy_ix_i\\\sum_{i=1}^{N}\alpha_iy_i=0 \\C-\alpha_i-\mu_i=0 w=i=1∑Nαiyixii=1∑Nαiyi=0C−αi−μi=0
代入得
L ( w , b , ξ , α , μ ) = − 1 2 ∑ i = 1 N ∑ j = 1 N α i α j y i y j ( x i ⋅ x j ) + ∑ i = 1 N α i \begin{aligned}L(w, b, \xi, \alpha, \mu) =&-\frac{1}{2} \sum_{i=1}^{N} \sum_{j=1}^{N} \alpha_{i} \alpha_{j} y_{i} y_{j}\left(x_{i} \cdot x_{j}\right)+\sum_{i=1}^{N} \alpha_{i}\end{aligned} L(w,b,ξ,α,μ)=−21i=1∑Nj=1∑Nαiαjyiyj(xi⋅xj)+i=1∑Nαi
即
min w , b , ξ L ( w , b , ξ , α , μ ) = − 1 2 ∑ i = 1 N ∑ j = 1 N α i α j y i y j ( x i ⋅ x j ) + ∑ i = 1 N α i \min_{w,b,\xi}L(w, b, \xi, \alpha, \mu)=-\frac{1}{2} \sum_{i=1}^{N} \sum_{j=1}^{N} \alpha_{i} \alpha_{j} y_{i} y_{j}\left(x_{i} \cdot x_{j}\right)+\sum_{i=1}^{N} \alpha_{i} w,b,ξminL(w,b,ξ,α,μ)=−21i=1∑Nj=1∑Nαiαjyiyj(xi⋅xj)+i=1∑Nαi
(2)求 min w , b , ξ L ( w , b , ξ , α , μ ) \min\limits_{w,b,\xi}L(w, b, \xi, \alpha, \mu) w,b,ξminL(w,b,ξ,α,μ)对 α \alpha α的极大,即对偶问题
max α − 1 2 ∑ i = 1 N ∑ j = 1 N α i α j y i y j ( x i ⋅ x j ) + ∑ i = 1 N α i s.t. ∑ i = 1 N α i y i = 0 C − α i − μ i = 0 α i ⩾ 0 μ i ⩾ 0 , i = 1 , 2 , ⋯ , N \begin{array}{ll}\max\limits_{\alpha} & -\frac{1}{2} \sum\limits_{i=1}^{N} \sum\limits_{j=1}^{N} \alpha_{i} \alpha_{j} y_{i} y_{j}\left(x_{i} \cdot x_{j}\right)+\sum\limits_{i=1}^{N} \alpha_{i} \\\text { s.t. } & \sum\limits_{i=1}^{N} \alpha_{i} y_{i}=0 \\& C-\alpha_i-\mu_i=0 \\& \alpha_{i} \geqslant 0 \\& \mu_i \geqslant 0 , \quad i=1,2, \cdots, N\end{array} αmax s.t. −21i=1∑Nj=1∑Nαiαjyiyj(xi⋅xj)+i=1∑Nαii=1∑Nαiyi=0C−αi−μi=0αi⩾0μi⩾0,i=1,2,⋯,N
等价于(利用等式 C − α i − μ i = 0 C-\alpha_i-\mu_i=0 C−αi−μi=0消去 μ i \mu_i μi,并将求max转化为求min):
min α 1 2 ∑ i = 1 N ∑ j = 1 N α i α j y i y j ( x i ⋅ x j ) − ∑ i = 1 N α i s.t. ∑ i = 1 N α i y i = 0 0 ⩽ α i ⩽ C , i = 1 , 2 , ⋯ , N \begin{array}{ll}\min\limits_{\alpha} & \frac{1}{2} \sum\limits_{i=1}^{N} \sum\limits_{j=1}^{N} \alpha_{i} \alpha_{j} y_{i} y_{j}\left(x_{i} \cdot x_{j}\right)-\sum\limits_{i=1}^{N} \alpha_{i} \\\text { s.t. } & \sum\limits_{i=1}^{N} \alpha_{i} y_{i}=0 \\& 0 \leqslant\alpha_{i} \leqslant C, \quad i=1,2, \cdots, N\end{array} αmin s.t. 21i=1∑Nj=1∑Nαiαjyiyj(xi⋅xj)−i=1∑Nαii=1∑Nαiyi=00⩽αi⩽C,i=1,2,⋯,N
上式即为 对偶最优化问题
。
对偶最优化问题对 α \alpha α的一个解设为 α ∗ \alpha^* α∗,那么原始问题最优化问题的解 w ∗ , b ∗ w^*,b^* w∗,b∗也可求出。
即求得
w ∗ = ∑ i = 1 N α i ∗ y i x i w^*=\sum_{i=1}^{N}\alpha_i^*y_ix_i w∗=i=1∑Nαi∗yixi
任选一个 α ∗ \alpha^* α∗的分量 α j ∗ \alpha_j^* αj∗满足 0 < α j ∗ < C 0 <\alpha_{j}^* < C 0<αj∗<C用来求 b ∗ b^* b∗(即任选一支持向量用来求 b ∗ b^* b∗):
b ∗ = y j − ∑ i = 1 N α i ∗ y i ( x i ⋅ x j ) b^*=y_j-\sum_{i=1}^{N}\alpha_i^*y_i(x_i\cdot x_j) b∗=yj−i=1∑Nαi∗yi(xi⋅xj)
分离超平面可以写为
∑ i = 1 N α i ∗ y i ( x ⋅ x i ) + b ∗ = 0 \sum_{i=1}^{N}\alpha_i^*y_i(x\cdot x_i)+b^*=0 i=1∑Nαi∗yi(x⋅xi)+b∗=0
分类决策函数可以写成
f ( x ) = sign ( ∑ i = 1 N α i ∗ y i ( x ⋅ x i ) + b ∗ ) f(x)=\text{sign}\left(\sum_{i=1}^{N}\alpha_i^*y_i(x\cdot x_i)+b^*\right) f(x)=sign(i=1∑Nαi∗yi(x⋅xi)+b∗)
对偶算法中,分类决策函数只依赖于输入
x
x
x和 训练样本
x
i
x_i
xi的内积,而上式称为
线性支持向量机的对偶形式
。
支持向量
将对偶问题的解
α
∗
=
(
α
1
∗
,
α
2
∗
,
⋯
,
α
N
∗
)
T
\alpha^*=\left(\alpha_1^*,\alpha_2^*,\cdots,\alpha_N^*\right)^T
α∗=(α1∗,α2∗,⋯,αN∗)T中对应与
α
i
∗
>
0
\alpha_i^*>0
αi∗>0的样本点
(
x
i
,
y
i
)
(x_i,y_i)
(xi,yi)的实例
x
i
x_i
xi称为 支持向量(软间隔的支持向量)
。
软间隔支持向量机的最终模型,也是
仅与支持向量有关
,即依然保证了 稀疏性
。
支持向量
x
i
x_i
xi到间隔边界(注意这里是间隔边界,而不是分离超平面
)的距离为
ξ
i
∥
w
∥
\frac{\xi_i}{\|w\|}
∥w∥ξi。
此时支持向量
的位置比线性可分的情况复杂:
在间隔边界上
或者在间隔平面与分离超平面之间
或者在分离超平面误分一侧
(1)当 α i ∗ < C \alpha_i^* <C αi∗<C时,则有 μ i ∗ = C − α i ∗ > 0 \mu_i^*=C-\alpha_i^* > 0 μi∗=C−αi∗>0,由KKT互补条件知, μ i ∗ ξ i ∗ = 0 \mu_i^*\xi_i^*=0 μi∗ξi∗=0,则一定有 ξ i = 0 \xi_i=0 ξi=0,即支持向量 x i x_i xi恰好落在间隔边界上;
(2)当 α i ∗ = C \alpha_i^* =C αi∗=C时,则有 μ i ∗ = C − α i ∗ = 0 \mu_i^*=C-\alpha_i^* = 0 μi∗=C−αi∗=0,对于 ξ i ∗ \xi_i^* ξi∗要分情况讨论:
(2.1)当 0 < ξ i < 1 0<\xi_i <1 0<ξi<1时,分类正确,支持向量 x i x_i xi落在间隔边界与分离超平面之间;
(2.2)当 ξ i = 1 \xi_i =1 ξi=1时,支持向量 x i x_i xi落在分离超平面上;
(2.3)当 ξ i > 1 \xi_i >1 ξi>1时,分类错误,支持向量 x i x_i xi落在分离超平面误分一侧
2.3 合页损失函数
支持向量机还有另外一种解释,最小化
∑ i = 1 N [ 1 − y i ( w ⋅ x i + b ) ] + + λ ∥ w ∥ 2 \sum_{i=1}^{N}\left[1-y_{i}\left(w \cdot x_{i}+b\right)\right]_{+}+\lambda\|w\|^{2} i=1∑N[1−yi(w⋅xi+b)]++λ∥w∥2
第一项是经验损失或经验风险
:
L
(
y
(
w
⋅
x
+
b
)
)
=
[
1
−
y
i
(
w
⋅
x
i
+
b
)
]
+
L(y(w\cdot x+b))=\left[1-y_{i}\left(w \cdot x_{i}+b\right)\right]_{+}
L(y(w⋅x+b))=[1−yi(w⋅xi+b)]+,称为合页损失函数
。下标
+
+
+表示:
[ z ] + = { z , z > 0 0 , z ≤ 0 [z]_+=\begin{cases}z,\quad z>0\\0,\quad z\le0\end{cases} [z]+={z,z>00,z≤0
第二项是系数为
λ
\lambda
λ的
w
w
w的
L
2
L_2
L2范数,是正则化项
。
合页损失的直观解释:
当样本点被正确分类且函数间隔(确信度)满足
y i ( w ⋅ x i + b ) > 1 y_{i}\left(w \cdot x_{i}+b\right)>1 yi(w⋅xi+b)>1时,损失才会为0,而处于分离超平面与间隔边界之间的点,即使它能被正确分类,也会产生
1 − y i ( w ⋅ x i + b ) 1-y_{i}\left(w \cdot x_{i}+b\right) 1−yi(w⋅xi+b)的损失。
使用合页损失的最优化问题与原始最优化问题等价:
原始最优化问题:
min w , b , ξ 1 2 ∥ w ∥ 2 + C ∑ i = 1 N ξ i s.t. y i ( w ⋅ x i + b ) ⩾ 1 − ξ i , i = 1 , 2 , ⋯ , N ξ i ⩾ 0 , i = 1 , 2 , ⋯ , N \begin{array}{ll}\min\limits_{w, b, \xi} & \frac{1}{2}\|w\|^{2}+C \sum\limits_{i=1}^{N} \xi_{i} \\\text { s.t. } & y_{i}\left(w \cdot x_{i}+b\right) \geqslant 1-\xi_{i}, \quad i=1,2, \cdots, N \\& \xi_{i} \geqslant 0, \quad i=1,2, \cdots, N\end{array} w,b,ξmin s.t. 21∥w∥2+Ci=1∑Nξiyi(w⋅xi+b)⩾1−ξi,i=1,2,⋯,Nξi⩾0,i=1,2,⋯,N
目标为最小化合页损失的最优化问题:
min w , b , ∑ i = 1 N [ 1 − y i ( w ⋅ x i + b ) ] + + λ ∥ w ∥ 2 \min\limits_{w, b,} \sum_{i=1}^{N}\left[1-y_{i}\left(w \cdot x_{i}+b\right)\right]_{+} +\lambda\|w\|^{2} w,b,mini=1∑N[1−yi(w⋅xi+b)]++λ∥w∥2
上图中横轴为函数间隔 y i ( w ⋅ x i + b ) y_{i}(w \cdot x_{i}+b) yi(w⋅xi+b),纵轴为损失。
- 0-1损失,二分类问题真正的损失函数,不是连续可导的,直接优化由其构成的目标函数较困难
- 虚线:感知机的损失函数: [ − y i ( w ⋅ x i + b ) ] + \left[-y_{i}\left(w \cdot x_{i}+b\right)\right]_{+} [−yi(w⋅xi+b)]+
- 实线:hinge合页损失函数,不仅要分类正确,而且确信度要足够高时损失才为0,对学习有更严格更高的要求。hinge损失有一块“平坦”的零区域,这使得SVM的解具有
稀疏性
,无需依赖更多的样本。
注意:硬间隔和软间隔的对偶问题,唯一的差别就在于对偶变量的约束不同,硬间隔是
0 ⩽ α i 0\leqslant\alpha_i 0⩽αi,而软间隔是
0 ⩽ α i ⩽ C 0\leqslant\alpha_i \leqslant C 0⩽αi⩽C。
3. 序列最小最优化算法 SMO
一个样本
x
i
x_i
xi对应一个
α
i
\alpha_i
αi,所以问题求解规模与训练样本数成正比,当训练样本容量很大时,求解
α
\alpha
α就很困难。
α
\alpha
α的求解一般使用 序列最小最优化SMO
算法,基本思路就是:先固定除了
α
i
\alpha_i
αi之外的所有参数,然后求
α
i
\alpha_i
αi的极值。但由于存在约束:
∑
i
=
1
N
α
i
y
i
=
0
\sum\limits_{i=1}^{N} \alpha_{i} y_{i}=0
i=1∑Nαiyi=0,如果固定
α
i
\alpha_i
αi以外的变量,
α
i
\alpha_i
αi可由其他变量导出,所以SMO每次选择两个变量
α
i
,
α
j
\alpha_i,\alpha_j
αi,αj,并固定其他参数。然后在参数初始化后,不断执行如下两个步骤直至收敛:
- 选择一对需要更新的变量 α i , α j \alpha_i,\alpha_j αi,αj
- 固定 α i , α j \alpha_i,\alpha_j αi,αj以外的参数,求解 max α − 1 2 ∑ i = 1 N ∑ j = 1 N α i α j y i y j ( x i ⋅ x j ) + ∑ i = 1 N α i \max\limits_{\alpha} -\frac{1}{2} \sum\limits_{i=1}^{N} \sum\limits_{j=1}^{N} \alpha_{i} \alpha_{j} y_{i} y_{j}\left(x_{i} \cdot x_{j}\right)+\sum\limits_{i=1}^{N} \alpha_{i} αmax−21i=1∑Nj=1∑Nαiαjyiyj(xi⋅xj)+i=1∑Nαi,以获得更新后的 α i , α j \alpha_i,\alpha_j αi,αj
SMO在选择
α
i
,
α
j
\alpha_i,\alpha_j
αi,αj时采用启发式:使选取的两个变量所对应的样本之间的间隔最大
。
详情可参考刘建平老师的支持向量机原理(四)SMO算法原理,这里不深入展开,因为我觉得不是SVM的核心key idea。
4. 线性SVM 和线性LR(逻辑回归)的比较
而LR的负对数似然函数: L ( w ^ ) = − [ ∑ i = 1 N y i l o g p ( y i ~ = 1 ∣ x ) + ( 1 − y i ) l o g ( p ( y i ~ = 0 ∣ x ) ) ] = − [ ∑ i = 1 N y i l o g p ( y i ~ = 1 ∣ x ) + ( 1 − y i ) l o g ( 1 − p ( y i ~ = 1 ∣ x ) ) ] = − [ ∑ i = 1 N y i l o g p ( y i ~ = 1 ∣ x ) l o g ( 1 − p ( y i ~ = 1 ∣ x ) ) + l o g ( 1 − p ( y i ~ = 1 ∣ x ) ) ] \begin{array}{ll}L(\hat{w})&= -\left[ \sum\limits_{i=1}^N y_ilogp(\tilde{y_i}=1|x)+(1-y_i)log(p(\tilde{y_i}=0|x))\right] \\&=-\left[ \sum\limits_{i=1}^N y_ilogp(\tilde{y_i}=1|x)+(1-y_i)log(1-p(\tilde{y_i}=1|x))\right]\\&=-\left[ \sum\limits_{i=1}^N y_i\frac{logp(\tilde{y_i}=1|x)}{log(1-p(\tilde{y_i}=1|x))}+log(1-p(\tilde{y_i}=1|x))\right]\end{array} L(w^)=−[i=1∑Nyilogp(yi~=1∣x)+(1−yi)log(p(yi~=0∣x))]=−[i=1∑Nyilogp(yi~=1∣x)+(1−yi)log(1−p(yi~=1∣x))]=−[i=1∑Nyilog(1−p(yi~=1∣x))logp(yi~=1∣x)+log(1−p(yi~=1∣x))]
为了方便, w , x w,x w,x记为增广向量 w ^ , x ^ \hat{w},\hat{x} w^,x^,其中 w ^ = < w , b > , x ^ = < x , 1 > \hat{w}=<w,b>,\hat{x}=<x,1> w^=<w,b>,x^=<x,1>。
因为 p ( y = 1 ∣ x ) = 1 1 + e − w ^ ⋅ x ^ = e w ^ ⋅ x ^ 1 + e w ^ ⋅ x ^ p(y=1|x)=\frac{1}{1+e^{-\hat{w}\cdot \hat{x}}}=\frac{e^{\hat{w}\cdot \hat{x}}}{1+e^{\hat{w}\cdot \hat{x}}} p(y=1∣x)=1+e−w^⋅x^1=1+ew^⋅x^ew^⋅x^, p ( y = 0 ∣ x ) = 1 1 + e w ^ ⋅ x ^ p(y=0|x)=\frac{1}{1+e^{\hat{w}\cdot \hat{x}}} p(y=0∣x)=1+ew^⋅x^1,即有:
l o g p ( y = 1 ∣ x ) l o g p ( y = 0 ∣ x ) = l o g p ( y = 1 ∣ x ) 1 − l o g p ( y = 1 ∣ x ) = w ^ ⋅ x ^ = w ⋅ x + b \frac{log\,p(y=1|x)}{log\,p(y=0|x)}=\frac{log\,p(y=1|x)}{1-log\,p(y=1|x)}=\hat{w}\cdot \hat{x}=w\cdot x +b logp(y=0∣x)logp(y=1∣x)=1−logp(y=1∣x)logp(y=1∣x)=w^⋅x^=w⋅x+b
l o g ( 1 − p ( y i ~ = 1 ∣ x ) ) = − l o g ( 1 + exp ( w ⋅ x + b ) ) log(1-p(\tilde{y_i}=1|x))=-log(1+\exp(w\cdot x+b)) log(1−p(yi~=1∣x))=−log(1+exp(w⋅x+b))
所以 L ( w , b ) = − [ ∑ i = 1 N y i ( w ⋅ x i + b ) − l o g ( 1 + exp ( w ⋅ x i + b ) ) ] L(w,b)=-\left[ \sum\limits_{i=1}^N y_i (w\cdot x_i+b)-log(1+\exp(w\cdot x_i+b))\right] L(w,b)=−[i=1∑Nyi(w⋅xi+b)−log(1+exp(w⋅xi+b))]
所以LR的优化目标是: min w , b , − [ ∑ i = 1 N y i ( w ⋅ x i + b ) − l o g ( 1 + exp ( w ⋅ x i + b ) ) ] \min\limits_{w, b,} -\left[ \sum\limits_{i=1}^N y_i (w\cdot x_i+b)-log(1+\exp(w\cdot x_i+b))\right] w,b,min−[i=1∑Nyi(w⋅xi+b)−log(1+exp(w⋅xi+b))]
带正则项的LR 优化目标是:
min w , b , − ∑ i = 1 N y i ( w ⋅ x i + b ) + l o g ( 1 + exp ( w ⋅ x i + b ) ) + 1 2 ∥ w ∥ 2 \min\limits_{w, b,} - \sum\limits_{i=1}^N y_i (w\cdot x_i+b)+log(1+\exp(w\cdot x_i+b))+\frac{1}{2}\|w\|^2 w,b,min−i=1∑Nyi(w⋅xi+b)+log(1+exp(w⋅xi+b))+21∥w∥2
从合页损失来看SVM的优化目标: min w , b , ∑ i = 1 N [ 1 − y i ( w ⋅ x i + b ) ] + + λ ∥ w ∥ 2 \min\limits_{w, b,} \sum\limits_{i=1}^{N}\left[1-y_{i}\left(w \cdot x_{i}+b\right)\right]_{+} +\lambda\|w\|^{2} w,b,mini=1∑N[1−yi(w⋅xi+b)]++λ∥w∥2
他们都具有如下类似的形式:
min f ∈ F ∑ i = 1 N L ( y i , f ( x i ) ) + λ Ω ( f ) \min\limits_{f\in\mathcal F}\sum\limits_{i=1}^NL(y_i,f(x_i))+\lambda \Omega(f) f∈Fmini=1∑NL(yi,f(xi))+λΩ(f)
第一项表示了在训练集上的损失,即经验风险,第2项表示了模型的复杂度,作为正则化项,可以抑制过拟合,带有正则化项的损失叫做结构风险。 λ ⩾ 0 \lambda \geqslant0 λ⩾0作为惩罚系数,用以权衡了经验风险和模型复杂度。结构风险除了能对训练数据较好的拟合外,对于未知数据也能有较好的预测,更具有泛化性。
线性LR和线性SVM的比较:
线性LR和线性SVM的优化目标相近,通常情况下性能也相当。在实际的分类任务中,线性Logistic回归和线性支持向量机往往得到非常相似的结果 。但是:
(1)LR的优势在于其输出具有自然的概率意义,SVM要输出概率需要进行特殊处理
(2)LR能直接应用于多分类任务,SVM则需要进行推广
(3)SVM的hinge损失有一块“平坦”的零区域,这使得SVM的解具有**稀疏性**,无需依赖更多的样本。而LR的对率损失
l l o g ( z ) = l o g ( 1 + e − z l_{log}(z)=log({1+e^{-z}} llog(z)=log(1+e−z)是光滑的单调递减函数,不能导出类似支持向量的概念,因此LR的解需要更多的训练样本。
(4)逻辑回归试图最大化训练数据的条件似然性,这使得它比支持向量机更容易出现离群值,后者主要关心最接近决策边界的点(支持向量)。
(5) 另一方面,Logistic回归具有更简单的模型和更容易实现的优点。
(6)此外,Logistic回归模型可以很容易地更新,这在处理流数据时很有吸引力。
5. 代码示例:linear SVM解决线性可分问题
准备数据集:
# 准备鸢尾花数据集
iris = datasets.load_iris()
# iris.data 一共有4个特征
X = iris.data[:,[2,3]] # 只使用2个特征: petal length and petal width 以及3个类别
y = iris.target
print(X.shape, y.shape)
print('Class labels:', np.unique(y))
输出:
(150, 2) (150,)
Class labels: [0 1 2]
划分数据集以及对数据进行预处理(特征标准化):
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.3, random_state=1, stratify=y)
# standardize the features 以获得最佳性能
sc = StandardScaler()
sc.fit(X_train)
X_train_std = sc.transform(X_train)
X_test_std = sc.transform(X_test)
训练并绘制分类决策边界:
X_combined_std = np.vstack((X_train_std, X_test_std))
y_combined = np.hstack((y_train, y_test))
svm = SVC(kernel='linear', C=1.0, random_state=1)
svm.fit(X_train_std, y_train)
plot_decision_regions(X_combined_std, y_combined, classifier=svm, test_idx=range(105, 150))
plt.xlabel('petal length [standardized]')
plt.ylabel('petal width [standardized]')
plt.legend(loc='upper left')
plt.show()
上面使用的是线性核
,如果使用RBF核
,分类决策边界将会更加soft
,关于核函数相关内容会在非线性支持向量机中介绍。下面看一下使用RBF核的SVM的分类决策边界:
# 实现rbf核以及相对较小的\gamma 值,能得到更加soft的决策边界
svm = SVC(kernel='rbf', random_state=1, gamma=0.2, C=1.0)
svm.fit(X_train_std, y_train)
plot_decision_regions(X_combined_std, y_combined, classifier=svm, test_idx=range(105,150))
plt.xlabel('petal length [standardized]')
plt.ylabel('petal width [standardized]')
plt.legend(loc='upper left')
plt.show()
完整代码地址
完整代码请移步至: 我的github:https://github.com/qingyujean/Magic-NLPer,求赞求星求鼓励~~~
最后:如果本文中出现任何错误,请您一定要帮忙指正,感激~
参考
[1] 统计学习方法(第2版) 李航
[2] Python_Machine_Learning_2nd_Edition
[3] 西瓜书-机器学习 周志华