写在前面
本文总结一下SVM(support vector machine)算法。
学习SVM算法主要有三个难点:
- 如何推导出基本的优化目标。(其中包括理解函数距离与几何距离)
- 对于基本优化目标的公式如何转化为对偶问题。
- 转化为对偶问题后对拉格朗日因子的求解,也就是SMO算法。
因此,本文分为三个部分来讲述SVM算法。
本文也就分为三个部分来讲诉SVM算法。这是SVM【上】之形成优化目标,重点理解为什么令函数间隔为1.
问题描述
我们知道SVM是用来对目标进行分类的算法,也就是要做到如下图(左)这样,但是最简单的SVM模型应该是只能解决如下图(右)这样的问题(也就是线性可分类型)。所以我们应该从线性可分类型出发来一步一步解决分类问题。所谓线性可分就是指该问题是可以很明确地给出分类边界使得两类可以完全分开,也就是如下图右一样。
对于线性可分类型我们需要找中间的无数个分类边界找到一个最好的边界。
形成优化目标
从直觉上来看,需要在两类的尽量中间位置来找一个边界,既不能太左也不能太右。也就是找到像b一样的分界面。
从直观出发,我们可以这样定义这个分界面。离分界面最近的样本点到分界面最远,满足这样的分界面就是要求的分类边界。分界面b比a好的原因就是在于点A(它是最近的样本点)到分界面b更远。为了将语言描述为数学符号,我们先介绍两个概念,几何间隔与函数间隔。
几何间隔
首先从中学的数学出发,在空间中有一个点 P ( x 0 , y 0 , z 0 ) P(x_0,y_0,z_0) P(x0,y0,z0)和一个平面 π : A x + B y + C z + D = 0 \pi:Ax+By+Cz+D=0 π:Ax+By+Cz+D=0,点 P P P到 π \pi π的距离就是几何间隔。令几何间隔为 γ \gamma γ,则计算公式为 γ = ∣ A x 0 + B y 0 + C z 0 + D ∣ A 2 + B 2 + C 2 \gamma=\frac{|Ax_0+By_0+Cz_0+D|}{\sqrt{A^2+B^2+C^2}} γ=A2+B2+C2∣Ax0+By0+Cz0+D∣ 。去掉分子的绝对值则可以表示出点 P P P相对平面的方向。这是在三维空间中的情况。
然后我们扩展到高维的情况。与在三维中类似,我们需要求高维中的点 Q ( x 1 , x 2 , . . . , x n ) Q(x_1,x_2,...,x_n) Q(x1,x2,...,xn)到超平面 w T x + b = 0 w^Tx+b=0 wTx+b=0的距离(其中 w , x w,x w,x都是n维列向量, w , b w,b