【Coursera】Machine learning - week7 : Support Vector Machines

本周学习的内容便是大名鼎鼎的SVM。虽然视频不多,但是涉及到的知识点却是比以前多了不少。之前通过其他视频或者资料已经学过了,但是一直还是有一种雾里看花的感觉。这次通过这个视频,给了我另外一个看SVM的方向,让我对SVM的理解又加深了一层吧。这篇博文呢通过这两个方向同时分析,这样子感觉更能够get到SVM的精髓。话不多说切入正题。

SVM的基本思想,是得到一个large margin classifier,即得到一个分界面,使得训练集中的任意一个样本能够在尽可能地正确分类的情况下,距离这个分界能够尽可能的大,换言之,即是令最小的几何间隔(geometric margin) r=min(|θTx+b|||w||) 能够尽可能地大,其中 θ 是函数的参数, x 是样本的特征向量, w 是分界面的参数。因此像之前的学习算法一样,我们的优化目标便为 maxr 。因为我们总可以通过适当地调整 θ 的比例来使得 θTx+b 的值在某一个范围内,因此我们考虑设最小的 θTx+b=1 ,因此优化问题变成 max2||w|| ,并且有限制条件 s.t. y(i)(wTx(i)+b)1  i=1,2,3...,m 。其中 y(i) 是第i个样本的label, m 是总的样本个数。那么这个时候,我们就可以通过拉格朗日对偶来对问题进行求解。具体推导在此就不写了,Andrew Ng在网易公开课上的note已经写的非常详细,最后得到的式子为
maxαmi=1αi12mi=1mj=1αiαjyiyjxTixj
s.t.
mi=1αiyi=0
αi0;i=1,2,3,...m
其中 αi 是拉格朗日乘子,若第i个样本为支持向量的话,那 αi0 。那么最后得到的平面为 f(x)=wTx+b=mi=1αiyixTix+b
而求解 α 的方法,比较常见的是SMO算法,这里也不展开讲了。
以上为常见的对SVM的推导方法,而coursera上的分析思路与这种方法不太相同。
在之前的课程中,我们知道了logistics regression的代价函数为
【Coursera】Machine learning - week7 : Support Vector Machines_第1张图片
可以知道,其中的 log(hθ(x(i))) 为当label为1时的损失函数,与之相对 log(1hθ(x(i))) 为当label为0时的损失函数。我们考虑将其替换为SVM特有的损失函数:
【Coursera】Machine learning - week7 : Support Vector Machines_第2张图片
那这个cost函数是什么意思呢?其中斜率并不是重点,只需要关注当y=1,时,若 θTx+b1 则没有惩罚,换句话说,即是我们希望所有正样本到直线的函数间隔(function margin)大于等于1。y=0时同理。
去掉一些不重要的常数后,得到如下图所示的惩罚函数
cost function of SVM
其中C代表我们对样本分类正确与否的重视程度,与logistics regression的 λ 是一个道理,若我们将C的值取为一个较大的数值,那么会使得模型更加趋近于去迎合模型,那么有一个错误的分类点对其影响就会很大(类似于overfitting)。
而现在重要的是,需要知道的是为什么在这个损失函数下,可以得到使得margin取最大的分类器。
对于运算 θTx 来说,这个运算其实是等价于 p(i)||θ|| ,其中这里 p(i) x(i) 在特征向量 θ 上的投影长度(因为向量^T*向量的本质就是内积)。
在假设样本可以被完全正确分类的情况下,那么损失函数就只剩下了 mi=1θi2 (因为cost function的前半段为 C0=0 ),并且若本完全正确分类,则需满足如下条件
(θTx+b)y(i)1;i=1,2,3,...m

p(i)||θ||1;i=1,2,3,...m
【Coursera】Machine learning - week7 : Support Vector Machines_第3张图片
那么可以得到,若我们要最小化 mi=1θi2 ,那么该模型必然要向 p(i) 取得较大值的方向进行优化,因此就会得到margin较大的模型,达到了取到large margin classifier的目的。
关于SVM的基本推导大概就是这样,至于关于kernel的东西下次再补充好了。

你可能感兴趣的:(机器学习)