SVM算法详解

article/2025/10/1 3:26:40

Support Vector Machine

终于,我们来到了SVM。SVM是我个人感觉机器学习中最优美的算法,这次我们要来非常细致地介绍。SVM是一类有监督的分类算法,它的大致思想是:假设样本空间上有两类点,我们希望找到一个划分超平面,将这两类样本分开,而划分超平面应该选择泛化能力最好的,也就是能使得两类样本中距离它最近的样本点距离最大。

Hard Margin&Dual Problem

Hard Margin

在这里插入图片描述

如图所示,中间那条加粗的超平面就是我们所求的最优划分超平面。我们知道平面的方程可以用线性方程: w T x + b = 0 w^Tx+b=0 wTx+b=0来表示, w = ( w 1 , w 2 , … , w n ) w=(w_1,w_2,\dots,w_n) w=(w1,w2,,wn)表示的是平面的法矢量。现在,我们假设样本空间 D = { ( x i , y i ) ∣ i ∈ Z + } D=\{(x_i,y_i)|i\in Z^{+}\} D={(xi,yi)iZ+}中只有两个类别的样本,类别标记分别为 y i = 1 y_i=1 yi=1 y i = − 1 y_i=-1 yi=1。那么对于 ( x i , y i ) , y i = 1 (x_i,y_i),y_i=1 (xi,yi),yi=1,超平面得到的结果 w T x i + b ≥ 1 w^Tx_i+b\ge1 wTxi+b1;反之, w T x i + b ≤ − 1 w^Tx_i+b\le-1 wTxi+b1。因此我们有:
{ w T x i + b ≥ 1 , y i = 1 w T x i + b ≤ − 1 , y i = − 1 \begin{cases} w^Tx_i \ + \ b \ \ge \ 1, \ \ \ \ \ y_i=1 \\ w^Tx_i \ + \ b \ \le \ -1, \ \ \ \ \ y_i=-1\end{cases} {wTxi + b  1,     yi=1wTxi + b  1,     yi=1
某一个样本点 ( x i , y i ) (x_i,\ y_i) (xi, yi)到划分超平面的距离公式为:
γ = ∣ w T x i + b ∣ ∣ ∣ w ∣ ∣ \gamma \ = \ \frac{|w^Tx_i+b|}{||w||} γ = ∣∣w∣∣wTxi+b
考虑两类样本点中距离划分超平面最近的样本,这类样本恰好能够使得上式中的等号成立,如图:

在这里插入图片描述

我们称这类距离划分超平面最近的样本点为“支持向量”,称 γ = 2 ∣ ∣ w ∣ ∣ \gamma \ = \ \frac{2}{||w||} γ = ∣∣w∣∣2为“间隔”。

之前我们说到了,我们希望这个间隔能够最大化来使得模型泛化能力最强,因此我们的任务就是:
m a x i m i z e w 2 ∣ ∣ w ∣ ∣ s . t . y i ( w T x i + b ) ≥ 1 maximize_{w} \ \ \ \ \ \ \ \ \ \frac{2}{||w||} \\ s.t. \ \ \ \ y_i(w^Tx_i+b) \ \ge \ 1 maximizew         ∣∣w∣∣2s.t.    yi(wTxi+b)  1
这个任务等价于:
m i n i m i z e w 1 2 ∣ ∣ w ∣ ∣ 2 s . t 1 − y i ( w T x i + b ) ≤ 0 minimize_{w} \ \ \ \ \ \ \ \ \ \frac{1}{2}{||w||^2} \\ s.t \ \ \ \ \ 1 - y_i(w^Tx_i+b) \le 0 minimizew         21∣∣w2s.t     1yi(wTxi+b)0
这就变成了一个非常典型的凸优化问题。

Dual Problem

对于求条件极值,我们自然要先写出他的Lagrange乘子式:
L ( α , w , b ) = 1 2 ∣ ∣ w ∣ ∣ 2 − ∑ i = 1 n α i ( 1 − y i ( w T x i + b ) ) L(\alpha,w,b) \ = \ \frac{1}{2}||w||^2 \ - \ \sum_{i=1}^{n}{\alpha_i}{(1-y_i(w^Tx_i+b))} L(α,w,b) = 21∣∣w2  i=1nαi(1yi(wTxi+b))
我们的任务是 m i n i m i z e L ( α , w , b ) minimize \ \ L(\alpha,w,b) minimize  L(α,w,b)
下面考虑它的dual problem:
m i n w , b m a x α L ( α , w , b ) min_{w,b}max_{\alpha}L(\alpha,w,b) \\ minw,bmaxαL(α,w,b)
接下来求出 L L L w , b w,b w,b的偏导:
∇ w L = w − ∑ i = 1 n α i y i x i = 0 w = ∑ i = 1 n α i y i x i ∇ b L = − ∑ i = 1 n α i y i = 0 ∑ i = 1 n α i y i = 0 \nabla_{w}L = w-\sum_{i=1}^n{\alpha_iy_ix_i}=0 \ \ \ \ \ \ \ \ \ w = \sum_{i=1}^n{\alpha_iy_ix_i} \\ \nabla_{b}L = -\sum_{i=1}^n{\alpha_iy_i} = 0 \ \ \ \ \ \ \ \ \ \ \ \sum_{i=1}^n{\alpha_iy_i}=0 wL=wi=1nαiyixi=0         w=i=1nαiyixibL=i=1nαiyi=0           i=1nαiyi=0
代入 L ( α , w , b ) L(\alpha, w, b) L(α,w,b)我们可以得到一个只与 α \alpha α相关的函数:
g ( α ) = ∑ i = 1 n α i − 1 2 ∑ i = 1 n ∑ j = 1 n α i α j y i y j x i T x j g(\alpha) = \sum_{i=1}^n{\alpha_i} - \frac{1}{2}\sum_{i=1}^n\sum_{j=1}^{n}{\alpha_i\alpha_jy_iy_jx_i^Tx_j} g(α)=i=1nαi21i=1nj=1nαiαjyiyjxiTxj
因此我们可以把问题转化为:
m a x α ∑ i = 1 n α i − 1 2 ∑ i = 1 n ∑ j = 1 n α i α j y i y j x i T x j s . t . α i ≥ 0 ∑ i = 1 n α i y i = 0 max_{\alpha} \ \ \ \ \ \ \ \ \ \ \ \ \ \sum_{i=1}^n{\alpha_i} - \frac{1}{2}\sum_{i=1}^n\sum_{j=1}^{n}{\alpha_i\alpha_jy_iy_jx_i^Tx_j} \\ s.t. \ \ \ \ \ \ \ \ \ \ \alpha_i\ge0 \\ \ \ \ \ \ \ \ \ \ \ \ \ \sum_{i=1}^n{\alpha_iy_i}=0 maxα             i=1nαi21i=1nj=1nαiαjyiyjxiTxjs.t.          αi0            i=1nαiyi=0
如果满足的是strong dual,那么应该满足的KKT条件是:
{ 1 − y i ( w T x i + b ) ≤ 0 p r i m a l c o n s t r a i n t α i ≥ 0 d u a l c o n s t r a i n t α i ( 1 − y i ( w T x i + b ) ) = 0 c o m p l e m e n t a r y s l a c k n e s s \begin{cases} 1-y_i(w^Tx_i+b)\le0 \ \ \ \ \ \ \ \ \ \ \ \ primal \ \ constraint \\ \alpha_i\ge0 \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ dual \ \ constraint \\ \alpha_i(1-y_i(w^Tx_i+b))=0 \ \ \ complementary \ \ slackness \end{cases} 1yi(wTxi+b)0            primal  constraintαi0                                   dual  constraintαi(1yi(wTxi+b))=0   complementary  slackness
(突然发现学过凸优化理论就是好……)

Soft Margin

前面我们谈到的都是理想状况,也就是能够找到一个划分平面把两类样本点完全分开。但是很多时候,我们会遇到一些特殊的数据导致无法用一个平面实现完全准确的分类,因此提出了Soft Margin软间隔,即允许有分类错误的情况发生。如图所示,红色点样本点就是被分类错误的点。

在这里插入图片描述

那么我们就在原来的目标函数中加入一个分类错误的损失 ξ i \xi_i ξi,在最小化 ∣ ∣ w ∣ ∣ 2 2 \frac{||w||^2}{2} 2∣∣w2的同时也最小化总体分类误差,即:
m i n i m i z e 1 2 ∣ ∣ w ∣ ∣ 2 + C ∑ i = 1 n ξ i minimize \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \frac{1}{2}||w||^2 \ + \ C\sum_{i=1}^n\xi_i \ \ \ \ \ minimize               21∣∣w2 + Ci=1nξi     
C是一个惩罚系数,C越大,代表模型对分类正确的要求越高
现在我们要考虑这个 ξ i \xi_i ξi到底应该是什么。在Hard Margin当中,我们提到了如果某个样本被分类正确,那么他应该满足的条件是:
y i ( w T x i + b ) ≥ 1 y_i(w^Tx_i+b)\ge1 yi(wTxi+b)1
因此,对于 ξ i \xi_i ξi,我们希望的是当样本满足上述条件时,等于0;否则,等于一个正比于 y i ( w T x i + b ) y_i(w^Tx_i+b) yi(wTxi+b) 1 1 1之间差距的值。我们常用的损失函数有MSE、Sigmoid+Cross Entropy等等,如下图所示:

在这里插入图片描述

但我们会发现这些损失函数都不太符合我们的需求。因此,在SVM中,我们提出了Hinge Loss,即:
L h i n g e = { 0 y i ( w T x i + b ) ≥ 1 1 − y i ( w T x i + b ) y i ( w T x i + b ) < 1 L_{hinge} = \begin{cases} 0 \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ y_i(w^Tx_i+b)\ge1 \\ 1 - y_i(w^Tx_i+b) \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ y_i(w^Tx_i+b)\lt1 \end{cases} Lhinge={0                                        yi(wTxi+b)11yi(wTxi+b)               yi(wTxi+b)<1
在这里插入图片描述

那么, ξ i \xi_i ξi也就可以用Hinge Loss来表示,与此同时,我们的约束条件也发生了一些变化:
m i n i m i z e 1 2 ∣ ∣ w ∣ ∣ 2 + C ∑ i = 1 n m a x ( 0 , 1 − y i ( w T x i + b ) ) s . t . y i ( w T x i + b ) ≥ 1 − ξ i ξ i ≥ 0 minimize \ \ \ \ \ \ \ \ \ \ \ \ \frac{1}{2}{||w||^2}+C\sum_{i=1}^nmax(0, 1-y_i(w^Tx_i+b)) \\ s.t. \ \ \ \ \ \ \ \ \ \ y_i(w^Tx_i+b)\ge1-\xi_i \\ \xi_i\ge0 minimize            21∣∣w2+Ci=1nmax(0,1yi(wTxi+b))s.t.          yi(wTxi+b)1ξiξi0
我们看到这里的约束条件从 ≥ 1 \ge1 1变成了 ≥ 1 − ξ i \ge1-\xi_i 1ξi,也就是条件放宽了一些,因此我们也称 ξ i \xi_i ξi为松弛变量(slack variable)。

同理,我们还是写出拉格朗日乘子式,然后求对偶问题,可以得到:
m a x i m i z e α ∑ i = 1 n α i − 1 2 ∑ i = 1 n ∑ j = 1 n α i α j y i y j x i T x j s . t . 0 ≤ α i ≤ C ∑ i = 1 n α i y i = 0 maximize_{\alpha} \ \ \ \ \ \ \ \ \ \ \ \ \ \sum_{i=1}^n{\alpha_i} - \frac{1}{2}\sum_{i=1}^n\sum_{j=1}^{n}{\alpha_i\alpha_jy_iy_jx_i^Tx_j} \\ s.t. \ \ \ \ \ \ \ \ \ \ 0\le\alpha_i\le C \\ \ \ \ \ \ \ \ \ \ \ \ \ \sum_{i=1}^n{\alpha_iy_i}=0 maximizeα             i=1nαi21i=1nj=1nαiαjyiyjxiTxjs.t.          0αiC            i=1nαiyi=0
需要满足的KKT条件为:
{ 1 − ξ i − y i ( w T x i + b ) ≤ 0 α i ≥ 0 α i ( 1 − ξ i − y i ( w T x i + b ) ) = 0 ξ i ≥ 0 β i ξ i = 0 ( β 是另一个拉格朗日乘子 ) \begin{cases} 1-\xi_i-y_i(w^Tx_i+b)\le0 \ \ \ \ \ \ \ \ \ \ \ \\ \alpha_i\ge0 \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \\ \alpha_i(1-\xi_i-y_i(w^Tx_i+b))=0 \ \\ \xi_i\ge0 \\ \beta_i\xi_i=0(\beta是另一个拉格朗日乘子) \end{cases} 1ξiyi(wTxi+b)0           αi0                                αi(1ξiyi(wTxi+b))=0 ξi0βiξi=0(β是另一个拉格朗日乘子)

Kernel

Intuition

再来考虑一类问题,假如有一组样本,软间隔也失效了该怎么办,话可能不太好描述,直接看图:

在这里插入图片描述

这种样本显然用线性的平面是不可能划分开的。但是假如我们能够把它映射到高维空间,那是不是就能线性可分了?如图:

在这里插入图片描述

再举一个例子,感知机中经典的异或问题,我们都知道异或问题单个感知机是无法实现的,但是如果我们将它映射到高维,如图:

在这里插入图片描述

这样我们就能找到一个线性的平面实现划分了。

Kernel Function

从上面的图中我们发现,只要我们找到一种映射 x − > ϕ ( x ) x->\phi(x) x>ϕ(x),或者说从空间 R R R到空间 H H H,然后就能在新的空间用线性的超平面进行划分。但是问题又来了,这种映射关系倒是很好找,例如 x = ( x 1 , x 2 … , x n ) x=(x_1,x_2\dots,x_n) x=(x1,x2,xn) ϕ ( x ) = ( x 1 x 2 , x 1 x 3 , … , x 1 x n , x 2 x 1 , x 2 x 3 , … x 2 x n , … ) \phi(x)=(x_1x_2,x_1x_3,\dots,x_1x_n,x_2x_1,x_2x_3,\dots x_2x_n,\dots) ϕ(x)=(x1x2,x1x3,,x1xn,x2x1,x2x3,x2xn,),即 ϕ ( x ) \phi(x) ϕ(x)表示 x x x中两两特征之积,那么当我们要计算 ϕ ( x ) \phi(x) ϕ(x)的时候,所花费的代价是 O ( n 2 ) O(n^2) O(n2)的。在机器学习或深度学习任务中,成千上万的数据量是非常正常的,这就导致了模型效率的大幅下降。

因此,我们希望找到某种函数 K ( x , z ) K(x,z) K(x,z),使得我们不需要显式地写出映射关系 ϕ ( x ) \phi(x) ϕ(x),就能计算得到 ϕ ( x ) T ϕ ( z ) \phi(x)^T\phi(z) ϕ(x)Tϕ(z)的结果。我们称这样的函数为核函数。下面举个例子:
证明 K ( x , z ) = ( x ⋅ z ) 2 是一个核函数 , x , z ∈ R 2 x = ( x 1 , x 2 ) z = ( z 1 , z 2 ) ( x ⋅ z ) 2 = ( x 1 x 2 + z 1 z 2 ) 2 = x 1 2 x 2 2 + 2 x 1 x 2 z 1 z 2 + z 1 2 z 2 2 于是 , 对于 ϕ ( x ) = ( x 1 2 , x 1 x 2 , x 2 2 ) , K ( x , z ) = ϕ ( x ) T ϕ ( z ) = ( x ⋅ z ) 2 所以利用核函数 K ( x , z ) = ( x ⋅ z ) 2 , 我们可以将数据映射到 R 3 空间 证明K(x,z)=(x\cdot z)^2是一个核函数,x,z\in R^2 \\ x=(x_1,x_2) \ \ \ \ z=(z_1,z_2) \\ (x\cdot z)^2=(x_1x_2+z_1z_2)^2=x_1^2x_2^2+2x_1x_2z_1z_2+z_1^2z_2^2 \\ 于是,对于\phi(x)=(x_1^2,x_1x_2,x_2^2),K(x,z)=\phi(x)^T\phi(z)=(x\cdot z)^2\\ 所以利用核函数K(x,z)=(x \cdot z)^2,我们可以将数据映射到R^3空间 证明K(x,z)=(xz)2是一个核函数,x,zR2x=(x1,x2)    z=(z1,z2)(xz)2=(x1x2+z1z2)2=x12x22+2x1x2z1z2+z12z22于是,对于ϕ(x)=(x12,x1x2,x22),K(x,z)=ϕ(x)Tϕ(z)=(xz)2所以利用核函数K(x,z)=(xz)2,我们可以将数据映射到R3空间
下面是核函数的严格定义:

在这里插入图片描述

Sufficient&Necessary Condition

在这里插入图片描述

在这里插入图片描述

了解即可

Common Kernel Function

Linear Kernel

K ( x , z ) = x T z + c K(x,z)=x^Tz+c K(x,z)=xTz+c

Polynomial Kernel

K ( x , z ) = ( a x T z + b ) c K(x,z)=(ax^Tz+b)^c K(x,z)=(axTz+b)c

RBF Kernel

K ( x , z ) = e x p ( ∣ ∣ x − z ∣ ∣ 2 − 2 σ 2 ) K(x,z)=exp(\frac{||x-z||^2}{-2\sigma^2}) K(x,z)=exp(2σ2∣∣xz2)

Laplacian Kernel

K ( x , z ) = e x p ( − ∣ ∣ x − z ∣ ∣ σ ) K(x,z)=exp(-\frac{||x-z||}{\sigma}) K(x,z)=exp(σ∣∣xz∣∣)

Non-Linear SVM

上面介绍Kernel的目的就是引出下面的非线性SVM。对于线性不可分的问题,SVM中就是使用核函数技巧将原样本映射到高维空间,在高维空间寻找线性解。而我们唯一需要做的变化就是将原来目标函数中的 x i T x j x_i^Tx_j xiTxj变为 K ( x i , x j ) K(x_i,x_j) K(xi,xj),就实现了从低位到高维空间的映射,即:
m a x i m i z e α ∑ i = 1 n α i − 1 2 ∑ i = 1 n ∑ j = 1 n α i α j y i y j K ( x i , x j ) s . t . 0 ≤ α i ≤ C ∑ i = 1 n α i y i = 0 maximize_{\alpha} \ \ \ \ \ \ \ \ \ \ \ \ \ \sum_{i=1}^n{\alpha_i} - \frac{1}{2}\sum_{i=1}^n\sum_{j=1}^{n}{\alpha_i\alpha_jy_iy_jK(x_i,x_j)} \\ s.t. \ \ \ \ \ \ \ \ \ \ 0\le\alpha_i\le C \\ \ \ \ \ \ \ \ \ \ \ \ \ \sum_{i=1}^n{\alpha_iy_i}=0 maximizeα             i=1nαi21i=1nj=1nαiαjyiyjK(xi,xj)s.t.          0αiC            i=1nαiyi=0
事实上,对于任意的模型,只要目标函数中出现了 x x x的内积形式,我们都可以应用核技巧。

SMO Algorithm

前面我们只得到了最终要优化的函数,但是还没有讲到底怎么得到最优的 α \alpha α。首先,我们引入一个定理:

在这里插入图片描述

这个定理告诉我们,只要求解出最优的 α \alpha α,我们就可以返回去求出最优的划分平面。

接下来,我们来一步步地推导SMO算法,这是一个非常复杂的过程。SMO地思想是每次找到两个变量 α i α j \alpha_i \ \alpha_j αi αj,针对这两个变量构建一个凸二次规划问题。最终,当所有的 α \alpha α都满足KKT条件时,我们的优化就完成了。而每次选取两个变量的标准就是, α i \alpha_i αi选择样本中违反KKT条件最严重的, α j \alpha_j αj根据约束条件来自动确定,下面开始推导。

Mathematical Deduction

不失一般性,我们假设选择的两个变量为 α 1 , α 2 \alpha_1,\alpha_2 α1,α2,其他变量 α j \alpha_j αj看作是固定的常数,于是我们要优化的问题就可以写成:
m i n i m i z e α 1 , α 2 1 2 K 11 α 1 2 + 1 2 K 22 α 2 2 + K 12 α 1 α 2 − ( α 1 + α 2 ) + y 1 α 1 ∑ i = 3 n y i α i K i 1 + y 2 α 2 ∑ i = 3 n y i α i K i 2 s . t . α 1 y 1 + α 2 y 2 = − ∑ i = 3 n α i y i = δ 0 ≤ α i ≤ C minimize_{\alpha_1,\alpha_2} \ \ \ \ \ \frac{1}{2}K_{11}{\alpha_1^2}+\frac{1}{2}K_{22}{\alpha_2^2}+K_{12}{\alpha_1\alpha_2}-(\alpha_1+\alpha_2)+y_1\alpha_1\sum_{i=3}^ny_i\alpha_iK_{i1}+y_2\alpha_2\sum_{i=3}^ny_i\alpha_iK_{i2} \\ s.t. \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \alpha_1y_1+\alpha_2y_2=-\sum_{i=3}^n{\alpha_iy_i}=\delta \\ 0\le\alpha_i\le C minimizeα1,α2     21K11α12+21K22α22+K12α1α2(α1+α2)+y1α1i=3nyiαiKi1+y2α2i=3nyiαiKi2s.t.                 α1y1+α2y2=i=3nαiyi=δ0αiC
首先我们来分析约束条件 α 1 y 1 + α 2 y 2 \alpha_1y_1+\alpha_2y_2 α1y1+α2y2,对于两个变量,我们可以用图像来表示

在这里插入图片描述
其实这就是一个直线方程, y 1 , y 2 y_1,y_2 y1,y2有两种情况:同号和异号
因此我们要求的的是目标函数在平行于对角线的线段上的最优值,这样我们又可以转化为一个单变量的最优化问题,不妨只考虑 α 2 \alpha_2 α2
假设初始可行解为 α 1 o l d , α 2 o l d \alpha_1^{old},\alpha_2^{old} α1old,α2old最优解为 α 1 n e w , α 2 n e w \alpha_1^{new},\alpha_2^{new} α1new,α2new, 假设在沿着约束方向未经修剪的 α 2 \alpha_2 α2的最优解为 α 2 n e w , u n c \alpha_2^{new,unc} α2new,unc。由于 α 2 n e w \alpha_2^{new} α2new要满足不等式约束,因此 L ≤ α 2 n e w ≤ H L\le\alpha_2^{new}\le H Lα2newH L , H L,H L,H α 2 n e w \alpha_2^{new} α2new的上下界。

  • y 1 = y 2 y_1=y_2 y1=y2
    • 下界: L = m i n ( 0 , α 2 o l d − α 1 o l d ) L=min(0, \alpha_2^{old}-\alpha_1^{old}) L=min(0,α2oldα1old)
    • 上界: H = m a x ( C , C + α 2 o l d − α 1 o l d ) H=max(C,C+\alpha_2^{old}-\alpha_1^{old}) H=max(C,C+α2oldα1old)
  • y 1 ≠ y 2 y_1\neq y_2 y1=y2时,
    • 下界: L = m i n ( 0 , α 2 o l d + α 1 o l d − C ) L=min(0,\alpha_2^{old}+\alpha_1^{old}-C) L=min(0,α2old+α1oldC)
    • 上界: H = m a x ( C , α 2 o l d + α 1 o l d ) H=max(C,\alpha_2^{old}+\alpha_1^{old}) H=max(C,α2old+α1old)

下面,首先求未经约束条件修剪的最优值 α 2 n e w , u n c \alpha_2^{new,unc} α2new,unc
g ( x ) = ∑ i = 1 n α i y i K ( x i , x ) + b g(x)=\sum_{i=1}^n{\alpha_iy_iK(x_i,x)}+b g(x)=i=1nαiyiK(xi,x)+b
E i = g ( x i ) − y i = ( ∑ j = 1 n α j y j K ( x j , x i ) + b ) − y i i = 1 , 2 E_i=g(x_i)-y_i=(\sum_{j=1}^n{\alpha_j}y_jK(x_j,x_i)+b)-y_i \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ i=1,2 Ei=g(xi)yi=(j=1nαjyjK(xj,xi)+b)yi                  i=1,2
那么 E i E_i Ei就表示预测值与真实值之间的误差
在这里插入图片描述

在这里插入图片描述
接下来计算阈值b和差值E

在这里插入图片描述

在这里插入图片描述

Principle of Choosing Variable

在这里插入图片描述

在这里插入图片描述

其实当我们优化完得到最后所有的 α i \alpha_i αi后,我们会发现只有少数的 α i \alpha_i αi不为 0 0 0而那些不为 0 0 0 α \alpha α就是我们的支持向量


http://chatgpt.dhexx.cn/article/ROTWHN69.shtml

相关文章

SVM简介

SVM 文章目录 SVM一. 什么是SVM1. 简介2.SVM分类 二. 详细介绍1. 线性可分SVM1.1 支撑点&#xff0c;支撑向量1.2 分割超平面与间隔最大化1.3 线性可分SVM的目标函数以及相关算法1.4 线性可分SVM的简单举例 2.线性SVM2.1 为什么需要线性SVM2.2 线性SVM相关理论2.3 线性SVM算法 …

Svm算法原理及实现

Svm&#xff08;support Vector Mac&#xff09;又称为支持向量机&#xff0c;是一种二分类的模型。当然如果进行修改之后也是可以用于多类别问题的分类。支持向量机可以分为线性核非线性两大类。其主要思想为找到空间中的一个更够将所有数据样本划开的超平面&#xff0c;并且使…

SVM 原理详解,通俗易懂

看了该作者的文章&#xff0c;瞬间膜拜了&#xff01;讲得太好了&#xff01; 转自&#xff1a;http://www.blogjava.net/zhenandaci/category/31868.html &#xff08;一&#xff09;SVM的简介 支持向量机(Support Vector Machine)是Cortes和Vapnik于1995年首先提出的&…

机器学习笔记6:SVM基本原理

SVM的基本原理&#xff1a; 1、最大间隔原则 2、对偶表示 3、KKT条件 SVM(Support Vector Machine)&#xff0c;又称支持向量机&#xff0c;在分类问题上&#xff0c;除了logistic分类回归外&#xff0c;还有另一种实现方式&#xff0c;那就是使用SVM原则。那么什么是SVM 呢。…

SVM原理

我们先认识一下SVM&#xff1a; &#xff08;1&#xff09;支持向量机&#xff08;Support Vector Machine, SVM&#xff09;是一种对数据进行二分类的广义线性分类器&#xff0c;其分类边界是对学习样本求解的最大间隔超平面。 &#xff08;2&#xff09;SVM使用铰链损失函数…

通俗易懂SVM原理介绍,适合小白食用

目录 1、SVM概念描述 2、SVM数学表达及相关计算 3、SVM优化问题定义 附&#xff1a;证明区 【证明1】 【计算1】 1、SVM概念描述 如图一所示&#xff0c;存在两个数据集&#xff0c;我们希望通过一个超平面将两个数据集分割开&#xff0c;并且我们希望这个超平面离两个数…

01-Hive创建表

声明&#xff1a;本实验环境是Apache hadoop-2.2.0&#xff0c;zookeeper-3.4.5&#xff0c;mysql Server version: 5.1.73作为元数据库&#xff0c;hive版本是apache-hive-0.9.0-bin&#xff0c;都是apache&#xff0c;不是CDH和其他。本实验集群3台&#xff0c;一个主节点(ha…

hive 中创建表的三种方式

官网地址&#xff1a;https://cwiki.apache.org/confluence/display/Hive/LanguageManualDDL 通常我们所使用的创建hive表有三种方式 1.create table 首先我们找到官网对创建表的描述如下&#xff1a; ’[]’ 表示可选&#xff0c;’|’ 表示几选一 CREATE [TEMPORARY] [EXT…

hive创建新表——基础

创建基础表 1、创建表&#xff1a; create table if not exists orders 创建一个名叫“orders”的表&#xff0c;“if not exists”可以写可不写&#xff0c;如果相同名字的表已经存在&#xff0c;则抛出异常&#xff0c;可以用 IF NOT EXIST 选项来忽略这个异常。 2、定义表…

HIVE的常用操作-建库和表-插入数据

hive的安装&#xff08;远程模式&#xff09; 点击打开链接 使用hive----------------------- 启动hadoop 启动hive 创建数据库&#xff1a; create database myhive; 查看数据库&#xff1a; hive (default)> show databases; OK database_name default myhive 数…

Hive三种建表语句详解

转载自&#xff1a;https://blog.csdn.net/qq_36743482/article/details/78383964 注&#xff1a;hive其他语法在hive官网有说明&#xff0c;建议初学者&#xff0c;去官网学习一手的资料&#xff0c; 官网&#xff1a;https://cwiki.apache.org/confluence/display/Hive/Home#…

关于hive建表查询语句小记

库相关操作 创建数据库 CREATE DATABASE [IF NOT EXISTS] database_name [COMMENT database_comment] [LOCATION hdfs_path] [WITH DBPROPERTIES (property_nameproperty_value, ...)]; IF NOT EXISTS 也就是没有重复库就创建&#xff0c;有重复就不执行建库 保证了建库…

hive、pg库,建表语句及查询表结构语句

1、hive hive 建表语句 DROP TABLE IF EXISTS tmp_001; CREATE TABLE tmp_001 (etl_time timestamp comment , day_id double comment , subs_id string comment , msisdn int comment ) comment partitioned by…

3、Hive数据仓库——建表语句

文章目录 Hive基本操作Hive查看SQL解析计划Hive建表建表1&#xff1a;全部使用默认建表方式 Hive 内部表 &#xff08;Managed tables&#xff09;指定location (这种方式也比较常用)formatted 查看该表的结构化数据&#xff0c;但并不列出表中的数据将本地数据上传到HDfS上 Hi…

HIVE的三种建表方式

目录 一、直接建表二、as &#xff08;直接使用查询结果插入到一张新表&#xff09;三、like&#xff08;复制表结构&#xff09; 一、直接建表 中括号里面的均为可选项 CREATE [EXTERNAL] TABLE [IF NOT EXISTS] table_name[(col_name data_type [COMMENT col_comment], ...…

Hive学习3:Hive三种建表语句详解

注&#xff1a;hive其他语法在hive官网有说明&#xff0c;建议初学者&#xff0c;去官网学习一手的资料&#xff0c; 官网&#xff1a;https://cwiki.apache.org/confluence/display/Hive/Home#Home-UserDocumentation Create Table 官网说明 Hive建表方式共有三种&#xff…

Hive_ Hive 建表语句详解

参考文章&#xff1a; https://blog.csdn.net/qq_36743482/article/details/78383964 最近博主在编写一个每天定时创建Hive 分区的脚本&#xff0c;其中需要创建Hive表&#xff0c; 开始的时候我以为创建Hive 表的语句顺序是比较宽松的&#xff0c;经过测试发现不然&#xf…

Hive建表语句详解--CREATE TABLE

创建表的三种方法 Hive创建表的方式&#xff08;默认路径/user/hive/warehouse&#xff0c;也可以location指定&#xff0c;主要针对external表&#xff09; 1、使用create命令创建一个新表,带分区 CREATE TABLE mydb.dept( dept_no int, addr string, tel string) par…

【Hive】Hive 创建表

学习笔记—Hive创建表 1. Hive语句的特点 HQL 语言大小写不敏感&#xff0c;但内容分大小写&#xff08;where ,if/ case when&#xff0c;如&#xff1a;数据表内容某人名叫Tom&#xff0c;则条件后不能写tom&#xff0c;HDFS 路径名&#xff08;NameNode&#xff09;分大小写…

hive建表语句

目录 一、建表语句1、创建内部表2、创建外部表3、建表高阶语句 CTAS 和 WITH4、向临时表中插入原表中的数据5、创建分区表 一、建表语句 1、创建内部表 建表&#xff1a; CREATE TABLE phone_info(id int,name String,storage String,price double) ROW FORMAT DELIMITED //…