SVM个人理解
综述
SVM是一种有监督式的在特征空间上进行的学习(带标签)。根据样本特征数据的特点,又可分为线性可分支持向量机,线性支持向量机以及非线性支持向量机。究其本质都是最小间隔最大化问题。其中,线性可分支持向量机是基础。总体的大致思路都是为了寻找一个超平面y=wx+b将样本特征进行二分类。
SVM实现多分类
如果想实现多分类有两种方法:一对多(one-versus-rest)和一对一(one-versus-one)。
在一对多方法中,训练时依次把k类样本中的某个类别归为一类,其它剩下的归为另一类,使用二分类的SVM训练一个二分类器,最后把得到的k个二分类器组成k分类器。对未知样本分类时,分别用这k个二分类器进行分类,将分类结果中出现最多的那个类别作为最终的分类结果。
而一对一方法中,训练时对于任意两类样本都会训练一个二分类器,最终得到k*(k-1)/2个二分类器,共同组成k分类器。对未知样本分类时,使用所有的k*(k-1)/2个分类器进行分类,将出现最多的那个类别作为该样本最终的分类结果。PCA/SVM实现人脸识别的代码中使用的LIBSVM函数其多分类就是根据一对一的方法实现的。
线性可分支持向量机(重要概念是硬间隔)
硬间隔:完全线性可分时,每类样本中最靠近超平面的样本特征点就是支持向量。而所有支持向量确定的间隔边界到超平面的距离也就是硬间隔。
原始问题:通过约束其到超平面距离最大且其他特征点到超平面的距离均大于支持向量到超平面的距离,就可以进行求解。
对偶问题:在实际求解过程中,采用一种对偶性质的算法(拉格朗日函数极大极小化),将原始问题转化为对偶问题进行求解,一方面可以简化计算,另一方面可以在非线性问题中自然的引入核函数。
线性支持向量机(重要概念是软间隔与惩罚因子)
为什么要叫软间隔?是因为对所有的样本点又引入了一个松弛变量。使得函数间隔加上该松弛变量后可以满足原始问题中的最小间隔最大化约束条件。由于松弛变量的值可以变化,所以硬间隔—>软间隔。在实际的约束条件中,对所有的松弛变量前加上了惩罚因子。惩罚因子越大对误分类的惩罚就越大。此时的最小化目标函数有两层含义:一是最小间隔最大化,二是误分类点的个数尽量小,惩罚因子就是调和这两个条件的系数。在线性支持向量机中,支持向量可以在间隔边界上,也可以在间隔边界与超平面之间或者在超平面误分另一侧。
非线性支持向量机(重点概念是核技巧)
基本想法是通过非线性变换将输入空间映射到一个特征空间(
x
x
x—>
ϕ
\phi
ϕ),使得输入控件中的超曲面分隔模型对应于特征空间中的超平面模型,在特征空间中应用线性支持向量机的求解方法即可。
由于该映射函数
ϕ
\phi
ϕ 不易求解,所以用核函数
K
(
x
,
z
K(x,z
K(x,z来代替约束条件中应当求解的
ϕ
(
x
)
⋅
ϕ
(
z
)
\phi (x)·\phi(z)
ϕ(x)⋅ϕ(z),从而进行求解。常见的核函数有线性核,多项式核,高斯核等。