本文主要基于youtube上的视频(炼数成金机器学习课程):https://www.youtube.com/watch?v=Cz144VkaRUQ
支持向量机(support vector machine)可以完成很多线性分类器达不到的目标:比如当分类的曲线是非线性时。
SVM的思想很直观,但是细节非常的复杂,内容涉及凸分析函数、核函数、神经网络等领域。
本文思路:SVM -> 凸优化问题 -> KKT问题(拉格朗日乘子的推广)-> 对偶问题
2 计算
左上方的点被分类为y=1,右下方的点被分为y=-1;则分类问题你可以由这个约束条件表示:
上式等价于:
我们想要求解最大的d(希望两个分离平面之间的距离最大):
即等价于求解最小的w的模:
(求模涉及到根号,所以转换为模的平方)
在数学上,这个求极值的问题称为凸优化问题。
注意w是一个向量,比如三维的向量表示为:
3 凸优化问题
为什么称之为“凸”?首先介绍凸函数:
4 凸优化问题的求解
拉格朗日乘子法:
第一项为目标函数;第二项为约束条件的求和;
αi为拉格朗日乘子,是一个未知数;
凸优化问题可以转化为求拉格朗日极值。取各项偏导等于0:
梯度的定义:(各项求偏导后组成的向量)
上图中,g(x,y)=c是约束;f(x,y)是目标函数;虚线是等值线。
可以看做这样一个三维的投影:
极值点为目标函数和约束条件的相切点;垂直于切线的向量即为梯度(对f和对g分别有两个梯度)。
由上图的推导可知,目标函数和约束条件的梯度向量的方向恰好是相反的,即图中的。
严格来讲,拉格朗日乘子法只用于解决约束为等号的情况,这种约束为不等于的情况实际属于,是拉格朗日算子法的一种推广。上面的推导只能解决约束条件为等号的情况,不等号时没办法直接求解,但我们可以借此消掉w和b,进一步简化为对偶问题: