机器学习算法—支持向量机(support vector machine,SVM)
算法描述
线性SVM
给定训练样本集
D={(x1,y1),(x2,y2),⋅⋅⋅,(xm,ym)},y∈{−1,+1},分类学习的基本思想就是基于训练集D在样本空间寻找一个划分超平面,将不同类别的样本区别开。因此重点就是如何寻找最优的划分超平面。
在样本空间中,划分超平面可通过如下线性方程来描述:
ωTx+b=0样本空间中任一点
x到超平面
(ω,b)的距离
γ可写成:
γ=∣∣ω∣∣∣ωTx+b∣假设超平面
(ω,b)能够对样本
(xi,yi)正确分类,那么有
{ωTxi+b>0,yi=+1ωTxi+b<0,yi=−1为了增强分类器的鲁棒性,我们令
{ωTxi+b≥+1,yi=+1ωTxi+b≤−1,yi=−1使得上式等号成立的样例称之为“支持向量(support vector)”。
两个异类支持向量到超平面的距离之和称为间隔(margin)
γ:
γ=∣∣ω∣∣2
间隔最大化
支持向量机的思想思想就是寻找一超平面,使得间隔最大化。因此可获得支持向量机的优化目标为:
ω,bmaxs.t.∣∣ω∣∣2yi(ωTxi+b)≥1i=1,2,...m.引入二范数,上述优化问题等价于
ω,bmins.t.21∣∣ω∣∣2yi(ωTxi+b)≥1i=1,2,...m.对偶SVM
上式是一个有约束的二次规划问题,引入拉格朗日乘子
α,当
α≥0时,可构造拉格朗日函数
L(ω,b,α):
L(ω,b,α)=21∣∣ω∣∣2+i=1∑mαi(1−yi(ωTxi+b))分别对
ω,b,α求导等于0可得: