最近在学SVM,简单的整理下知识
1.SVM发展历史
1.1重要理论基础1----VC维理论
60年代,Vapnik提出了VC维理论
平面内只能找到3个点能被直线打散而不找到第4点
简单的来说就是对于二维分类器,VC维是3,它不能处理异或问题,
也就有结论 :对于二维分类器,平面内只能找到3个点能被直线打散而找不到第4点
参考:http://www.cnblogs.com/qqhfeng/archive/2012/05/16/2504035.html
1.2.重要理论基础2------结构风险最小化理论
1982年,Vapnik提出了结构风险最小化理论
结构风险最小化 = 经验风险 + 置信风险
经验风险 = 分类器在给定样本上的误差
置信风险 = 分类器在非指定样本上的误差 (即:推广能力的误差)
1.3. Vapnik于1995年首先提出了支持向量机
以前机器学习目标是降低经验风险,从而使分类函数复杂,导致VC维度很高,置信风险就越高,
导致结构风险也高,svm是基于VC维理论和结构风险最小化理论之上的,这也是SVM比其他机器学习具有优势的地方
优点:在解决小样本,非线性及 高维模式识别中表现出许多特有的优势
2. SVM特性
2.1 小样本
与问题的复杂度相比,SVM算法要求的样本相对较少
2.2 非线性
SVM 擅长应对样本数据线性不可分的难题,主要通过松弛变量和核函数技术实现
2.3 高维数据
文本的向量表示,几万维,反例如KNN难以处理高维数据
3.线性分类
3.1 几何间隔
3.2 最大化间隔的凸优化形式
带约束的二次规划问题,属于凸优化问题,凸二次规划有解,且为全局最优解
3.3 凸二次规划问题求解
等式约束求机智:通过拉格朗日转化为无约束问题
不等式约束问题:
方法一:用现成的二次规划优化包进行求解(缺点是效率低)
方法二:求解与原问题等价的对偶问题(dual problem),得到原始问题的最优解(更易求得,可以推广到核函数)
拉格朗日乘子法,拉格朗日对偶性,KKT理论支撑
求解步骤:
1.转化为对偶问题
--对偶转化 &KKT条件
拉格朗日函数
2.求解w,b极小值
--拉格朗日乘子极值
参考资料:
https://www.cnblogs.com/xinchen1111/p/8804858.html
3.求解a极大值
--用smo算法求解a乘子
参考 :https://zhuanlan.zhihu.com/p/29212107
4.非线性分类
1.非线性特征映射---核函数
解决问题不可分问题的基本思路:通过核函数将低维度空间特征映射到高维空间,从而达到线性可分
5.松弛变量
允许一些点到分类平面的距离不满足硬性要求