一、原理讲解
1、支持向量机最简单的情况是线性可分支持向量机,或硬间隔支持向量机。构建它的条件是训练数据线性可分,其学习策略是最大间隔法。可以表示为凸二次规划问题,其原始最优化问题为
w,bmin21∥w∥2s.t.yi(w⋅xi+b)−1⩾0,i=1,2,⋯,N
求得最优化问题的解为w∗,b∗,得到线性可分支持向量机,分离超平面是
w∗⋅x+b∗=0
最大间隔法中,函数间隔与几何间隔是重要的概念。
线性可分支持向量机的最优解存在且唯一。位于间隔边界上的实例点为支持向量。最优分离超平面由支持向量完全决定。 二次规划问题的对偶问题是min21i=1∑Nj=1∑Nαiαjyiyj(xi⋅xj)−i=1∑Nαi
s.t.i=1∑Nαiyi=0αi⩾0,i=1,2,⋯,N
通常,通过求解对偶问题学习线性可分支持向量机,即首先求解对偶问题的最优值
a∗,然后求最优值w∗和b∗,得出分离超平面和分类决策函数。
2、现实中训练数据是线性可分的情形较少,训练数据往往是近似线性可分的,这时使用线性支持向量机,或软间隔支持向量机。线性支持向量机是最基本的支持向量机。
对于噪声或例外,通过引入松弛变量ξi,使其“可分”,得到线性支持向量机学习的凸二次规划问题,其原始最优化问题是
w,b,ξmin21∥w∥2+Ci=1∑Nξis.t.yi(w⋅xi+b)⩾1−ξi,i=1,2,⋯,Nξi⩾0,i=1,2,⋯,N
求解原始最优化问题的解w∗和b∗,得到线性支持向量机,其分离超平面为
w∗⋅x+b∗=0
分类决策函数为
f(x)=sign(w∗⋅x+b∗)
线性可分支持向量机的解w∗唯一但b∗不唯一对偶问题是
αmin21i=1∑Nj=1∑Nαiαjyiyj(xi⋅xj)−i=1∑Nαis.t.i=1∑Nαiyi=00⩽αi⩽C,i=1,2,⋯,N
线性支持向量机的对偶学习算法,首先求解对偶问题得到最优解α∗,然后求原始问题最优解w∗和b∗,得出分离超平面和分类决策函数。
对偶问题的解α∗中满KaTeX parse error: Expected 'EOF', got '&' at position 15: \alpha_{i}^{*}&̲gt;0的实例点xi称为支持向量。支持向量可在间隔边界上,也可在间隔边界与分离超平面之间,或者在分离超平面误分一侧,最优分离超平面由支持向量完全决定。
线性支持向量机学习等价于最小化二阶范数正则化的合页函数
i=1∑N[1−yi(w⋅xi+b)]++λ∥w∥2
3.非线性支持向量机
对于输入空间中的非线性分类问题,可以通过非线性变换将它转化为某个高维特征空间中的线性分类问题,在高维特征空间中学习线性支持向量机。由于在线性支持向量机学习的对偶问题里,目标函数和分类决策函数都只涉及实例与实例之间的内积,所以不需要显式地指定非线性变换,而是用核函数来替换当中的内积。核函数表示,通过一个非线性转换后的两个实例间的内积。具体地,K(x,z)是一个核函数,或正定核,意味着存在一个从输入空间x到特征空间的映射X→H,对任意X,有
K(x,z)=ϕ(x)⋅ϕ(z)
对称函数K(x,z)为正定核的充要条件如下:对任意xi∈X,i=1,2,…,m,任意正整数m,对称函数K(x,z)对应的Gram矩阵是半正定的。
所以,在线性支持向量机学习的对偶问题中,用核函数K(x,z)替代内积,求解得到的就是非线性支持向量机
f(x)=sign(i=1∑Nαi∗yiK(x,xi)+b∗)
函数间隔:label(wTx+b) or yi(wTx+b)
几何间隔:r=∣∣w∣∣2label(wTx+b),当数据被正确分类时,几何间隔就是点到超平面的距离
为了求几何间隔最大,SVM基本问题可以转化为求解:(∣∣w∣∣r∗为几何间隔,(r∗为函数间隔)
max ∣∣w∣∣r∗(subject to) yi(wTxi+b)≥r∗, i=1,2,..,m
分类点几何间隔最大,同时被正确分类。但这个方程并非凸函数求解,所以要先①将方程转化为凸函数,②用拉格朗日乘子法和KKT条件求解对偶问题。
①转化为凸函数:
先令r∗=1,方便计算(参照衡量,不影响评价结果)
max ∣∣w∣∣1s.t. yi(wTxi+b)≥1, i=1,2,..,m
再将max ∣∣w∣∣1转化成min 21∣∣w∣∣2求解凸函数,1/2是为了求导之后方便计算。
min 21∣∣w∣∣2s.t. yi(wTxi+b)≥1, i=1,2,..,m
②用拉格朗日乘子法和KKT条件求解最优值:
min 21∣∣w∣∣2s.t. −yi(wTxi+b)+1≤0, i=1,2,..,m
整合成:
L(w,b,α)=21∣∣w∣∣2+i=1∑mαi(−yi(wTxi+b)+1)
推导:min f(x)=minmax L(w,b,α)≥maxmin L(w,b,α)
根据KKT条件:
∂w∂L(w,b,α)=w−∑αiyixi=0, w=∑αiyixi∂b∂L(w,b,α)=∑αiyi=0
代入$ L(w, b, \alpha)$
min L(w,b,α)=21∣∣w∣∣2+∑i=1mαi(−yi(wTxi+b)+1)
=21wTw−∑i=1mαiyiwTxi−b∑i=1mαiyi+∑i=1mαi
=21wT∑αiyixi−∑i=1mαiyiwTxi+∑i=1mαi
=∑i=1mαi−21∑i=1mαiyiwTxi
=∑i=1mαi−21∑i,j=1mαiαjyiyj(xixj)
再把max问题转成min问题:
max ∑i=1mαi−21∑i,j=1mαiαjyiyj(xixj)=min21∑i,j=1mαiαjyiyj(xixj)−∑i=1mαi
s.t. ∑i=1mαiyi=0,
αi≥0,i=1,2,...,m
以上为SVM对偶问题的对偶形式
kernel
在低维空间计算获得高维空间的计算结果,也就是说计算结果满足高维(满足高维,才能说明高维下线性可分)。
soft margin & slack variable
引入松弛变量ξ≥0,对应数据点允许偏离的functional margin 的量。
目标函数:
min 21∣∣w∣∣2+C∑ξis.t. yi(wTxi+b)≥1−ξi
对偶问题:
max i=1∑mαi−21i,j=1∑mαiαjyiyj(xixj)=min21i,j=1∑mαiαjyiyj(xixj)−i=1∑mαis.t. C≥αi≥0,i=1,2,...,mi=1∑mαiyi=0,
Sequential Minimal Optimization
首先定义特征到结果的输出函数:u=wTx+b.
因为w=∑αiyixi
有u=∑yiαiK(xi,x)−b
KaTeX parse error: Expected 'EOF', got '&' at position 84: …i\alpha_jy_iy_j&̲lt;\phi(x_i)^T,…s.t. i=1∑mαiyi=0,αi≥0,i=1,2,...,m
二、在Unscrambler中的操作
讲了这么多,下面开始举个具体案例吧。有AcDiSol、DiCaP、Kollidon和MCC4类物质,一共66个样本,每个样本对应光谱数据如下:

现在,我们要用支持向量机(SVM)来对它们进行分类。
1、点击task-analyze-SVM,输入选择spectra,分类选择class

2、 Weight为每个变量的加权,可以选择归一化或不归一化

3、Validation为交叉验证选项

4、Options为参数设置,可以设置SVM方式、核函数拟合,核函数我们选择线性

5、最后我们看结果,发现分类效果准确率为100%
