您的位置:首页 > 其它

Coursera机器学习-第七周-Support Vector Machine

2016-06-13 10:24 471 查看

Large Margin Classification

支持向量机(Support vector machine)通常用在机器学习 (Machine learning)。是一种监督式学习 (Supervised Learning)的方法,主要用在统计分类 (Classification)问题和回归分析 (Regression)问题上。

支持向量机属于一般化线性分类器,也可以被认为是提克洛夫规范化(Tikhonov Regularization)方法的一个特例。这族分类器的特点是他们能够同时最小化经验误差与最大化几何边缘区,因此支持向量机也被称为最大边缘区分类器。现在多简称为SVM。

Optimization Objective

先来回顾逻辑回归函数:



由图上可知:

y=1,hθ(x)≈1,θTx≫0

y=0,hθ(x)≈0,θTx≪0

Logistic Regression Cost Function:



ps:这是对于一个样本点的cost Function,所以没有除以m

左图:红色线描述的是新的代价函数的,记为cost1(z)

右图:红色线描述的是新的代价函数的,记为cost0(z)

这里的下标是指在代价函数中对应的 y=1 和 y=0 的情况



构建SVM的代价函数J(θ):



这个代价函数是由logistic regression变化过来的,只需将



同时乘以m,除以λ即可得到SVM的代价函数。

Large Marign Intuition



为 W

当C取非常大的值时,例如10000,就要求W非常小

当y=1时,W只有前一项,为了使其为0,要求 θTx≥1

当y=1时,W只有后一项,为了使其为0,要求 θTx≤−1



Large margin classifier:



关于Decision Boundary 我们或许可以得到粉色的线、绿色的线、黑色的线。但是,其中,哪种的分类是更合理,更好的呢?

支持向量机将会选择 这个黑色的决策边界 。这条黑色的看起是更稳健的决策界 ,在分离正样本和负样本上它显得的更好 。数学上来讲 ,这条黑线有更大的距离 ,这个距离叫做间距 (margin) 当画出这两条 ,额外的蓝线我们看到黑色的决策界和训练样本之间有更大的最短距离, 然而粉线和蓝线离训练样本就非常近 。

这个距离叫做支持向量机的间距。 而这是支持向量机具有鲁棒性的原因, 因为它努力用一个最大间距来分离样本 。

参数C对分类的影响:



其实C是一个惩罚系数,是对于离群点(outlier)的惩罚程度。当C比较小时,对于离群点可以忽略,当C比较大的时候,就不能忽略离群点了,必须将离群点划分到相应的类别。


当C比较小时,[ ]中的项不必要严格=0,若C比较大,就需要=0了。

Mathematics Behind Large Marign Classification

这节的内容请参见参考文章

Kernels

核函数的本质:

实际中,我们会经常遇到线性不可分的样例,此时,我们的常用做法是把样例特征映射到高维空间中去

如果凡是遇到线性不可分的样例,一律映射到高维空间,那么这个维度大小是会高到可怕的。该怎么办?

此时,核函数就隆重登场了,核函数的价值在于它虽然也是讲特征进行从低维到高维的转换,但核函数绝就绝在它事先在低维上进行计算,而将实质上的分类效果表现在了高维上,也就如上文所说的避免了直接在高维空间中的复杂计算。

假设现在你是一个农场主,圈养了一批羊群,但为预防狼群袭击羊群,你需要搭建一个篱笆来把羊群围起来。但是篱笆应该建在哪里呢?你很可能需要依据牛群和狼群的位置建立一个“分类器”,比较下图这几种不同的分类器,我们可以看到SVM完成了一个很完美的解决方案。



Kernels

对于非线性的决策边界,我们之前可以用多项式拟合的方式进行预测,例如图上的x1,x2,x1x2等等,这种方法似乎计算量也比较大,是否还存在别的方法来得到特征量呢?



Kernel:



1.标记点(landmark,l(1),l(2).....)

2.通过Kernel函数计算相似度

3.代入Hypothesis进行预测

标记点(landmark,l(1),l(2).....)是如何选择的?



左边的图是Training set(训练集),其中分为Positive和negative样本点。将其按照样本序号标记为l(1),l(2).....l(m)

Kernel Function:



Kerenl 的σ2的影响:



Kernels计算相似度:



当x离l(1)很近的时候,相似度近似为1。

当x离l(1)很远的时候,相似度近似为0。

预测分类例子:



假设已经知道θ0,θ1,θ2,θ3的值。

x离l(1)比较近,那么求得f1=similarity(x,l(1))=1,f2=0,f3=0,代入



可以预测该样本点属于”1”(positive)

相似的,对于天蓝色的样本点x, f1,f2,f3≈0



可以预测该样本点属于”0”(negative)



Summary:



PS:那么在这m个训练数据中,每一个训练数据x(i)所得的特征向量(核函数)f(i)中,总有一维向量的值为1(因为这里x(i)=l(i))

于是,每个特征向量f(i)有m+1维(m维训练数据[f1,f2,…,fm]附加一维f0=1)

如下图所示,这里与之前讲过的cost function的区别在于用kernel f(i)代替了x。



SVMs In Practice

用SVM进行机器学习的过程就是一个optimize参数θ的过程。

SVM进行学习,主要分为:

1.No kernel (Linear Kernel),hθ(x)=g(θ0x0+θ1x1+...θnxn),predict y=1 if θTx≥0

2.Kernel f (e.g. Gaussian Kernel),也叫Radial Basis Function 简称RBF,它能够把原始特征映射到无穷维,hθ(x)=g(θ0f0+θ1f1+...θnfn),这里需要选择参数σ2



下面有张图说明在低维线性不可分时,映射到高维后就可分了,使用高斯核函数:



PS:



需要进行特征归一化,不管是哪种方法。

当然,还存在其它很多的Kernel:



Mercer定理



Logisitc regression vs SVMs:



①当n>=m,如n=10000,m=10~1000时,建议用logistic regression, 或者linear kernel的SVM

②如果n小,m不大不小,如n=1~1000,m=10~10000,建议用Gaussian Kernel的SVM

③如果n很小,m很大,如n=1~1000,m>50000,建议增加更多的feature并使用logistic regression, 或者linear kernel的SVM

原因,①模型简单即可解决,③如果还用Gaussian kernel会导致很慢,所以还选择logistic regression或者linear kernel

神经网络可以解决以上任何问题,但是速度是一个很大的问题。

参考:

Why use SVM? Tweet

机器学习(一)支持向量机(Support Vector Machine)

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

支持向量机通俗导论(理解SVM的三层境界)

支持向量机(三)核函数

SVM学习——核函数

支持向量机: Maximum Margin Classifier

扩展读物:

1.《支持向量机导论》,[英] Nello Cristianini / John Shawe-Taylor 著;

2.支持向量机导论一书的支持网站:http://www.support-vector.net/

3.《数据挖掘导论》,[美] Pang-Ning Tan / Michael Steinbach / Vipin Kumar 著;

4.《数据挖掘:概念与技术》,(加)Jiawei Han;Micheline Kamber 著;

5.《数据挖掘中的新方法:支持向量机》,邓乃扬 田英杰 著;

6.《支持向量机–理论、算法和扩展》,邓乃扬 田英杰 著;

7.支持向量机系列,pluskid

8.数据挖掘十大经典算法初探;

9.《模式识别支持向量机指南》,C.J.C Burges 著;

9.《统计学习方法》,李航著;

10.《统计自然语言处理》,宗成庆编著,第十二章、文本分类;

11.SVM入门系列,Jasper

12.最近邻决策和SVM数字识别的实现和比较,作者不详;

13.斯坦福大学机器学习课程原始讲义

14.斯坦福机器学习课程笔记

15.SMO算法的数学推导

16.数据挖掘掘中所需的概率论与数理统计知识、上;

17.关于机器学习方面的文章,可以读读:http://www.cnblogs.com/vivounicorn/category/289453.html

18.数学系教材推荐:http://blog.sina.com.cn/s/blog_5e638d950100dswh.html

19.《神经网络与机器学习(原书第三版)》,[加] Simon Haykin 著;

20.正态分布的前世今生:http://t.cn/zlH3Ygc

21.《数理统计学简史》,陈希孺院士著;

22.《最优化理论与算法(第2版)》,陈宝林编著;

23.A Gentle Introduction to Support Vector Machines in Biomedicine:http://www.nyuinformatics.org/downloads/supplements/SVM_Tutorial_2010/Final_WB.pdf,此PPT很赞,除了对引入拉格朗日对偶变量后的凸二次规划问题的深入度不够之外,其它都挺好,配图很精彩,本文有几张图便引自此PPT中;

24.来自卡内基梅隆大学carnegie mellon university(CMU)的讲解SVM的PPT:http://www.autonlab.org/tutorials/svm15.pdf

25.发明libsvm的台湾林智仁教授06年的机器学习讲义SVM:http://wenku.baidu.com/link?url=PWTGMYNb4HGUrUQUZwTH2B4r8pIMgLMiWIK1ymVORrds_11VOkHwp-JWab7IALDiors64JW_6mD93dtuWHwFWxsAk6p0rzchR8Qh5_4jWHC

