SVM的原理及推导
我们直接用数学公式来描述我们要解决的问题。假设我有一个数据集
D,总共有m个样本
{xi,yi},i=1,...,n。其中。其中
xi∈Rd是维的向量,是二类分类问题的标签,是d维的向量,y是二类分类问题的标签,
yi∈{−1,+1}。我们首先假设我们的数据是完美的,即,在维度的平面上,我们的数据是线性可分的,那么我们就可以画一条直线。我们首先假设我们的数据是完美的,即,在维度d的平面上,我们的数据是线性可分的,那么我们就可以画一条直线
f(x)=wTx+b使得我们所有的不同类别的样本区分开来,即对于所有使得我们所有的不同类别的样本区分开来,即对于所有
yi=−1的样本的样本
i有
wTx+b≤0,反之对于所有,反之对于所有
yi=+1的样本有的样本有
wTx+b≥0。
但是,如果我们只是单纯的规定
wTx+b=0作为超平面来区分正负样本,这样的超平面有很多,任何一个超平面符合上述条件都可以作为解,而这对分类的泛化性并不友好。也就是说,当超平面实际上选取很差时,对于测试数据,一点微小的噪声就会导致它的错分。所以SVM定义了另外两个超平面(支持超平面 Supporting Hyperplane),都与
wTx+b=0平行,到超平面的距离(边际 Margin)分别为
d−和
d+,并且保持
d−=d+。我们将这两个超平面用公式表示:
wTx=b−σwTx=b+σ
我们注意到,如果将公式的左右两边同时乘以一个系数,公式仍然成立。而且这个公式存在着过参数化。因此SVM规定了这个
σ=1。那么边际大小
γ=d−+d+就等于:
γ=∥w∥2
至此我们已经决定了我们所要得到的优化目标,即找到一个超平面
wTx+b=0使得它存在两个与之平行、与之距离为
1并分布两侧的超平面,能够完美分开所有的训练数据,使得正样本在
wTx+b≥1,负样本
wTx+b≤−1。我们把问题写成凸优化问题的形式:(这里强调一点,源自于Convex Optimization那门课中,很多人把优化公式中的max和maximize,min和minimize混为一谈,实际上是不正确的,min/max返回的是一个值,即最小/大值,只有maximize/minimize代表着优化目标函数。)
maximizes.t. ∥w∥2 yi(wTx+b)−1≥0, i=1,...,m
由于
∥w∥2是个concave的函数,我们便可以通过倒数的方式转成convex的标准形式,这里加平方应该是要为了是让曲线保证平滑来保证处处可导(这里不是很确定,如果说的不对请大家指出谢谢),即:
minimizes.t. 21∥w∥2 yi(wTx+b)−1≥0, i=1,...,m
对于刚好落在支持超平面上的点,我们就将他们成为支持向量(Support Vector)。
这个问题,可以通过**拉格朗日法(Lagrangian)**转换成对偶问题求解。
首先,我们将约束条件乘以一个
λi加入到优化函数
f0(x)中。随后根据拉格朗日法求对偶问题的定义,我们可以得到:
L(w,b,λi)=infw,b21∥w∥2−i∑mλi[yi(wTx+b)−1]
我们仔细看
L这个公式,要求关于
w和
b的下界,实际上,对于
w来说,是一个二次型
wTw加上一个累加的Affine映射
∑imλiyiwTx,那么这些都是保持凸函数性质的运算。对于
b来说,是一个Affine映射。因此对于
w和
b而言,
L是一个凸函数,在求下界时,我们可以直接通过求导函数为0的点来计算Optimal(全局最优)。
那么我们分别对
w和
b求导并求等于0的点:
∂w∂L∂b∂L=w−i∑mλiyixi=i∑mλiyi=0=0
随后我们将求导得到的结果带回到
L中,得到:
L=21wTw+i∑mλi−i∑mλiyiwTxi−i∑mλiyib=21∥i∑mλiyixi∥2+i∑mλi−i∑mλiyi(i∑mλiyixi)Txi=i∑mλi−21(i∑mλiyixiT)(i∑mλiyixi)=i∑mλi−21i∑mj∑mλiλjyiyjxiTxj
此时,对偶问题就可以被描述为:
maximizis.t. i∑mλi−21i∑mj∑mλiλjyiyjxiTxj λi≥0, i=1,...,m
这个问题可以通过SMO算法去求解,这里就不详细赘述了。其实在整个Convex Optimization的课程中,也没有过于强调如何去解各种凸优化问题,主要还是在介绍如何将各种问题转成可解的凸优化形式。只要转成很好解的形式,就会有各种成熟的工具去进行求解。