吴恩达的课程中跟国内的一些教程中分析问题的思路还是有些不同的,吴恩达的课程从简单的LR开始让我们先去理解优化目标,一步步的引导我们去理解SVM,然后揭开他神秘的面纱,便于理解,是很不错的课程。我学习的国内课程是直接重点讲解,讲到SVM核心内容。在这里我总结下自己学习SVM的一些想法(目标函数的优化,对偶问题,smo求解,其他核函数,SVM回归,最大间隔等)方便以后查看。
引言
SVM 一个支持向量机用于构造一个超平面,或再高或无限维空间,其可以用于分类,回归,或其它任务中设定的超平面的。直观地,可以做一个良好的分离。如下图,能将训练样本划分的超平面可能有很多,但是我们从直观上去看,应该去找两类训练样本最中间的那个(粗体直线)因为这条直线划分超平面对训练样本的容忍性最好。例如:可能训练集外的样本比图中的样本更加接近分类边界,这时中间的线将表现得最好,这个划分超平面所产生的分类结果是最鲁棒的,对未知的样本的泛化能力最强。
最大间隔与支持向量
我们现在的任务是求得这个最鲁棒的超平面。
我们首先可以假设超平面的线性方程如下:
其中决定超平面的因子有w和b:向量 w 为法向量,决定了超平面的方向,b 为位移项,决定了超平面与原点之间的距离。空间中的点距离超平面的距离为:
假设超平面可以将样本正确分类,则有:
- 若 y = 1
- 若 y = -1
我们现在不仅仅要求所有样本点可以正确分类而且要求泛化能力增强,所有样本尽量去远离超平面去达到更好地分类效果。跟上面粗体直线一样。 所以我们要使距离超平面最近的几个样本点使如下假设成立:
则这几个样本到超平面距离和的(被称为间隔)最小值为:
我们就是要把这个间隔最大化。也就是要找到满足
中的约束参数w 和 b,使得γ最大。其中可等价于:
这个就是支持向量机的基本形态。需要注意的是这个间隔貌似之和w向量有关,其实事实上是b通过约束隐式的影响着w的取值,进而对间隔产生影响。
最优化
接下来我们不谈SVM,谈一下优化算法,因为SVM会用到,在此总结下。最优化问题有三种:
无约束条件优化:
该问题很好解,根据 Fermat 定理,直接找到使目标函数得 0 的点即可 即 ∇xf(x)=0∇xf(x)=0 ,如果没有解析解的话,可以使用梯度下降或牛顿方法等迭代的手段来使 x 沿负梯度方向逐步逼近极小值点。详见 最优化—梯度下降法.
等式约束条件优化:
当目标函数加上等式约束条件后,问题就变成如下形式: