(基本大纲)
一、SVM概念
1.函数间隔;
2.几何间隔:相当于将到超平面的距离归一化为1了
3.与感知机的区别;
二、具体模型
1.线性可分的SVM (属于理想情况下,数据线性可分)
a.硬间隔最大化的线性可分SVM;
b.对偶类型的SVM模型;
拉个朗日函数:
支持矢量:落在间隔边界的样本点,成为支持矢量,决定着整个超平面的划分;
间隔边界:wx+b=1和wx+b=-1
间隔:2/||w||
2.软间隔最大化的SVM(主要解决样本中出现造成的问题,数据总体还是线性可分的)
a.几何间隔函数:引入松弛变量,导致目标函数加入对松弛变量进行限制的惩罚参数C
b.最优化问题形式:
c.超平面与决策函数
间隔:支持矢量到超平面之间的距离。
对偶形式:与硬间隔面相比在选择乘子时,所有的拉格朗日乘子要在0和C之间,且此时b的计算时所有符合条件的样本计算出的b的平均值。
支持矢量的位置:不一定在间隔面上,根据拉格朗日乘子与样本到间隔边界的距离,可以表示其分类结果。此时支持向量可以落在间隔边界、间隔区间(2部分内)以及对方的间隔边界外等。
合页函数:以最小化目标函数(经验损失函数)的形式来进行解释。
3.非线性SVM(此时的问题线性不可分)
超平面与超曲面:数据通过超曲面可分,在变换到特征空间后超平面可分
核函数:满足K(x,z)=Q(x).Q(z); 其只要目的是将特征从低维变换到高维,再进行内积的算计,而核函数可以直接在特征空间中进行计算并得到这样的结果。
正定核及性质;
常见核函数:多项式、高斯核函数、字符串核函数;
引入核函数下的最优化目标函数与约束条件;
决策超平面与决策函数;相比于上述的方式,将w变化为了带拉个朗日乘子与核函数的形式。
4.SMO算法(相当于此时非线性SVM模型的对偶问题进行求解)
对偶问题形式:
双变量的求解方式;
SMO算法;
5.SVM用于多分类
1.采用一对多的形式:建立N个分类器,N为样本类别数。分别进行i类别与其他类的分类器训练。对于分类结果,那个分类器输出正类,即为对应的类。
2.采用1对1的方式,建立Cn2的方式,一共n(n-1)/2个。每个分类器,训练i,j两类。对所有的分类器结果的类别数进行投票。
3基于图连接的方式;使得对于N个样本的预测,其实只需要N-1次分类器的预测。
三、常见的库
1.libsvm
2.opencv(也是基于libsvm)
3.shark等
四、总结
SVM算法相比其他算法,更多的体现在对具体的数学公式的推到上,包含大量的推导公式,因此上手起来相对难一些,不过看懂推导后也就很容易明白各个模型最后的最优化问题的形式,决策函数的形式以及采用对偶形式的计算方式,和整个过程中的所有需要设计的参数与功能。算是有点收获吧。
目前svm多用在分类问题上,同时好像也能够进行回归,不过也看过这方面的资料。分类方面效果较好,能与之相比的就是随机森林算法了。可以以后做实验比较一下。
(具体公式等更新)