Stanford机器学习---第八讲. 支持向量机SVM

Posted liugallup

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Stanford机器学习---第八讲. 支持向量机SVM相关的知识,希望对你有一定的参考价值。

本文原始文章见http://blog.csdn.net/abcjennifer/article/details/7849812,本文添加了一些自己的理解

本栏目(Machine learning)包括单参数的线性回归、多参数的线性回归、Octave Tutorial、Logistic Regression、Regularization、神经网络、机器学习系统设计、SVM(Support Vector Machines 支持向量机)、聚类、降维、异常检测、大规模机器学习等章节。所有内容均来自Standford公开课machine learning中Andrew老师的讲解。(https://class.coursera.org/ml/class/index


第八讲. 支持向量机进行机器学习——Support Vector Machine


===============================

(一)、SVM 的 Cost Function

(二)、SVM —— Large Margin Classifier

(三)、数学角度解析为什么SVM 能形成 Large Margin Classifier(选看)

(四)、SVM Kernel 1 —— Gaussian Kernel

(五)、SVM 中 Gaussian Kernel 的使用

(六)、SVM的使用与选择



本章内容为支持向量机Support Vector Machine(SVM)的导论性讲解,在一般机器学习模型的理解上,引入SVM的概念。原先很多人,也包括我自己觉得SVM是个很神奇的概念,读完本文你会觉得,其实只是拥有不同的目标函数, 不同的模型而已,Machine Learning的本质还没有变,呵呵~

完成本文花了我很长时间,为了搞懂后面还有程序方便和参考网站大家实验,希望对大家有所帮助。




=====================================

(一)、SVM 的 Cost Function


前面的几章中我们分别就linear regressionlogistic regression以及神经网络的cost function进行了讲解。这里我们通过logistic regression的cost function引入SVM。

首先回忆一下logistic regression的模型:



还是原先的假设,suppose我们只有两个类,y=0和y=1。那么根据上图h(x)的图形我们可以看出,

当y=1时,希望h(x)≈1,即z>>0;

当y=0时,希望h(x)≈0,即z<<0;

那么逻辑回归的cost function公式如下:

cost function我们之前已经讲过了,这里不予赘述。现在呢,我们来看看下面的两幅图,这两幅图中灰色的curve是logistic regression的cost function分别取y=1和y=0的情况,

y=1时,随着z↑,h(x)逐渐逼近1,cost逐渐减小。

y=0时,随着z↓,h(x)逐渐逼近0,cost逐渐减小。

这正是图中灰色曲线所示的曲线。

ok,现在我们来看看SVM中cost function的定义。请看下图中玫瑰色的曲线,这就是我们希望得到的cost function曲线,和logistic regression的cost function非常相近,但是分为两部分,下面呢,我们将对这个cost function进行详细讲解。


logistic regression的cost function:


现在呢,我们给出SVM的目标函数(cost function)定义:


该式中,cost0和cost1分别对应y=0和y=1时的目标函数定义,最后一项regularization项和logistic regression中的类似。感觉系数少了什么?是的,其实它们的最后一项本来是一样的,但是可以通过线性变换化简得到SVM的归一化项。






=====================================

(二)、SVM —— Large Margin Classifier


本节给出一个简单的结论——SVM是一个large margin classifier。什么是margin呢?下面我们做详细讲解,其理论证明将在下一节中给出。


在引入margin之前,我们回顾一下上一节中的SVM cost function curve,如下图所示分别是y取1和0时的情况。先给出一个结论,常数C取一个很大的值比较好(比如100000),这是为什么呢?

我们来看哈,C很大,就要求[]中的那部分很小(令[]中的那部分表示为W),不如令其为0,这时来分析里面的式子:

※需求1:

y=1时,W只有前一项,令W=0,就要求Cost1Tx)=0,由右图可知,这要求θTx>=1;

y=0时,W只有后一项,令W=0,就要求Cost0Tx)=0,由右图可知,这要求θTx<=-1;



由以上说明可知,对C的取值应该在分类是否犯错和margin的大小上做一个平衡。那么C取较大的值会带来什么效果呢?就是我们开头说的结论——SVM是一个large margin classifier。那么什么是margin?在第三章中我们已经讲过了decision boundary,它是能够将所有数据点进行很好地分类的h(x)边界。如下图所示,我们可以把绿线、粉线、蓝线或者黑线中的任意一条线当做decision boundary,但是哪一条最好呢?这里我们可以看出,绿色、粉色、蓝色这三类boundary离数据非常近,i.e.我们再加进去几个数据点,很有可能这个boundary就能很好的进行分类了,而黑色的decision boundary距离两个类都相对较远,我们希望获得的就是这样的一个decision boundary。margin呢,就是将该boundary进行平移所得到的两条蓝线的距离,如图中所指。


相对比:

C小,decision boundary则呈现为黑线;若C很大,就呈现粉线;


这个结论大家可以记住,也可以进行数学上的分析,下一节中我们将从数学角度分析,为什么SVM选用大valeu的C会形成一个large margin classifier。

我们可以为分错的点加上一点惩罚,对一个分错的点的惩罚函数就是这个点到其正确位置的距离:

image

在上图中,蓝色红色的直线分别为支持向量所在的边界,绿色的线为决策函数,那些紫色的线表示分错的点到其相应的决策面的距离,这样我们可以在原函数上面加上一个惩罚函数,并且带上其限制条件为:

image

公式中蓝色的部分为在线性可分问题的基础上加上的惩罚函数部分,当xi在正确一边的时候,ε=0,R为全部的点的数目,C是一个由用户去指定的系数,表示对分错的点加入多少的惩罚,当C很大的时候,分错的点就会更少,但是过拟合的情况可能会比较严重,当C很小的时候,分错的点可能会很多,不过可能由此得到的模型也会不太正确,所以如何选择C是有很多学问的,不过在大部分情况下就是通过经验尝试得到的。

接下来就是同样的,求解一个拉格朗日对偶问题,得到一个原问题的对偶问题的表达式:

image

蓝色的部分是与线性可分的对偶问题表达式的不同之处。在线性不可分情况下得到的对偶问题,不同的地方就是α的范围从[0, +∞),变为了[0, C],增加的惩罚ε没有为对偶问题增加什么复杂度。


再给出一个数学上对geometry margin的说明:


任意一个点x到分类平面的距离γ的表示如上图所示,其中y是{+1,-1}表示分类结果,x0是分类面上距x最短的点,分类平面的方程为wx+b=0,将x0带入该方程就有上面的结果了。对于一个数据集x,margin就是这个数据及所有点的margin中离hyperplane最近的距离,SVM的目的就是找到最大margin的hyperplane



练习:








=====================================

(三)、数学角度解析为什么SVM 能形成 Large Margin Classifier(选看)


这一节主要为了证明上一节中的结论,为什么SVM是Large Margin Classification,能形成很好的decision boundary,如果仅仅处于应用角度考虑的朋友可以略过此节。

首先我们来看两个向量内积的表现形式。假设向量uv均为二维向量我们知道u,v的内积uTv=u1v1+u2v2。表现在坐标上呢,就如下图左边所示:

首先将v投影至u向量,记其长度为p(有正负,与u同向为正,反相为负,标量),则两向量的内积uTv = ||u|| · ||v|| · cosθ = ||u|| · p = u1v1+u2v2。