支持向量机(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 wx+b=0,将训练实例完全分开。其确立的分类决策函数为:

f ( x ) = s i g n ( w ∗ ⋅ x + b ∗ ) f(x)=sign(w^* \cdot x+b^*) f(x)=sign(wx+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(wx+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| wx+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(wwx+wb)=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(wwxi+wb)γ,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(wxi+b)γ^,i=1,2,,N

函数间隔 γ ^ \hat\gamma γ^的取值并不影响最优化问题的解。取 γ ^ = 1 \hat\gamma=1 γ^=1,则目标转化为最大化 1 ∥ w ∥ \frac{1}{\|w\|} w1,约束转化为 y i ( w ⋅ x i + b ) ≥ 1 y_i\left(w\cdot x_i+b\right)\ge1 yi(wxi+b)1。又因为最大化 1 ∥ w ∥ \frac{1}{\|w\|} w1和最小化 1 2 ∥ w ∥ 2 \frac{1}{2}\|w\|^2 21w2(更方便求导)等价,所以约束最优化问题可进一步改写为:

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.21w2yi(wxi+b)10,i=1,2,,N

求出上述约束最优化问题的解 w ∗ , b ∗ w^*,b^* w,b,就得到了最大间隔分离超平面 w ∗ ⋅ x + b = 0 w^*\cdot x+b=0 wx+b=0以及分类决策函数 f ( x ) = s i g n ( w ∗ ⋅ x + b ∗ ) f(x)=sign(w^* \cdot x+b^*) f(x)=sign(wx+b),即线性可分支持向量机模型。

间隔最大化的直观解释:
对训练数据集找到几何间隔最大的超平面,意味着以充分大的确信度对训练数据进行分类。也就是说,不仅将正负实例点分开,而且最难分的点(离超平面最近的点)也有足够大的确信度把它们分开。而这样的超平面,对未知的新实例,应该有很好的分类预测能力。

1.3 学习算法—最大间隔法

线性可分训练数据集的最大间隔超平面是 存在且唯一 的。

线性可分SVM算法-最大间隔法
线性可分SVM算法-最大间隔法

支持向量和间隔边界

线性可分的情况下,离分离超平面最近的样本点,称为支持向量。支持向量是约束不等式等号成立的点,即 y i ( w ⋅ x i + b ) − 1 = 0 y_i\left(w\cdot x_i+b\right)-1=0 yi(wxi+b)1=0

支持向量

超平面 H 1 : w ⋅ x + b = 1 H_1:w\cdot x+b=1 H1:wx+b=1和超平面 H 2 : w ⋅ x + b = − 1 H_2:w\cdot x+b=-1 H2:wx+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\|} w2

在决定分离超平面时,只有支持向量起作用,而其他实例点并不起作用。这也是模型名称支持向量机的由来。支持向量个数一般很少,所以支持向量机由很少的但却很重要的训练样本确定。

1.4 学习算法—对偶形式

对偶算法的 优点

  1. 对偶问题往往 更容易求解(内积形式
  2. 自然引入 核函数,进而推广到非线性分类问题

首先写出有约束最优化的 原始问题拉格朗日无约束优化函数

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,α)=21w2i=1Nαiyi(wxi+b)+i=1Nαi

其中 α i ≥ 0 , i = 1 , . . . , N \alpha_i\ge0,i=1,...,N αi0,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,α)=wi=1Nαiyixi=0bL(w,b,α)=i=1Nα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=1Nαiyixii=1Nα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=1Nj=1Nαiαjyiyj(xixj)i=1Nαiyi((j=1Nαjyjxj)xi+b)+i=1Nαi21i=1Nj=1Nαiαjyiyj(xixj)+i=1Nα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=1Nj=1Nαiαjyiyj(xixj)+i=1Nα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=1Nj=1Nαiαjyiyj(xixj)+i=1Nαii=1Nαiyi=0αi0,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=1Nj=1Nαiαjyiyj(xixj)i=1Nαii=1Nαiyi=0αi0,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=1Nαiyixi

任选一个 α ∗ \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=yji=1Nαiyi(xixj)

分离超平面可以写为

∑ 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=1Nαiyi(xxi)+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=1Nαiyi(xxi)+b)

对偶算法中,分类决策函数只依赖于输入 x x x 和 训练样本 x i x_i xi的内积,而上式称为线性可分支持向量机的对偶形式

线性可分SVM算法-对偶算法

