文章目录
上两篇文章已经总结了超平面、间隔最大化、拉格朗日乘数法、拉格朗日对偶性及间隔最大化最优值求解等svm的预备知识,本次将继续归纳总结SVM的数学推理和核函数部分。首先,大概介绍一下SVM:
-
支持向量机 : 是一种二分类模型,它的基本模型是定义在特征空间上的间隔最大的线性分类器,间隔最大使它有别于感知机。
-
核技巧: SVM还包括核技巧,这使它成为实质上的非线性分类器。
-
间隔最大化: SVM的学习策略是间隔最大化,可形式化为一个求解凸二次规划的问题,也等价于正则化的合页损失函数的最小化问题。SVM的学习算法是求解凸二次规划的最优化算法。
-
线性可分SVM: 当训练数据线性可分时,通过硬间隔最大化,学习一个线性的分类器,即线性可分SVM,又称硬间隔SVM。
-
线性SVM: 当训练数据近似线性可分时,通过软间隔最大化,也学习一个线性分类器,即线性SVM,又称软间隔SVM。
-
非线性SVM: 当训练数据线性不可分时,通过使用核技巧及软间隔最大化,学习非线性SVM。
-
核函数: 表示将输入从输入空间映射到特征空间得到特征向量之间的内积。通过使用核函数可以学习非线性SVM,等价于隐式地在高维特征空间中学习线性SVM。这样的方法称为核方法,核方法是比SVM更为一般的机器学习方法。
-
SVM属于判别模型,可分为线性分类模型、非线性分类模型。
-
经过演进,现在也可以支持多元分类,同时经过扩展,也能应用于回归问题。
1. 线性可分支持向量机
- 线性可分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的算法过程:
-
输入是线性可分的m个样本 ( x 1 , y 1 ) , ( x 2 , y 2 ) , . . . , ( x m , y m ) , (x_1,y_1),(x_2,y_2),...,(x_m,y_m), (x1,y1),(x2,y2),...,(xm,ym),其中 x x x为n维特征向量。 y y y为二元输出,值为1,或者-1.
-
输出是分离超平面的参数 w ∗ w^∗ w∗ 和 b ∗ b^∗ b∗ 和分类决策函数。
-
算法过程如下:
线性可分SVM的学习方法对于非线性的数据集是没有办法使用的, 有时候不能线性可分的原因是线性数据集里面多了少量的异常点,由于这些异常点导致了数据集不能线性可分, 下一节的线性SVM的软间隔最大化解决此问题。
2. 线性支持向量机
有时候本来数据的确是可分的,也就是说可以用 线性分类SVM的学习方法来求解,但是却因为混入了异常点,导致不能线性可分。通常情况是,训练数据中有一些特异点(outlier)。将这些特异点除去后,剩下大部分的样本点组成的集合是线性可分的。如下图:
2.1 软间隔最大化
-
软间隔: 线性可分SVM的学习方法对线性不可分数据是不适用的,因为上述方法中的不等式约束并不能都成立。为了将其扩展到线性不可分问题,需要修改硬间隔最大化,使其称为软间隔最大化。
-
松弛变量: 线性不可分意味着某些样本点 ( x i , y i ) (x_i,y_i) (xi,yi)不能满足函数间隔大于等于1的约束条件。为了解决这个问题,可以对每个样本点 ( x i , y i ) (x_i,y_i) (xi,yi)引入一个松弛变量 ξ i ⩾ 0 ξ_i⩾0 ξi⩾0,使函数间隔加上松弛变量大于等于1。这样,约束条件变成:
对比硬间隔最大化,可以看到我们对样本到超平面的函数距离的要求放松了,之前是一定要大于等于1,现在只需要加上一个大于等于0的松弛变量能大于等于1就可以了。当然,松弛变量不能白加,这是有成本的,每一个松弛变量 ξ i ξ_i ξi, 对应了一个代价 ξ i ξ_i ξi,目标函数变成:
这里 C > 0 C>0 C>0称为惩罚参数,一般由应用问题决定,C值大时对误分类的惩罚增大,C值小时对误分类的惩罚减小。
最小化目标函数包含两层含义:使 1 2 ∣ ∣ w ∣ ∣ 2 \frac{1}{2}||w||^2 21∣∣w∣∣2尽量小即间隔尽量大,同时使误分类点的个数尽量小,C是调和二者的系数。 -
学习问题: 问题变成如下凸二次规划问题:
可以证明 w w w的解是唯一的,但b的解可能不唯一,而是存在于一个区间。
设问题的解是 w ∗ , b ∗ w^∗,b^∗ w∗,b∗,于是可以得到分离超平面 w ∗ ⋅ x + b ∗ = 0 w^∗⋅x+b^∗=0 w∗⋅x+b∗=0 及分类决策函数 f ( x ) = s i g n ( w ∗ ⋅ x + b ∗ ) f(x)=sign(w^∗⋅x+b^∗) f(x)=sign(w∗⋅x+b∗) 。称这样的模型为训练样本线性不可分时的线性支持向量机,简称线性SVM。显然线性SVM包含线性可分SVM。由于现实中训练数据集往往是线性不可分的,线性SVM具有更广的适用性。
2.2 软间隔最大化目标函数的求解
- 原始问题的拉格朗日函数是:
- 对偶问题是拉格朗日函数的极大极小问题,先求极小:
计算过程:
-
再对 m i n w , b , ξ L ( w , b , ξ , α , μ ) min_{w,b,ξ}L(w,b,ξ,α,μ) minw,b,ξL(w,b,ξ,α,μ)求 α α α的极大,即得对偶问题:
对于 C − α i − μ i = 0 , α i ≥ 0 , μ i ≥ 0 C−α_i−μ_i=0,α_i≥0,μ_i≥0 C−αi−μi=0,αi≥0,μi≥0这3个式子,我们可以消去 μ i μ_i μi,只留下 α i α_i αi,也就是说 0 ≤ α i ≤ C 0≤α_i≤C 0≤αi≤C。 同时将优化目标函数变号,求极小值,如下:
这就是软间隔最大化时的线性可分SVM的优化目标形式,和上一篇的硬间隔最大化的线性可分SVM相比,我们仅仅是多了一个约束条件 0 ≤ α i ≤ C 0≤α_i≤C 0≤αi≤C。我们依然可以通过SMO算法来求上式极小化时对应的α向量就可以求出 w ∗ w^* w∗和 b ∗ b^* b∗了。 -
设 α ∗ = ( α ∗ 1 , α ∗ 2 , . . . , α ∗ N ) T α^∗=(α^∗1,α^∗2,...,α^∗N)^T α∗=(α∗1,α∗2,...,α∗N)T是对偶问的一个解,若存在 α ∗ α^∗ α∗的一个分量 α j ∗ α^∗_j αj∗, 0 < α j ∗ < C 0<α^∗_j<C 0<αj∗<C,则原始问题的解可按下式求得:
-
下面阐述得到以上两式的计算过程,由KKT条件得:
若存在 α j ∗ , 0 < α j ∗ < C , 则 y j ( w ∗ ⋅ x j + b ∗ ) − 1 = 0 α^∗_j,0<α^∗_j<C,则y_j(w^∗⋅x_j+b^∗)−1=0 αj∗,0<αj∗<C,则yj(w∗⋅xj+b∗)−1=0,由此得式: b ∗ b^∗ b∗。 -
分离超平面:由此,分离超平面、分类决策函数可以写成:
2.3 软间隔最大化时的支持向量
在硬间隔最大化时,支持向量比较简单,就是满足 y i ( w T x i + b ) − 1 = 0 y_i(w^Tx_i+b)−1=0 yi(wTxi+b)−1=0就可以了。根据KKT条件中的对偶互补条件 α i ∗ ( y i ( w T x i + b ) − 1 ) = 0 α^∗_i(y_i(w^Tx_i+b)−1)=0 αi∗(yi(wTxi+b)−1)=0,如果 α i ∗ > 0 α^∗_i>0 αi∗>0则有 y i ( w T x i + b ) = 1 y_i(w^Tx_i+b)=1 yi(wTxi+b)=1 即点在支持向量上,否则如果 α i ∗ = 0 α^∗_i=0 αi∗=0则有 y i ( w T x i + b ) ≥ 1 y_i(w^Tx_i+b)≥1 yi(wTxi+b)≥1,即样本在支持向量上或者已经被正确分类。
在软间隔最大化时,则稍微复杂一些,因为我们对每个样本 ( x i , y i ) (x_i,y_i) (xi,yi