声明:原创文章,转载请注明或保留出处【https://www.jianshu.com/p/dbc86a2b9760】by【飞奔的野指针】
一、优缺点
- 优点:泛化错误率低,计算开销不大,结果易解释。
- 缺点:对参数调节和核函数的选择敏感,原始分类器不加修改仅适用于处理二类问题。
- 适用数据类型:数值型和标称型数据。
二、简单解释
如果数据线性可分,则分,如果数据线性不可分,则升维(用核函数)后用面切分。
三、SVM
1.寻找超平面
在平面上直线用表示。
在三维中平面用表示。
多维中用法向量来表示参数,决定超平面的方向,表示每一个维度。,超平面表示为:,参数决定了到原点的距离。
超平面把数据分成两类,上方数据点为,下方数据点。
如超平面是,两个点分别位于直线上下。
,位于直线上两侧的点异号。SVM中正样本标签为1,负样本标签为-1。
目标函数就是最优超平面,用来分类,我们要求的就是和:
2.寻找最大间隔
2.1 最大间隔
取两个中间没有数据点的超平面(一般取)此时目标函数的超平面 正在这两个超平面的正中间。
于是寻找超平面转化为寻找这两个超平面,或者说两个超平面的最大间隔,间隔是求解和的关键。
2.2 =1的原因
2.3 投影
详细可看向量方面的内容,不过多阐述。
2.4最大分隔上的点到超平面距离
2.5 最大分隔的间距
3.SVM基本型
也就是说要求解最大的间距,就得找出的解,而求解的条件包含在限制条件中。
4.软间隔和正则化
在求解之前,修改下优化函数,使其允许小部分样本分错,增加其鲁棒性。
4.1代价函数
代价函数也叫损失函数,用来展示预测结果与实际结果的差异。
但是的连续性不好,我们使用如下连续性更好的函数,它们都有相似性质,我们关注附近的性质。
4.2软间隔
允许某些样本不满足(3.1)的约束,引入松弛变量,就是上一节的代价函数,用来表示不满足条件的程度,按照性质。
新的SVM基本型为:
预测正确的项,不会影响整体的值,预测错误才会有”惩罚“,影响最小化。
4.3 惩罚项系数
新的SVM基本型中的是惩罚项系数。
5.最小化SVM基本型
5.1拉格朗日乘子法
拉格朗日乘子法是用来求约束条件下,多元函数的极值。
若函数的变量受约束的限制,函数局部极值满足条件。
若函数的变量受约束和的限制,函数极值局部极值满足条件 。
5.2KKT条件
在拉格朗日乘子法的基础上加入不等式条件限制,则用KKT条件求解局部极值。
拉格朗日乘子法和KKT具体可以从数学中的多元函数部分了解,这里简单介绍和使用。
5.3 约束优化问题
为目标函数,为不等式约束,为等式约束。
如果三者都是线性函数,则优化问题为线性规划,若任意一个为非线性函数,则为非线性规划。
如果目标函数为二次函数,约束全为线性函数,则为二次规划。
如果为凸函数,为凸函数,为线性函数,则称该问题为凸优化。(如果)则为凹函数。
凸优化的任一局部极值点也是全局极值点,局部最优也是全局最优。
5.4最小化过程
SVM基本型(4.1)是凸二次规划问题,求解极值需要使用拉格朗日乘子法+KKT条件得其对偶问题。两个不等式条件为
给每条约束添加乘子,则拉格朗日函数是
对、和分别求偏导数,它们都为0:
使用上述的条件,继续优化(5.1)
优化下限制条件
最后可得(5.1)的对偶问题是
5.5目标函数
将(5.2)代入目标函数
上式中已经没有了,只和与相关,我们试着去理解的含义。
系数代表超平面对该维度分割的程度。如下图,的系数异号时,只看第一象限,绝对值的大小决定第一象限如何被分割,时,均匀分割,靠近的区域大,靠近的区域大,所以多元函数某元前的系数决定被分割时该元所占空间的比重。
前面是拉格朗日乘子,后面是系数(最后一项),表示第个样本第个特征,表示第个样本的类别,以第一个系数为例,只取决于所有样本的第个特征,所有样本的类别,和所有的。
6.SMO求解α
想要求解(5.5),这是一个二次规划问题,先固定先固定之外的所有参数,然后求上的极值,我们将用来表示。这种方法就是SMO(Sequential Minimal Optimizaion)序列最小化算法,将大优化问题分解成多个小优化问题求解。
于要满足(6.5)的条件,必须两两更新,否则,每次选择两个变量和并固定其他参数,在参数初始化后,SMO不断执行直到收敛。
6.1化简对偶问题
改变下的形式,暴露出一对和:
6.2找出和的关系
由于(5.5)的约束条件,,仅考虑和,将其他项移到等式右边,暴露出一对。
用来表示,将化成用表示的形式。
根据KKT条件,可知,可以得出的表达式
6.3 更新前后与的关系
根据(6.5)我们就能找到更新前后的与的关系
求解与的具体关系
6.4 学习速率和误差率
6.5 α更新条件
计算出一对后,我们需要验证,是否所有点都分对了,如果不对,则成对更新,条件如下:
这反应了SVM的一个重要性质,训练完成后,大部分训练样本不需要保留,只需要保留支持向量。
然后根据条件,可得样本样本分类情况
总结下上述条件,我们可以知道哪些情况的不满足KKT条件,需要更新
6.6 α的取值范围
对于更新后的,同样有取值范围,先寻找的限制条件。
根据的取值范围,如果更新后大于最大值,则取最大值;更新后小于最小值,则取最小值。
通过(6.5)的推广更新后可以再更新。
7.求解
求出后,需要求解。
更新后需要更新(影响的值,从而影响的值),使间隔最大。
当和都有效时,相等
当两个乘子都在边界上,则b和KKT条件一致。当不满足的时候,SMO算法选择他们的中点作为新的阈值
参考:
- 周志华 《机器学习》第六章 支持向量机
- 托马斯《托马斯微积分》11.多元函数及其导数
- Jack Cui《机器学习实战教程(九):支持向量机实战篇之再撕非线性SVM》https://cuijiahua.com/blog/2017/11/ml_9_svm_2.html
- 机器之心 《学习SVM,这篇文章就够了!》https://www.jiqizhixin.com/articles/2018-10-17-20
- donyzh《SVM关于Platt文章中SMO求解参数的具体推导过程》https://blog.csdn.net/donyzh/article/details/78196827