总结来说,对于线性可分的数据集来说,先求解对偶问题的解 α ∗ \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(wx+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(wx+b)1=0,即 w ∗ ⋅ x + b ∗ = ± 1 w^*\cdot x+b^*=\pm1 wx+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 ξi0,使得约束变为: y i ( w ⋅ x + b ) ≥ 1 − ξ i y_i(w\cdot x +b)\ge1-\xi_i yi(wx+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. 21w2+Ci=1Nξiyi(wxi+b)1ξi,i=1,2,,Nξi0,i=1,2,,N

其中 C > 0 C>0 C>0为惩罚因子,C越大,对误分类的惩罚增大,会迫使样本去满足约束;C越小,对误分类的惩罚减小。最小化目标函数除了要使得间隔( 2 ∥ w ∥ \frac{2}{\|w\|} w2)尽量大( 1 2 ∥ w ∥ 2 \frac{1}{2}\|w\|^{2} 21w2尽量小),还要使得误分类点个数尽量小( ∑ i = 1 N ξ i \sum\limits_{i=1}^{N} \xi_{i} i=1Nξi尽量小)。

上面问题的解:w是唯一的,但b不是唯一的,而是在一个区间内。

求出上述约束最优化问题的解 w ∗ , b ∗ w^*,b^* w,b,就得到了 最大化软间隔 的分离超平面 w ∗ ⋅ x + b = 0 w^*\cdot x+b=0 wx+b=0以及分类决策函数 f ( x ) = s i g n ( w ∗ ⋅ x + b ∗ ) f(x)=sign(w^* \cdot x+b^*) f(x)=sign(wx+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,ξ,α,μ)21w2+Ci=1Nξii=1Nαi(yi(wxi+b)1+ξi)i=1Nμiξi

其中 α i ≥ 0 , μ i ≥ 0 , i = 1 , . . . , N \alpha_i\ge0,\mu_i\ge0,i=1,...,N αi0,μi0,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,ξ,α,μ)=wi=1Nαiyixi=0bL(w,b,ξ,α,μ)=i=1Nα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=1Nαiyixii=1Nα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=1Nj=1Nαiαjyiyj(xixj)+i=1Nα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=1Nj=1Nαiαjyiyj(xixj)+i=1Nα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=1Nj=1Nαiαjyiyj(xixj)+i=1Nαii=1Nαiyi=0Cαiμi=0αi0μi0,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=1Nj=1Nαiαjyiyj(xixj)i=1Nαii=1Nαiyi=00αiC,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=1Nαiyixi

任选一个 α ∗ \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=yji=1Nαiyi(xixj)

分离超平面可以写为

∑ 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=1Nαiyi(xxi)+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=1Nαiyi(xxi)+b)

对偶算法中,分类决策函数只依赖于输入 x x x和 训练样本 x i x_i xi的内积,而上式称为线性支持向量机的对偶形式

线性不可分SVM算法-对偶算法
线性不可分SVM算法-对偶算法

支持向量

