SVM

from:https://blog.csdn.net/liugan528/article/details/79448379

SVM

1. 基本概念

支持向量机(Support Vector Machine, SVM)的基本模型是在特征空间上找到最佳的分离超平面使得训练集上正负样本间隔最大。SVM是用来解决二分类问题的有监督学习算法,在引入了核方法之后SVM也可以用来解决非线性问题。 
一般SVM有下面三种:

  • 硬间隔支持向量机(线性可分支持向量机):当训练数据线性可分时,可通过硬间隔最大化学得一个线性可分支持向量机。
  • 软间隔支持向量机:当训练数据近似线性可分时,可通过软间隔最大化学得一个线性支持向量机。
  • 非线性支持向量机:当训练数据线性不可分时,可通过核方法以及软间隔最大化学得一个非线性支持向量机。

2. 硬间隔支持向量机

给定训练样本集D={(x1,y1),(x2,y2),,(xn,yn)}D={(x1→,y1),(x2→,y2),…,(xn→,yn)}yi{+1,1}yi∈{+1,−1}ii表示第ii个样本,nn表示样本容量。分类学习最基本的想法就是基于训练集DD在特征空间中找到一个最佳划分超平面将正负样本分开,而SVM算法解决的就是如何找到最佳超平面的问题。超平面可通过如下的线性方程来描述:

w⃗ Tx⃗ +b=0(1)(1)w→Tx→+b=0
其中 w⃗ w→ 表示法向量,决定了超平面的方向; bb 表示偏移量,决定了超平面与原点之间的距离。 
对于训练数据集 DD 假设找到了最佳超平面 wx⃗ +b=0w∗→x→+b∗=0 ,定义决策分类函数
f(x⃗ )=sign(wx⃗ +b)(2)(2)f(x→)=sign(w∗→x→+b∗)
该分类决策函数也称为线性可分支持向量机。 
在测试时对于线性可分支持向量机可以用一个样本离划分超平面的距离来表示分类预测的可靠程度,如果样本离划分超平面越远则对该样本的分类越可靠,反之就不那么可靠。 
那么,什么样的划分超平面是最佳超平面呢? 
对于图1有A、B、C三个超平面,很明显应该选择超平面B,也就是说超平面首先应该能满足将两类样本点分开。

ellipse
图1

对于图2的A、B、C三个超平面,应该选择超平面C,因为使用超平面C进行划分对训练样本局部扰动的“容忍”度最好,分类的鲁棒性最强。例如,由于训练集的局限性或噪声的干扰,训练集外的样本可能比图2中的训练样本更接近两个类目前的分隔界,在分类决策的时候就会出现错误,而超平面C受影响最小,也就是说超平面C所产生的分类结果是最鲁棒性的、是最可信的,对未见样本的泛化能力最强。
ellipse
图2

下面以图3中示例进行推导得出最佳超平面。
ellipse
图3