http://staff.ustc.edu.cn/~ketang/PPT/PRLec5.pdf

26.Introduction to Support Vector Machines (SVM),By Debprakash Patnai M.E (SSA),https://www.google.com.hk/url?sa=t&rct=j&q=&esrc=s&source=web&cd=1&ved=0CCwQFjAA&url=http%3a%2f%2fwww%2epws%2estu%2eedu%2etw%2fccfang%2findex%2efiles%2fAI%2fAI%26ML-Support%2520Vector%2520Machine-1%2eppt&ei=JRR6UqT5C-iyiQfWyIDgCg&usg=AFQjCNGw1fTbpH4ltQjjmx1d25ZqbCN9nA

27.多人推荐过的libsvm:http://www.csie.ntu.edu.tw/~cjlin/libsvm/

28.《machine learning in action》,中文版为《机器学习实战》;

29.SMO算法的提出:Sequential Minimal Optimization A Fast Algorithm for Training Support Vector Machines:http://research.microsoft.com/en-us/um/people/jplatt/smoTR.pdf

30.VC维的理论解释:http://www.svms.org/vc-dimension/,中文VC维解释http://xiaoxia001.iteye.com/blog/1163338

31.来自NEC Labs America的Jason Weston关于SVM的讲义http://www.cs.columbia.edu/~kathy/cs4701/documents/jason_svm_tutorial.pdf

32.来自MIT的SVM讲义:http://www.mit.edu/~9.520/spring11/slides/class06-svm.pdf

33.PAC问题:http://www.cs.huji.ac.il/~shashua/papers/class11-PAC2.pdf

34.百度张潼老师的两篇论文:《Statistical behavior and consistency of classification methods based on convex risk minimization》http://home.olemiss.edu/~xdang/676/Consistency_of_Classification_Convex_Risk_Minimization.pdf,《Statistical analysis of some multi-category large margin classification methods》;

http://jacoxu.com/?p=39

35.《矩阵分析与应用》,清华张贤达著;

36.SMO算法的实现:http://blog.csdn.net/techq/article/details/6171688

37.常见面试之机器学习算法思想简单梳理:http://www.cnblogs.com/tornadomeet/p/3395593.html

38.矩阵的wikipedia页面:http://zh.wikipedia.org/wiki/%E7%9F%A9%E9%98%B5

39.最小二乘法及其实现:http://blog.csdn.net/qll125596718/article/details/8248249

40.统计学习方法概论:http://blog.csdn.net/qll125596718/article/details/8351337

41.http://www.csdn.net/article/2012-12-28/2813275-Support-Vector-Machine

42.A Tutorial on Support Vector Regression:http://alex.smola.org/papers/2003/SmoSch03b.pdf;SVR简明版:http://www.cmlab.csie.ntu.edu.tw/~cyy/learning/tutorials/SVR.pdf

43.SVM Org:http://www.support-vector-machines.org/

44.R. Collobert. Large Scale Machine Learning. Université Paris VI phd thesis. 2004:http://ronan.collobert.com/pub/matos/2004_phdthesis_lip6.pdf

45.Making Large-Scale SVM Learning Practical:http://www.cs.cornell.edu/people/tj/publications/joachims_99a.pdf

46.文本分类与SVM:http://blog.csdn.net/zhzhl202/article/details/8197109

47.Working Set Selection Using Second Order Information for Training Support Vector Machines:http://www.csie.ntu.edu.tw/~cjlin/papers/quadworkset.pdf

48.SVM Optimization: Inverse Dependence on Training Set Size:http://ml2008.cs.helsinki.fi/papers/266.pdf

49.Large-Scale Support Vector Machines: Algorithms and Theory:http://cseweb.ucsd.edu/~akmenon/ResearchExam.pdf

50.凸优化的概念:http://cs229.stanford.edu/section/cs229-cvxopt.pdf

51.Large-scale Non-linear Classification: Algorithms and Evaluations,Zhuang Wang,讲了很多SVM算法的新进展:http://ijcai13.org/files/tutorial_slides/te2.pdf

52.基于SMO算法实现SVM:http://www.cs.iastate.edu/~honavar/smo-svm.pdf

53.copper推荐的一些SVM相关的论文(当然,其中不少论文在上面的条目中都已经提到):http://c.blog.sina.com.cn/profile.php?blogid=68d0b92d89000h35

54.在线编辑Latex 公式:http://www.codecogs.com/latex/eqneditor.php?lang=zh-cn
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息