将对偶问题的解 α ∗ = ( α 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=1N[1yi(wxi+b)]++λw2

第一项是经验损失或经验风险 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(wx+b))=[1yi(wxi+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,z0

第二项是系数为 λ \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(wxi+b)>1时,损失才会为0,而处于分离超平面与间隔边界之间的点,即使它能被正确分类,也会产生 1 − y i ( w ⋅ x i + b ) 1-y_{i}\left(w \cdot x_{i}+b\right) 1yi(wxi+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. 21w2+Ci=1Nξiyi(wxi+b)1ξi,i=1,2,,Nξi0,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=1N[1yi(wxi+b)]++λw2

合页损失函数

上图中横轴为函数间隔 y i ( w ⋅ x i + b ) y_{i}(w \cdot x_{i}+b) yi(wxi+b),纵轴为损失。

  • 0-1损失,二分类问题真正的损失函数,不是连续可导的,直接优化由其构成的目标函数较困难
  • 虚线:感知机的损失函数: [ − y i ( w ⋅ x i + b ) ] + \left[-y_{i}\left(w \cdot x_{i}+b\right)\right]_{+} [yi(wxi+b)]+
  • 实线:hinge合页损失函数,不仅要分类正确,而且确信度要足够高时损失才为0,对学习有更严格更高的要求。hinge损失有一块“平坦”的零区域,这使得SVM的解具有 稀疏性,无需依赖更多的样本。

注意:硬间隔和软间隔的对偶问题,唯一的差别就在于对偶变量的约束不同,硬间隔是 0 ⩽ α i 0\leqslant\alpha_i 0αi,而软间隔是 0 ⩽ α i ⩽ C 0\leqslant\alpha_i \leqslant C 0αiC

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=1Nα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} αmax21i=1Nj=1Nαiαjyiyj(xixj)+i=1Nα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=1Nyilogp(yi~=1x)+(1yi)log(p(yi~=0x))]=[i=1Nyilogp(yi~=1x)+(1yi)log(1p(yi~=1x))]=[i=1Nyilog(1p(yi~=1x))logp(yi~=1x)+log(1p(yi~=1x))]

为了方便, 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=1x)=1+ew^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=0x)=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=0x)logp(y=1x)=1logp(y=1x)logp(y=1x)=w^x^=wx+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(1p(yi~=1x))=log(1+exp(wx+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=1Nyi(wxi+b)log(1+exp(wxi+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=1Nyi(wxi+b)log(1+exp(wxi+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,mini=1Nyi(wxi+b)+log(1+exp(wxi+b))+21w2

从合页损失来看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=1N[1yi(wxi+b)]++λw2

他们都具有如下类似的形式:

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) fFmini=1NL(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+ez是光滑的单调递减函数,不能导出类似支持向量的概念,因此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()

linear-kernel SVM 分类决策边界

上面使用的是线性核,如果使用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()

rbf-kernel SVM 分类决策边界

完整代码地址

完整代码请移步至: 我的github:https://github.com/qingyujean/Magic-NLPer,求赞求星求鼓励~~~

最后:如果本文中出现任何错误,请您一定要帮忙指正,感激~

参考

[1] 统计学习方法(第2版) 李航
[2] Python_Machine_Learning_2nd_Edition
[3] 西瓜书-机器学习  周志华

  • 2
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: OpenCV是一个开放源代码的图像处理库,也支持机器学习和模式识别等领域的算法。其中包括支持向量机(Support Vector Machine, SVM)算法,可以用于非线性回归任务。 支持向量机是一种常见的机器学习算法,可以用于分类和回归问题。在回归任务中,支持向量机可以用于建立非线性回归模型。 OpenCV中的支持向量机线性回归主要基于核函数方法。核函数可以将非线性问题转化为高维空间中的线性问题,这样就可以使用线性回归模型进行建模。OpenCV提供了多种核函数供选择,如线性核函数、多项式核函数和径向基函数(Radial Basis Function, RBF)核函数等。 使用OpenCV进行支持向量机线性回归的步骤大致如下: 1. 收集回归数据集,并根据需求进行预处理,如数据归一化。 2. 创建一个支持向量机模型对象,通过设置相关参数,如核函数类型、惩罚因子等,来进行模型配置。 3. 使用训练数据集训练支持向量机模型。 4. 使用训练好的模型进行预测,得到回归结果。 5. 根据需要,可以对模型进行进一步优化、调参等。 通过OpenCV的支持向量机线性回归功能,我们可以在处理非线性回归问题时,利用支持向量机算法建立准确性较高的模型。这样可以对各种复杂的非线性数据进行准确的回归预测,并能适应不同的核函数和其它参数配置的需求。 ### 回答2: OpenCV库是一种广泛使用的开源计算机视觉和机器学习库,其中包括了支持向量机SVM)算法,可以用于非线性回归。 支持向量机是一种监督学习模型,用于分类和回归问题。在线性回归问题中,我们试图找到最佳的直线或平面来拟合数据。然而,在某些情况下,数据可能无法线性分割,这就需要使用非线性回归算法,如支持向量机。 OpenCV中的支持向量机实现的一个关键概念是核函数。核函数可以将数据从输入空间(原始特征空间)映射到一个更高维的特征空间,这样可以使数据在更高维度的空间中变得线性可分。OpenCV提供了多个核函数选项,如径向基函数(RBF)核、多项式核等,这些核函数可以根据问题的要求进行选择。 在使用OpenCV进行非线性回归时,我们首先需要准备训练数据和测试数据。然后,我们可以选择适当的核函数,并通过调整一些参数(如核函数的参数、惩罚因子等)来训练支持向量机模型。训练完成后,我们可以使用模型来预测新的数据样本。 总之,OpenCV库提供了支持向量机算法的实现,以解决非线性回归问题。通过选择适当的核函数和调整参数,可以构建一个准确的非线性回归模型,从而在计算机视觉和机器学习任务中提供更好的性能和结果。 ### 回答3: OpenCV是一个广泛应用于计算机视觉和图像处理领域的开源库。它不仅支持常见的图像处理功能,还包括机器学习算法。其中,OpenCV也提供了对支持向量机(Support Vector Machine,SVM)的支持,包括非线性回归。 支持向量机是一种常用的机器学习算法,旨在通过寻找最优的超平面,将数据点划分成不同的类别。在线性回归中,SVM可以用于从给定的数据集中预测一个连续性的输出变量。然而,有时候数据集并不是线性可分的,这时就需要通过非线性回归来解决这个问题。 在OpenCV中,支持向量机线性回归通过使用内核函数来实现。内核函数的作用是将训练数据从原始特征空间映射到更高维的特征空间,使得数据在新的空间中能够线性可分。常见的内核函数包括多项式函数、径向基函数和Sigmoid函数等。 使用OpenCV进行支持向量机线性回归的步骤主要有以下几个: 1. 准备训练数据集,包括输入变量X和输出变量y。 2. 创建一个SVM对象,并设置相关参数,如内核函数和惩罚参数等。 3. 调用SVM对象的训练方法,输入训练数据集,训练出一个SVM模型。 4. 对新的输入数据进行预测,可以使用SVM对象的predict方法,得到相应的输出结果。 总之,OpenCV支持向量机线性回归提供了一种有效的工具来处理非线性可分的数据集。通过选择合适的内核函数和参数设置,可以在计算机视觉和图像处理等领域中应用SVM算法,实现准确的预测和分类任务。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值