空间中超平面可记为 (w⃗ ,b)(w→,b) ,根据点到平面的距离公式,空间中任意点 x⃗ x→ 到超平面 (w⃗ ,b)(w→,b) 的距离可写为:
r=w⃗ x⃗ +b||w⃗ ||(3)(3)r=w→x→+b||w→||
假设超平面 (w⃗ ,b)(w→,b) 能将训练样本正确分类,那么对于正样本一侧的任意一个样本 (xi,yi)D(xi→,yi)∈D ,应该需要满足该样本点往超平面的法向量 w⃗ w→ 的投影到原点的距离大于一定值 cc 的时候使得该样本点被预测为正样本一类,即存在数值 cc 使得当 w⃗ Txi>cw→Txi→>c yi=+1yi=+1 w⃗ Txi>cw→Txi→>c 又可写为 w⃗ Txi+b>0w→Txi→+b>0 。在训练的时候我们要求限制条件更严格点以使最终得到的分类器鲁棒性更强,所以我们要求 w⃗ Txi+b>1w→Txi→+b>1 。也可以写为大于其它距离,但都可以通过同比例缩放 w⃗ w→ bb 来使得使其变为1,因此为计算方便这里直接选择1。同样对于负样本应该有 w⃗ Txi+b<1w→Txi→+b<−1 yi=1yi=−1 。即: 
{w⃗ Txi+b+1,w⃗ Txi+b1,yi=+1yi=1(4)(4){w→Txi→+b≥+1,yi=+1w→Txi→+b≤−1,yi=−1
亦即:
yi(w⃗ Txi+b)+1(5)(5)yi(w→Txi→+b)≥+1
如图3所示,距离最佳超平面 w⃗ x⃗ +b=0w→x→+b=0 最近的几个训练样本点使上式中的等号成立,它们被称为“支持向量”(support vector)。记超平面 w⃗ x⃗ +b=+1w→x→+b=+1 w⃗ x⃗ +b=1w→x→+b=−1 之间的距离为 γγ ,该距离又被称为“间隔”(margin),SVM的核心之一就是想办法将“间隔” γγ 最大化。下面我们推导一下 γγ 与哪些因素有关: 
记超平面 w⃗ x⃗ +b=+1w→x→+b=+1 上的正样本为 x+x+→ ,超平面 w⃗ x⃗ +b=1w→x→+b=−1 上的负样本为 xx−→ ,则根据向量的加减法规则 x+x+→ 减去 xx−→ 得到的向量在最佳超平面的法向量 w⃗ w→ 方向的投影即为“间隔” γγ
γ=(x+x)w⃗ ||w⃗ ||=x+w⃗ ||w⃗ ||xw⃗ ||w⃗ ||(6)(6)γ=(x+→−x−→)w→||w→||=x+→w→||w→||−x−→w→||w→||
w⃗ x++b=+1w→x+→+b=+1 w⃗ x+b=1w→x−→+b=−1 ,即:
{w⃗ x+=1bw⃗ x+=1b(7)(7){w→x+→=1−bw→x+→=−1−b

将(7)带入(6)可得:
γ=2||w⃗ ||(8)(8)γ=2||w→||
也就是说使两类样本距离最大的因素仅仅和最佳超平面的法向量有关! 
要找到具有“最大间隔”(maximum margin)的最佳超平面,就是找到能满足式(4)中约束的参数 w⃗ w→ bb 使得 γγ 最大,即:
{maxw⃗ ,b2||w⃗ ||s.t.yi(w⃗ Txi+b)+1,i=1,2,,n(9)(9){maxw→,b2||w→||s.t.yi(w→Txi→+b)≥+1,i=1,2,…,n
显然(9)等价于
{minw⃗ ,b12||w⃗ ||2s.t.yi(w⃗ Txi+b)+1,i=1,2,,n(10)(10){minw→,b12||w→||2s.t.yi(w→Txi→+b)≥+1,i=1,2,…,n
这就是SVM的基本型。

2.1 拉格朗日对偶问题

根据SVM的基本型求解出w⃗ w→bb即可得到最佳超平面对应的模型:

f(x⃗ )=sign(w⃗ x⃗ +b)(11)(11)f(x→)=sign(w→x→+b)
该求解问题本身是一个凸二次规划(convex quadratic propgramming)问题,可以通过开源的优化计算包进行求解,但是这样就无法体现SVM的精髓,我们可以将该凸二次规划问题通过拉格朗日对偶性来解决。 
对于式(10)的每条约束添加拉格朗日乘子 αi0αi≥0 ,则该问题的拉格朗日函数可写为:
L(w⃗ ,b,α⃗ )=12||w⃗ ||2i=1nαi(yi(w⃗ Txi+b)1)(12)(12)L(w→,b,α→)=12||w→||2−∑i=1nαi(yi(w→Txi+b)−1)
其中 α⃗ =(α1,α2,,αn)α→=(α1,α2,…,αn) 分别是对应着各个样本的拉格朗日乘子。 
L(w⃗ ,b,α⃗ )L(w→,b,α→) w⃗ w→ bb 求偏导并将偏导数等于零可得:
{w⃗ =ni=1αiyixini=1αiyi=0(13)(13){w→=∑i=1nαiyixi→∑i=1nαiyi=0
将(13)带入(12)消去 w⃗ w→ bb 就可得到(10)的对偶问题:
maxαni=1αi12ni=1nj=1αiαjyiyjxiTxjs.t.αi0,i=1,2,,nni=1αiyi=0(14)(14){maxα∑i=1nαi−12∑i=1n∑j=1nαiαjyiyjxi→Txj→s.t.αi≥0,i=1,2,…,n∑i=1nαiyi=0
由(14)可知我们并不关心单个样本是如何的,我们只关心样本间两两的乘积,这也为后面核方法提供了很大的便利。 
求解出 α⃗ α→ 之后,再求解出 w⃗ w→ bb 即可得到SVM决策模型:
f(x⃗ )=w⃗ Tx⃗ +b=i=1nαiyixiTx⃗ +b(15)(15)f(x→)=w→Tx→+b=∑i=1nαiyixi→Tx→+b

2.2 SVM问题的KKT条件

在(10)中有不等式约束,因此上述过程满足Karush-Kuhn-Tucker(KKT)条件:

αi0yi(w⃗ Tx⃗ +b)10,i=1,2,,nαi(yi(w⃗ Tx⃗ +b)1)=0(16)(16){αi≥0yi(w→Tx→+b)−1≥0,i=1,2,…,nαi(yi(w→Tx→+b)−1)=0
对于任意样本 (xi,yi)(xi→,yi) 总有 αi=0αi=0 yi(w⃗ Tx⃗ +b)1=0yi(w→Tx→+b)−1=0 。如果 αi=0αi=0 则由式(15)可知该样本点对求解最佳超平面没有任何影响。当 αi>0αi>0 时必有 yi(w⃗ Tx⃗ +b)1=0yi(w→Tx→+b)−1=0 ,表明对应的样本点在最大间隔边界上,即对应着支持向量。也由此得出了SVM的一个重要性质: 训练完成之后,大部分的训练样本都不需要保留,最终的模型仅与支持向量有关 。 
那么对于式(14)该如何求解 α⃗ α→ 呢?很明显这是一个二次规划问题,可使用通用的二次规划算法来求解,但是SVM的算法复杂度是 O(n2)O(n2) ,在实际问题中这种开销太大了。为了有效求解该二次规划问题,人们通过利用问题本身的特性,提出了很多高效算法,Sequential Minimal Optimization(SMO)就是一个常用的高效算法。在利用SMO算法进行求解的时候就需要用到上面的KKT条件。利用SMO算法求出 α⃗ α→ 之后根据:
{w⃗ =ni=1αiyixiyi(w⃗ Tx⃗ +b)1=0(17)(17){w→=∑i=1nαiyixi→yi(w→Tx→+b)−1=0
即可求出 w⃗ w→ bb 。求解出 w⃗ w→ bb 之后就可利用
f(x⃗ )=sign(w⃗ Tx⃗ +b)(18)(18)f(x→)=sign(w→Tx→+b)
进行预测分类了,注意在测试的时候不需要 1−1 ,测试时没有训练的时候要求严格。

3. 软间隔支持向量机

在现实任务中很难找到一个超平面将不同类别的样本完全划分开,即很难找到合适的核函数使得训练样本在特征空间中线性可分。退一步说,即使找到了一个可以使训练集在特征空间中完全分开的核函数,也很难确定这个线性可分的结果是不是由于过拟合导致的。解决该问题的办法是在一定程度上运行SVM在一些样本上出错,为此引入了“软间隔”(soft margin)的概念,如图4所示:

ellipse
图4

具体来说,硬间隔支持向量机要求所有的样本均被最佳超平面正确划分,而软间隔支持向量机允许某些样本点不满足间隔大于等于1的条件 yi(w⃗ xi+b)1yi(w→xi→+b)≥1 ,当然在最大化间隔的时候也要限制不满足间隔大于等于1的样本的个数使之尽可能的少。于是我们引入一个惩罚系数 C>0C>0 ,并对每个样本点 (xi,yi)(xi→,yi) 引入一个松弛变量(slack variables) ξ0ξ≥0 ,此时可将式(10)改写为
minw⃗ ,b(12||w⃗ ||2+Cni=1ξi)s.t.yi(w⃗ Txi+b)1ξi,i=1,2,,nξi0(19)(19){minw→,b(12||w→||2+C∑i=1nξi)s.t.yi(w→Txi→+b)≥1−ξi,i=1,2,…,nξi≥0
上式中约束条件改为 yi(w⃗ xi+b)1ξiyi(w→xi→+b)≥1−ξi ,表示间隔加上松弛变量大于等于1;优化目标改为 minw⃗ ,b(12||w⃗ ||2+Cni=1ξi)minw→,b(12||w→||2+C∑i=1nξi) 表示对每个松弛变量都要有一个代价损失 CξiCξi CC 越大对误分类的惩罚越大、 CC 越小对误分类的惩罚越小。 
式(19)是软间隔支持向量机的原始问题。可以证明 w⃗ w→ 的解是唯一的, bb 的解不是唯一的, bb 的解是在一个区间内。假设求解软间隔支持向量机间隔最大化问题得到的最佳超平面是 wx⃗ +b=0w∗→x→+b∗=0 ,对应的分类决策函数为
f(x⃗ )=sign(wx⃗ +b)(20)(20)f(x→)=sign(w∗→x→+b∗)
f(x⃗ )f(x→) 称为软间隔支持向量机。 
类似式(12)利用拉格朗日乘子法可得到上式的拉格朗日函数
L(w⃗ ,b,α⃗ ,ξ⃗ ,μ⃗ )=12||w⃗ ||2+Ci=1nξii=1nαi(yi(w⃗ Txi+b)1+ξi)i=1nμiξi(21)(21)L(w→,b,α→,ξ→,μ→)=12||w→||2+C∑i=1nξi−∑i=1nαi(yi(w→Txi→+b)−1+ξi)−∑i=1nμiξi
其中 αi0αi≥0 μi0μi≥0 是拉格朗日乘子。 
L(w⃗ ,b,α⃗ ,ξ⃗ ,μ⃗ )L(w→,b,α→,ξ→,μ→) 分别对 w⃗ w→ bb ξ⃗ ξ→ 求偏导并将偏导数为零可得:
w⃗ =ni=1αiyixini=1αiyi=0C=αi+μi(22)(22){w→=∑i=1nαiyixi→∑i=1nαiyi=0C=αi+μi
将式(22)带入式(21)便可得到式(19)的对偶问题: 
maxα⃗ ni=1αi12ni=1nj=1αiαjyiyjxiTxjs.t.ni=1αiyi=0,i=1,2,,n0αiC(23)(23){maxα→∑i=1nαi−12∑i=1n∑j=1nαiαjyiyjxi→Txj→s.t.∑i=1nαiyi=0,i=1,2,…,n0≤αi≤C
对比软间隔支持向量机的对偶问题和硬间隔支持向量机的对偶问题可发现二者的唯一差别就在于对偶变量的约束不同,软间隔支持向量机对对偶变量的约束是 0αiC0≤αi≤C ,硬间隔支持向量机对对偶变量的约束是 0αi0≤αi ,于是可采用和硬间隔支持向量机相同的解法求解式(23)。同理在引入核方法之后同样能得到与式(23)同样的支持向量展开式。 
类似式(16)对于软间隔支持向量机,KKT条件要求:
αi0,μi0yi(w⃗ x⃗ +b)1+ξi0αi(yi(w⃗ x⃗ +b)1+ξi)=0ξi0,μiξi=0(24)(24){αi≥0,μi≥0yi(w→x→+b)−1+ξi≥0αi(yi(w→x→+b)−1+ξi)=0ξi≥0,μiξi=0
同硬间隔支持向量机类似,对任意训练样本 (xi,yi)(xi→,yi) ,总有 αi=0αi=0 yi(w⃗ x⃗ +b1+ξi)yi(w→x→+b−1+ξi) ,若 αi=0αi=0 ,则该样本不会对最佳决策面有任何影响;若 αi>0αi>0 则必有 yi(w⃗ x⃗ +b)=1ξiyi(w→x→+b)=1−ξi ,也就是说该样本是支持向量。由式(22)可知若 αi<Cαi<C μi>0μi>0 进而有 ξi=0ξi=0 ,即该样本处在最大间隔边界上;若 αi=Cαi=C μi=0μi=0 此时如果 xii1xii≤1 则该样本处于最大间隔内部,如果 ξi>1ξi>1 则该样本处于最大间隔外部即被分错了。由此也可看出,软间隔支持向量机的最终模型仅与支持向量有关。

4. 非线性支持向量机

现实任务中原始的样本空间DD中很可能并不存在一个能正确划分两类样本的超平面。例如图4中所示的问题就无法找到一个超平面将两类样本进行很好的划分。 
对于这样的问题可以通过将样本从原始空间映射到特征空间使得样本在映射后的特征空间里线性可分。例如对图5做特征映射z=x2+y2z=x2+y2可得到如图6所示的样本分布,这样就很好进行线性划分了。

ellipse
图5
ellipse
图6

ϕ(x⃗ )ϕ(x→) 表示将样本点 x⃗ x→ 映射后的特征向量,类似于线性可分支持向量机中的表示方法,在特征空间中划分超平面所对应的模型可表示为
f(x⃗ )=w⃗ Tx+b(25)(25)f(x→)=w→Tx+b
其中 w⃗ w→ bb 是待求解的模型参数。类似式(10),有
{minw⃗ ,b12||w⃗ ||2s.t.yi(w⃗ Tϕ(x⃗ )+b)1,i=1,2,,n(26)(26){minw→,b12||w→||2s.t.yi(w→Tϕ(x→)+b)≥1,i=1,2,…,n
其拉格朗日对偶问题是
maxαni=1αi12ni=1nj=1αiαjyiyjϕ(xiT)ϕ(xj)s.t.αi0,i=1,2,,nni=1αiyi=0(27)(27){maxα∑i=1nαi−12∑i=1n∑j=1nαiαjyiyjϕ(xi→T)ϕ(xj→)s.t.αi≥0,i=1,2,…,n∑i=1nαiyi=0
求解(27)需要计算 ϕ(xiT)ϕ(xj)ϕ(xi→T)ϕ(xj→) ,即样本映射到特征空间之后的内积,由于特征空间可能维度很高,甚至可能是无穷维,因此直接计算 ϕ(xiT)ϕ(xj)ϕ(xi→T)ϕ(xj→) 通常是很困难的,在上文中我们提到其实我们根本不关心单个样本的表现,只关心特征空间中样本间两两的乘积,因此我们没有必要把原始空间的样本一个个地映射到特征空间中,只需要想法办求解出样本对应到特征空间中样本间两两的乘积即可。为了解决该问题可设想存在核函数:
κ(xi,xj)=ϕ(xiT)ϕ(xj)(28)(28)κ(xi→,xj→)=ϕ(xi→T)ϕ(xj→)
也就是说 xixi→ xjxj→ 在特征空间的内积等于它们在原始空间中通过函数 κ(,)κ(⋅,⋅) 计算的结果,这给求解带来很大的方便。于是式(27)可写为:
maxαni=1αi12ni=1nj=1αiαjyiyjκ(xi,xj)s.t.αi0,i=1,2,,nni=1αiyi=0(29)(29){maxα∑i=1nαi−12∑i=1n∑j=1nαiαjyiyjκ(xi→,xj→)s.t.αi≥0,i=1,2,…,n∑i=1nαiyi=0
同样的我们只关心在高维空间中样本之间两两点乘的结果而不关心样本是如何变换到高维空间中去的。求解后即可得到
f(x⃗ )=w⃗ Tϕ(x⃗ )+b=i=1nαiyiϕ(x⃗ )Tϕ(x⃗ )+b=i=1nαiyiκ(xi,xj)+b(30)(30)f(x→)=w→Tϕ(x→)+b=∑i=1nαiyiϕ(x→)Tϕ(x→)+b=∑i=1nαiyiκ(xi→,xj→)+b
剩余的问题同样是求解 αiαi ,然后求解 w⃗ w→ bb 即可得到最佳超平面。

支持向量回归

支持向量机不仅可以用来解决分类问题还可以用来解决回归问题,称为支持向量回归(Support Vector Regression,SVR)。 
对于样本(x⃗ ,y)(x→,y)通常根据模型的输出f(x⃗ )f(x→)与真实值(即groundtruth)yiyi之间的差别来计算损失,当且仅当f(x⃗ )=yif(x→)=yi时损失才为零。SVR的基本思路是允许预测值f(x⃗ )f(x→)yiyi之间最多有εε的偏差,当|f(x⃗ )yi|ε|f(x→)−yi|≤ε时认为预测正确不计算损失,仅当|f(x⃗ )yi|>ε|f(x→)−yi|>ε时才计算损失。SVR问题可描述为:

minw⃗ ,b(12||w⃗ ||2+Ci=1nLε(f(x⃗ )yi))(31)(31)minw→,b(12||w→||2+C∑i=1nLε(f(x→)−yi))
其中, C0C≥0 为惩罚项, Lε 为损失函数,定义为:
Lε(z)={0,|z|ε|z|ξ,otherwise(32)(32)Lε(z)={0,|z|≤ε|z|−ξ,otherwise
进一步地引入松弛变量 ξiξi ξ^iξ^i ,则新的最优化问题为:
minw⃗ ,b,ξ,ξ^i(12||w⃗ ||2+Cni=1(ξi+ξ^i))s.t.f(xi)yiε+ξi,i=1,2,,nyif(x⃗ )ε+ξ^iξi0,ξ^i0(33)(33){minw→,b,ξ,ξ^i(12||w→||2+C∑i=1n(ξi+ξ^i))s.t.f(xi→)−yi≤ε+ξi,i=1,2,…,nyi−f(x→)≤ε+ξ^iξi≥0,ξ^i≥0
这就是SVR的原始问题。类似地引入拉格朗日乘子 μi0μi≥0 μ^i0μ^i≥0 αi0αi≥0 α^i0α^i≥0 ,则对应的拉格朗日函数为:
L(w⃗ ,b,α⃗ ,α^⃗ ,ξ⃗ ,ξ^⃗ ,μ⃗ ,μ^⃗ )=12||w⃗ ||2+Ci=1n(ξ+ξ^)i=1nμiξii=1nμ^iξ^i+i=1nαi(f(xi)yiεξ)+i=1nα^i(yif(xi)εξ^i)(34)(34)L(w→,b,α→,α^→,ξ→,ξ^→,μ→,μ^→)=12||w→||2+C∑i=1n(ξ+ξ^)−∑i=1nμiξi−∑i=1nμ^iξ^i+∑i=1nαi(f(xi→)−yi−ε−ξ)+∑i=1nα^i(yi−f(xi→)−ε−ξ^i)
L(w⃗ ,b,α⃗ ,α^⃗ ,ξ⃗ ,ξ^⃗ ,μ⃗ ,μ^⃗ )L(w→,b,α→,α^→,ξ→,ξ^→,μ→,μ^→) w⃗ ,b,ξ⃗ ,ξ^⃗ w→,b,ξ→,ξ^→ 的偏导数为零可得:
w⃗ =ni=1()xini=1(α^iαi)=0C=αi+μiC=α^i+μ^i(35)(35){w→=∑i=1n()xi→∑i=1n(α^i−αi)=0C=αi+μiC=α^i+μ^i
将式(35)代入式(34)即可得到SVR的对偶问题:
{maxα,α^ni=1(yi(α^iαi)ε(α^i+αi)12ni=1nj=1(α^iαi)(α^jαj)xiTxj)s.t.ni=1(α^iαi)=00αi,α^iC(36)(36){maxα,α^∑i=1n(yi(α^i−αi)−ε(α^i+αi)−12∑i=1n∑j=1n(α^i−αi)(α^j−αj)xi→Txj→)s.t.∑i=1n(α^i−αi)=00≤αi,α^i≤C
其KKT条件为:
αi(f(xi)yiεξi)=0α^i(f(xi)yiεξ^i)=0αiα^i=0,ξiξ^i=0(Cαi)ξi=0,(Cα^i)ξ^i=0(37)(37){αi(f(xi→)−yi−ε−ξi)=0α^i(f(xi→)−yi−ε−ξ^i)=0αiα^i=0,ξiξ^i=0(C−αi)ξi=0,(C−α^i)ξ^i=0
SVR的解形如:
f(x⃗ )=i=1n(α^iαi)xiTx⃗ +b(38)(38)f(x→)=∑i=1n(α^i−αi)xi→Tx→+b
进一步地如果引入核函数则SVR可表示为:
f(x⃗ )=i=1n(α^iαi)κ(xi,x⃗ )+b(39)(39)f(x→)=∑i=1n(α^i−αi)κ(xi→,x→)+b
其中 κ(xi,x⃗ )=ϕ(xi)Tϕ(x⃗ )κ(xi→,x→)=ϕ(xi→)Tϕ(x→) 为核函数。

常用核函数

名称表达式参数
线性核κ(xi,xj)=xiTxjκ(xi→,xj→)=xi→Txj→ 
多项式核κ(xi,xj)=(xiTxj)nκ(xi→,xj→)=(xi→Txj→)nn1n≥1为多项式的次数
高斯核(RBF)κ(xi,xj)=exp(xixj22σ2)κ(xi→,xj→)=exp(−‖xi→−xj→‖22σ2)σ>0σ>0为高斯核的带宽
拉普拉斯核κ(xi,xj)=exp(xixjσ)κ(xi→,xj→)=exp(−‖xi−xj‖σ)σσ>0
Sigmoid核κ(xi,xj)=tanh(βxiTxj+θ)κ(xi→,xj→)=tanh(βxi→Txj→+θ)thah为双曲正切函数

5. SVM的优缺点

优点: 
SVM在中小量样本规模的时候容易得到数据和特征之间的非线性关系,可以避免使用神经网络结构选择和局部极小值问题,可解释性强,可以解决高维问题。 
缺点: 
SVM对缺失数据敏感,对非线性问题没有通用的解决方案,核函数的正确选择不容易,计算复杂度高,主流的算法可以达到O(n2)O(n2)的复杂度,这对大规模的数据是吃不消的。

6. 参考文献

周志华. 机器学习 [D]. 清华大学出版社,2016. 
华校专、王正林. Python大战机器学习 [D]. 电子工业出版社,2017. 
Peter Flach著、段菲译. 机器学习 [D]. 人民邮电出版社,2016. 
Understanding Support Vector Machine algorithm from examples (along with code) 
KKT条件介绍

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/458225.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

LoadRunner常用术语

1.场景 2.负载发生器 3.虚拟用户 4.虚拟用户脚本 5.事务 6.思考时间 7.集合点 8.事务响应时间 转载于:https://www.cnblogs.com/Andy-Lv/p/5263707.html

跟我学Shiro目录贴

2019独角兽企业重金招聘Python工程师标准>>> http://jinnianshilongnian.iteye.com/blog/2018398 转载于:https://my.oschina.net/zhanggongming/blog/714844

【WinForm-无边框窗体】实现Panel移动窗体,没有边框的窗体

没有边框的窗体怎么移动&#xff1f;其实方法有很多&#xff0c;下面介绍一种用控件来移动窗体&#xff0c;Panel或PictureBox都可。主要设置控件的MouseDowm和MouseLeave事件。 第一步&#xff1a;窗体设计 窗体最上面是一个panel1 窗体最下面是一个Panel3&#xff0c;只显示最…

\Grokking Algorithms\简介与作者采访

\关键点\这本书目的是告诉读者解决问题的新方法。 \这本书试图通过插图来让大家更容易掌握主题&#xff0c;避免部分读者觉得太费解。 \这本书不仅适合没有接触过算法的人&#xff0c;也适合刚从计算机专业毕业的学生。 \这本书提供了非常多的例子和简单练习。 \这并不是一本参…

ZedGraph使用经验

开源的统计图控件中基本常用的是OpenFlashChar和ZedGraph&#xff0c;今天就先来讲讲ZedGraph的使用。 ZedGraph资源 ZedGraph来源&#xff1a;http://sourceforge.net/project/showfiles.php?group_id114675ZedGraph相关例子资源&#xff1a;http://zedgraph.org/wiki/index.…

机器学习实战之SVM

一引言&#xff1a;支持向量机这部分确实很多&#xff0c;想要真正的去理解它&#xff0c;不仅仅知道理论&#xff0c;还要进行相关的代码编写和测试&#xff0c;二者想和结合&#xff0c;才能更好的帮助我们理解SVM这一非常优秀的分类算法支持向量机是一种二类分类算法&#x…

mysql 时间类型 datetime,timestamp

2019独角兽企业重金招聘Python工程师标准>>> CURRENT_TIMESTAMP 的 timestamp 意思是 根据 mysql 的当前时间&#xff0c;使用mysql 的当前时间。 参考地址&#xff1a;http://blog.sina.com.cn/s/blog_67cc6e7d0100nrwk.html datetime 和 timestamp 都是保存时间格…

机器学习中的交叉验证(cross-validation)

from:https://blog.csdn.net/lhx878619717/article/details/49079785 交叉验证&#xff08;Cross validation)&#xff0c;交叉验证用于防止模型过于复杂而引起的过拟合. 有时亦称循环估计&#xff0c; 是一种统计学上将数据样本切割成较小子集的实用方法。于是可以先在一个子…

轻松谈话:谈话的力量

如何与她人搭话&#xff1f;&#xff1f; 第一&#xff1a;给别人一个好印象 1、环境&#xff1a;通过共同环境来激发兴趣&#xff0c;比如&#xff1a;在球场&#xff0c;你觉得谁会赢。 2、对方:多数人喜欢谈论自己。 3、自己&#xff1a;主动表明意图&#xff0c;要真诚。 第…

libSVM介绍(二)

from&#xff1a;https://blog.csdn.net/carson2005/article/details/6539192 鉴于libSVM中的readme文件有点长&#xff0c;而且&#xff0c;都是采用英文书写&#xff0c;这里&#xff0c;我把其中重要的内容提炼出来&#xff0c;并给出相应的例子来说明其用法&#xff0c;大家…

四则运算题2

本题新学知识点&#xff1a; itoa函数 char *itoa( int value, char *string,int radix);[1]原型说明&#xff1a;value&#xff1a;欲转换的数据。string&#xff1a;目标字符串的地址。radix&#xff1a;转换后的进制数&#xff0c;可以是10进制、16进制等。程序实例:#includ…

c++调用Libsvm

libSVM中的readme中文版&#xff1a;http://blog.csdn.net/carson2005/article/details/6539192 LibSVM的package中的Readme文件中介绍了怎样具体的使用LibSvm&#xff0c;可以在Dos下以命令形式进行调用&#xff0c;也可以用程序包中提供的GUI程序Svm-toy进行图形化的操作。sv…

STL -set

转载自&#xff1a;http://blog.csdn.net/LYHVOYAGE/article/details/22989659 set集合容器实现了红黑树&#xff08;Red-Black Tree&#xff09;的平衡二叉检索树的的数据结构&#xff0c; 在插入元素时&#xff0c;它会自动调整二叉树的排列&#xff0c;把该元素放到适当的位…

【机器学习实战之一】:C++实现K-近邻算法KNN

本文不对KNN算法做过多的理论上的解释&#xff0c;主要是针对问题&#xff0c;进行算法的设计和代码的注解。 KNN算法&#xff1a; 优点&#xff1a;精度高、对异常值不敏感、无数据输入假定。 缺点&#xff1a;计算复杂度高、空间复杂度高。 适用数据范围&#xff1a;数值…

javascript设计模式-继承

javascript继承分为两种&#xff1a;类式继承&#xff08;原型链、extend函数&#xff09;、原型式继承&#xff08;对继承而来的成员的读和写的不对等性、clone函数&#xff09;。 类式继承-->prototype继承&#xff1a; 1 function Person(name){2 this.name …

GIS基础软件及操作(二)

原文 GIS基础软件及操作(二) 练习二、管理地理空间数据库 1.利用ArcCatalog 管理地理空间数据库 2.在ArcMap中编辑属性数据 第1步 启动 ArcCatalog 打开一个地理数据库 当 ArcCatalog打开后&#xff0c;点击, 按钮&#xff08;连接到文件夹&#xff09;. 建立到包含练习数据的…

libSVM分类小例C++

from&#xff1a;http://www.doczj.com/list_31/ 使用libSVM求解分类问题的C小例 1.libSVM简介 训练模型的结构体 struct svm_problem//储存参加计算的所有样本 { int l; //记录样本总数 double *y; //指向样本类别的组数 //prob.y new double[prob.l]; struct svm_node …

qunit 前端脚本测试用例

首先引用qunit 测试框架文件 <link rel"stylesheet" href"qunit-1.22.0.css"> <script src"qunit-1.22.0.js"></script> <div id"qunit"></div> <div id"qunit-fixture"></div>…

非常规文件名删除

生活中我们偶尔会遇到这样一件事&#xff1a;走在路上&#xff0c;突然感觉鞋底有东西&#xff0c;抬脚一看&#xff0c;是个泡泡糖。拿不掉&#xff0c;走路还一粘一粘的。要多难受有多难受&#xff01;同样在linux中也有这么一种文件名。看着不舒服&#xff0c;却删不掉。今天…

Machine Learning(Stanford)| 斯坦福大学机(吴恩达)器学习笔记【汇总】

from&#xff1a;https://blog.csdn.net/m399498400/article/details/52556168 定义本课程常用符号 训练数据&#xff1a;机器用来学习的数据 测试数据&#xff1a;用来考察机器学习效果的数据&#xff0c;相当于考试。 m 训练样本的数量&#xff08;训练集的个数) x 输入的…