SVM,全称是 support vector machine,中文名叫支持向量机。SVM 是一个面向数据的分类算法,它的目标是为确定一个分类超平面,从而将不同的数据分隔开。
如上图所示,
w⃗
为分割线(红线)的法向量,对平面上的某个样本点(向量
u⃗
),如果满足:
w⃗ ⋅u⃗ ≥c时,则该样本属于正样本.
即:w⃗ ⋅u⃗ +b≥0时,则该样本属于正样本.
最大间隔假设:
w⃗ ⋅x+→+b≥1,w⃗ ⋅x−→+b≤−1
之所以为1,是为了数学上的方便,实际上可以为任何值,可以伸缩法向量
w⃗
的长度而使其为1.
对与每个样本点的
yi
值,有
yi=+1/−1
.
则有:
当yi>0时,yi(w⃗ ⋅x+→+b)≥1,当yi<0时,yi(w⃗ ⋅x−→+b)≥1
⟹yi(w⃗ ⋅x⃗ +b)≥1
对街边(图中红色虚线)点的要求:
yi(w⃗ ⋅x⃗ +b)=1
.
“街宽”(两条红虚线的宽度):
WIDTH=(x+→−x−→)⋅w⃗ ||w⃗ ||=x+→⋅w⃗ ||w⃗ ||−x−→⋅w⃗ ||w⃗ ||=1−b||w⃗ ||−−1−b||w⃗ ||=2||w⃗ ||
欲找到具有”最大间隔”的划分超平面,也就是要找到能满足
yi(w⃗ ⋅x⃗ +b)≥1
中约束的参数 w 和 b,使得
2||w||
最大,显然,为了最大化间隔,仅需最大化
||w||−1
,这等价于最小化
||w||2
,于是,可得到:
min12||w2||,求满足条件的w,b,使得yi(w⃗ xi+b)≥1,i=1,2,...,m
这就是支持向量机(SVM)的基本型。
SVM 这个东西本身并不好懂,要深入学习和研究下去需花费不少时间和精力,二者这个东西也不好讲清楚。关于 SVM 更深入的理论和推导,会在后续博文中陆续给出,本篇博客不作详细说明。
这里再给出两个概念:硬间隔与软间隔
如上述所说的,所有的样本都必须划分正确,这成为”硬间隔“,而软间隔则是允许某些样本不满足约束
yi(w⃗ ⋅xi+b)≥1
当然,在最大化间隔的同时,不满足约束的样本应尽可能少。
支持向量机学习方法包括构建由简至繁的模型:线性可分支持向量机、线性支持向量机及非线性支持向量机。当训练数据线性可分时,通过硬间隔最大化,学习一个线性的分类器,即线性可分支持向量机,又称为硬间隔支持向量机;当训练数据近似线性可分时,通过软间隔最大化,也学习一个线性的分类器,即线性支持向量机,又称为软间隔支持向量机;当训练数据线性不可分时,通过使用核技巧及软间隔最大化,学习非线性支持向量机。