第七章 SVM支持向量机
文章目录
7.1.1——7.1.3支持向量机的由来;
一种用于分类回归的算法
SVM的分类决策:
ω·x+b像逻辑斯蒂回归模型的对数几率(log odds);
sign的部分像感知机;
这个式子代表超平面ω·x+b=0进行二分类;
感知机的分离超平面不是唯一确定的,
为了找到最优的唯一分离超平面,我们引入度量词分类确信度
指标(评价分类正确性)分类正确性yi
二者结合得到新的指标: 几何间隔γi
接着找到几何间隔最小的几个点(通过寻找离超平面类最相近的点确认几何间隔最小的几个点),计算它们的最大几何间隔,即可找到唯一超平面;
而这几个点,在代数空间中被称为向量,由于这几个点的支持才找到了唯一超平面,正实例点所对应的超平面H1,负实例点所对应的超平面H2,两者相互平行,分离超平面位于该两超平面的中央,两超平面H1和H2之间的距离称为间隔(margin);
因此被为支持向量这就是支持向量机的由来;
初问题:
把几何间隔最小值记作:
优化问题1.0;
引入一个概念:函数间隔
函数间隔为几何间隔除以ω的范数;
记最小函数间隔:
进一步得优化问题2.0
为了避免倍数的影响,使得同一个表达式具有多种表达式造成混淆(模型的不可识别性);
我们给函数间隔 γ添加一个约束条件;令γ =1;
优化问题3.0:
等价于优化问题4.0:
改写为优化问题5.0:
(上下两式分别为:下凸函数和仿射函数,鉴定为凸优化问题)
证明最优解的唯一性:
1.首先证明其存在性:
由于该模型的前提是线性可分,由此必然存在线性超平面使得数据集分为正负两类;
2.唯一性证明:
假设:
对上图第三行的解释:
两个向量相加所得长度一定小于两个项量的长度之和;
当且仅当,向量共线时,等式成立;
令ω * 相等,证明b1*与b2 *同样相等;
对于该两最大间隔分离平面,分别找一对正负支持向量对应的点,使得问题不等式中的等号成立: ·
由于
1.
x2对应于第二个超平面内的支持向量,不是第一个超平面内的;
所有其函数间大于等于1;
2.
同理:x1在第二个超平面内的函数间隔大于等于1;
两式联立证明:
1.
同理得:
2.
将上述两式带入b1 *-b2 *的式子,得b1 *=b2 *;
至此分离超平面的唯一性得证;
7.1.4 学习的对偶算法
构建拉格朗日函数(Lagrange function),引入拉格朗日乘子(Lagrange multiplier) :
得拉格朗日函数:
根据拉格朗日对偶性,对偶问题为极大极小问题;
第一步:将上述两式带入得内部极小;
第二步求外部极大,解得拉格朗日乘子(Lagrange multiplier)α:
根据KKT条件实现用拉格朗日乘子(Lagrange multiplier)α的代数式表示ω *和b *:
(第四行取大于等于号是应为这里的约束条件式前加了个符号,所以符号取反)
//至此我们可得出ω *和b *只与αi>0对应的点(xi,yi)有关,我们称这些点为支持向量;
最后带入得出分离超平面和分类决策函数:
7.2 线性支持向量机与软间隔最大化
7.2.1 线性支持向量机
线性不可分情况:线性软间隔算法
与线性可分支持向量机的区别在于引入了松弛变量ξ*>=0,改变了约束条件:
并且加入惩罚参数C,改变了目标函数(目的使得间隔大,误分类小,C起平衡作用);
7.2.2 学习对偶算法
之后,同线性可分支持向量机求解方法:
对偶极大极小,KKT,求解;
这里aj*不等与C,是因为如果等于的话,可能取得的实例点不是支持向量;
7.2.3 支持向量
7.2.4 合页损失函数
为了减少多余的松弛变量带来的计算量;(当函数间隔大于1时,不需要松弛变量)
引入合页损失函数:
线性支持向量机原始最优化问题
引入下式
等价于优化问题:
当函数间隔>=1 | 函数间隔<1 |
---|---|
松弛变量=0 > (1-函数间隔) | 松弛变量=(1-函数间隔)> =0 |
满足原始最优化问题的两个约束条件
7.3 非线性支持向量机与核函数
7.3.1 核技巧
非线性分类问题
进行一个非线变换(映射),将线性问题转化为非线性问题;
用线性分类方法解决非线性分类问题分为2步走;
第一步:
数据的空间映射(输入空间(旧)到特征空间(新));
//使得输入空间的超曲面模型对应与特征空间的超平面模型;
第二步:
在新空间中用线性分类学习方法,去学习分类模型;
核函数的定义
即核函数等于映射内积;
特点:
核函数直接计算容易,用映射内积计算难;
核函数和映射的关系:
一对多;
核函数在支持向量机中的应用
在新的特征空间里从训练样本中学习线性支持向量机;
当映射函数为核函数的时候,得到的支持向量机是非线性模型;
//实际应用中依赖领域知识直接选择核函数,核函数的选择的有效性需要实验验证;
7.3.2 正定核
核函数=正定核函数;
对称+Gram半正定矩阵<=>希尔伯特空间,正定核; (充要条件)
再生核
Mercer核
7.3.3 常用核函数
多项式核函数与高斯核函数:
字符串核函数(string kernel function)
字符串核函数定义在离散数据集合上:
其中i|u|是第u个元素在字符串上的位置参数;
|u|就是子串u的最后一个元素在字串中的位置,正好表示其长度;
如果字串的参数在s串中不是连续的,那么i|u|到i1之间就包括了字串u的所有元素和其他元素的个数总和>字串u的元素个数;
最后的核函数表示所有长度为n的字串的在其每一个字串维度上的(对应特征空间维度)的内积和;
7.3.4 非线性支持向量分类机
与线性支持向量分类机的区别:
所有的计算式中xi·xj=>K(xi,xj)
7.4 序列最小优化算法SMO
整个(sequential minimal optimization)SMO算法包括两个部分:
求解两个变量二次规划的解析方法和选择变量的启发式方法:
7.4.1 两个变量二次规划求解方法
实质:固定N-2个αi
好处求解非线性SVM更加方便;
确定α2确定α1:
找出α2满足优化问题最小化,重复就可依次确认每个αi;
求新目标函数(α1,α2)最小值:
化简问题:
记号1.
记号2.
记号3.
3记号与目标函数联立得:
由(7.102)得:
//往上第4张图里
带入(7.110)得:
//上式中与α1有关四项累加为0,刚好消掉;
未剪辑:计算暂时未包括约束条件
(7.108)由(7.102)与(7.103)推得:
关于H与L的内容补充:
7.4.2 变量的选择方法:
第一个变量:
计算KKT知道分类,不满足KKT条件说明它不是最优参数,要对这个实例点所对应的 αi进行迭代更新
选违反KKT条件最严重的;
第二个变量:
α2的值改变量与|E1-E2|成正比;
选择’‘最优步长’‘从而实现快速收敛(即使|E1-E2|值最大的),若找到到合适的α2使目标函数有一定的下降,1.遍历数据集,2重新选取α1;
阈值b和差值E
如果b1,b2都满足:0<&&<C,则任选b1,b2作为b(new);
如果都不满足,取b1,b2中值;
E的更新(计算用的α也是更新后的):
7.4.3 SMO算法
二次规划QP问题:
第一项是x的二次,那么这类问题就是二次规划问题;
每一个x都是n维的,计算量大,将其拆解处理QP子问题,降维,;
根据Osuna定理找到违反KKT条件进行降维处理,就能实现快速收敛;
支持向量机问题属于QP问题:
KKT条件:
广义拉格朗日函数:
根据KKT条件
得:
0<=αi*<=C;
根据KKT条件得:
得:SMO算法:
两个参数迭代的差值符合精度ε,也就是足够小,且满足所有KKT条件;