支持向量机概念:
Vapnik等人在多年研究统计学习理论基础上对线性分类器提出了另一种设计最佳准则。其原理也从线性可分说起,然后扩展到线性不可分的情况。甚至扩展到使用非线性函数中去,这种分类器被称为支持向量机(Support Vector Machine,简称SVM)。支持向量机的提出有很深的理论背景。
支持向量机方法是在后来提出的一种新方法。
SVM的主要思想可以概括为两点:
它是针对线性可分情况进行分析,对于线性不可分的情况,通过使用非线性映射算法将低维输入空间线性不可分的样本转化为高维特征空间使其线性可分,从而使得高维特征空间采用线性算法对样本的非线性特征进行线性分析成为可能。
它基于结构风险最小化理论之上在特征空间中构建最优超平面,使得学习器得到全局最优化,并且在整个样本空间的期望以某个概率满足一定上界。
支持向量机(SVM):
目的: 寻找一个超平面(分割线)对样本进行分割,分割的原则是 间隔最大化。
模型(二分类问题就是一个分割线):
其中二维空间点(x, y)到直线 Ax+By+C=0 的距离是:
若想分类明确则必须使我们的 d 最大
我们假设空间点扩展到 n 维空间后,点 到直线 (超平面)来说距离是: 其中
若为二分类,我们将分为: ,则,其中限制条件为:,我们也可以将求 等效与求 即公式:(这样方便求导)
所以我们将目标函数简化为:
s.t i=1,2,3,.....n s.t(subject to)表示服从某条件
针对以上求最值问题,明显是一个不等式优化问题,所以先我们引入 拉格朗日乘数法
拉格朗日乘数法:
目的: 将有等式约束的优化问题转化为无约束条件的优化问题。
拉格朗日乘数法证明如下链接: https://blog.csdn.net/Soft_Po/article/details/118332454
拉格朗日乘数法转换可用梯度向量相等证明。然而以上问题使一个不等式优化问题,所以我们引入KKT条件。
KKT条件:
目的: 将一个不等式优化问题转化为等式优化问题。
KKT条件证明如下链接: https://blog.csdn.net/Soft_Po/article/details/118358564
此处证明大致说法就是: 两种情况:一种在约束条件内(约束条件不起作用),另一种在约束条件外(约束条件起作用),在约束条件外引入 使得 的负梯度和 的梯度相等。
通过拉格朗日乘数法和KKT条件化简公式:
根据以上理论我们将公式转化为:
然后我们设有最小值 x 使得方程有最小值解: P。
又因为 是我们引入的常数,所以方程可直接化为: ,即我们先找到 ,即最大我们的 x 最小。所以此时我们应该求解方程: 。
然而 是我们引入的拉格朗日乘子,所以我们再次将方程转化为对偶问题:
对偶问题:(分为弱对偶与强对偶)
弱对偶: 相当于一个学校的好班级的最后一名和差班级第一名,也就是原问题 对偶问题。
即:
强对偶: 一般来说,对于绝大多数凸函数都属于强对偶问题。
即:
所以我们将公式转化为:
并且满足 KKT条件: 。所以此时函数为凸函数,因为 > 0,所以直接使用强对偶进行转化: 且满足: 。
假设 固定 ,求梯度: 我们设此处为 C 式。
将 c 式带入到强对偶转化后的式子中得到: s.t 我们设为 d式。
d式是一个只含有 的最优化问题。
此时我们再次引入 SMO算法(序列最小优化算法):
且 假设为二分类器。假设 参数固定,那么之间的关系也就确定。
所以:,所以 将此式代入d式。
所以该问题就转化为求 的最优化问题(可直接通过求导数求得最优解)。
求导之后我们就可以得到一组拉格朗日乘子集,根据 c式 ,当 > 0 时,即:,又因为 ,所以同时乘以 ,得: 此时求得多组 b 值。
最终: 得到一个超平面分类器: ,当 时是线分类器。