机器学习 第九讲:Support Vector Machines 3

Optimal margin classifiers

前面我们讲过,对如下的原始的优化问题我们希望找到一个优化的边界分类器。

minγ,w,bs.t.12∥w∥2y(i)(wTx(i)+b)?1,i=1,...m

我们可以将约束条件改写成如下:

gi(w)=?y(i)(wTx(i)+b)+1?0

对于每一个训练样本,我们都有这样一个约束条件,而且从KKT条件我们知道,只有当训练样本的函数边界为1时,该训练样本的αi>0,我们看如下的一张图,其中的实线表示最大的边界分界线。

从图上可以看出,离分界线最近的点他们的边界最小,图上有三个点,分布在分界线两边的虚线上,因此,只有这三个αi—换句话说,只有这三个点对应的αi—是非零的,这三个点称为\textbf{支持向量},这也说明为什么支持向量的数量只占总样本数的一小部分。这也是支持向量机的由来,这种分类器只会用到训练样本中的支持向量,其它的训练样本并不起作用。

我们继续往下看,因为之前我们讨论了这个优化问题的对偶形式,需要注意的关键一点是,我们将利用样本之间的内积<x(i),x(j)>来解决这个优化问题。

我们利用向量内积这一点,也正是稍后介绍kernel函数的关键。

我们对该优化问题建立拉格朗日表达式,我们可以得到:

L(w,b,α)=12∥w∥2?∑i=1mαi[y(i)(wTx(i)+b)?1](1)

我们先求出这个问题的对偶形式,我们要先求出L(w,b,α)关于w,b的最小值(固定α),为了得到θD,我们先设L(w,b,α)关于w,b的偏导数为0,我们有:

▽wL(w,b,α)=w?∑i=1mαiy(i)x(i)=0

这意味着:

w=∑i=1mαiy(i)x(i)(2)

而对b的偏导数,我们有:

??bL(w,b,α)=∑i=1mαiy(i)=0(3)

将w的偏导数式-(2)代入拉格朗日表达式式-(1),简化后可以得到:

L(w,b,α)=∑i=1mαi?12∑i,j=1my(i)y(j)αiαj(x(i))Tx(j)?b∑i=1mαiy(i)

由式-(3)可知,上式的最后一项为0,因此我们有,

L(w,b,α)=∑i=1mαi?12∑i,j=1my(i)y(j)αiαj(x(i))Tx(j)

上式是L(w,b,α)关于w,b的的最小值,我们引入约束条件αi?0 和式-(3),可以得到如下的对偶优化函数:

maxαs.t.W(α)=∑i=1mαi?12∑i,j=1my(i)y(j)αiαj<x(i),x(j)>αi?0,i=1,...m∑i=1mαiy(i)=0

原来的优化问题转化为对偶优化问题之后,我们要求的是参数α,一旦求出参数参数α,根据式-(2)可以求出参数w,求出参数w之后(假设为w?),考虑原始的优化问题,我们可以得到截距b的值为:

b?=?maxi:y(i)=?1w?Tx(i)+mini:y(i)=1w?Tx(i)2

得到α,w,b之后,对于一个新的测试样本,我们可以计算wTx(i)+b的值,如果其大于0,那么我们可以预测其为正样本,y=1。但是利用式-(2),可以得到:

wTx(i)+b=(∑i=1mαiy(i)x(i))Tx+b=∑i=1mαiy(i)<x(i),x>+b

从上式可以看出,当我们求出参数α,那我们对于新的测试样本,只要计算测试样本和训练样本的内积就可以判断测试样本属于哪一类,而且我们知道,训练样本中的非支持向量对应的α为0,只有支持向量对应的α有作用,因此测试样本的预测值取决于支持向量与测试样本的内积。

Kernels

接下来,我们要介绍支持向量机中的kernel的概念,利用kernel,可以方便地处理高维甚至无穷多维的特征向量。我们先定义几个概念,我们称训练样本的原始数值为attributes (属性),而经过映射之后得到的新的数值称为features (特征),我们定义函数?为feature mapping (特征映射),特征映射就是将训练样本的原始数值映射到新的数值。

我们使用SVM的时候,可能不想使用训练样本的原始数值x,我们想利用一些新的特征?(x),这个对SVM的优化问题没有造成任何影响,我们只需要将前面式子里的x,换成?(x)就行了。

既然SVM的算法,可以表示所有的训练样本的内积<x,z>,意味着我们只要将所有的内积替换成:<?(x),?(z)>。特别地,给定一个特征映射?,我们定义相应的kernel 为

k(x,z)=?(x)T?(z)

那么,之前我们算法中用到<x,z>的地方,只要替换成k(x,z),那么我们的SVM算法可以利用特征?来学习。

现在,给定特征映射?,我们可以先找到特征?(x),?(z),然后通过求两个特征向量的内积可以很容易得到k(x,z),但是更有趣的是,一般来说k(x,z)的运算要比特征?(x),?(z)的运算更加高效,这样,我们可以利用SVM在特征映射?得到的特征空间里直接计算,而不用计算特征向量?(x)。

现在,我们从另外一个稍微不同的角度来看这个kernel,直观上,如果?(x),?(z)比较靠近,我们希望k(x,z)=?(x)T?(z)是一个比较大的值,相反地,如果?(x),?(z)离得比较远,那么我们希望k(x,z)=?(x)T?(z)的值会比较小,所以我们希望k(x,z)可以用来衡量?(x),?(z)的相似程度,或者说x,z的相似程度。

考虑到这一点,一个比较合理的kernel函数可以是高斯函数,

k(x,z)=exp(?∥x?z∥22σ2)

这个函数可以合理地估计x,z的相似度,当x,z比较靠近,则函数值为1,当x,z离得比较远,则值为0,在SVM中,这个称为gaussian kernel。一般来说,我们需要通过一些观察来确定给定的kernel是不是合理的kernel。

一个有效的kernel应该具备某些性质,现在假设k对于特征映射?来说是一个合理的kernel,考虑有限的m个点,{x(1),...x(m)},我们定义一个m×m的方阵K,方阵K中的元素为:Kij=k(x(i),x(j)),这个矩阵称为kernel matrix

如果k是一个合理的kernel,那么,Kij=k(x(i),x(j))=?(x(i))T?(x(j))=?(x(j))T?(x(i))=k(x(j),x(i))=Kji,因此,K一定是对称的,更进一步,假设?k(x)表示特征向量?(x)的第k个分量,我们发现,对于任何的向量z,存在以下的关系:

zTKz=∑i∑jziKijzj=∑i∑jzi?(x(i))T?(x(j))zj=∑i∑jzi∑k?k(x(i))T?k(x(j))zj=∑k∑i∑jzi?k(x(i))T?k(x(j))zj=∑k(∑izi?k(x(i)))2?0

从上式可以看出,矩阵K是半正定的,因此说,如果k是一个合理的kernel,则矩阵K是对称的半正定矩阵,Mercer定理给出了一个kernel是否合理的判断:

Marcer定理:假设kernel k满足映射关系 Rn×Rn→R,那么如果kernel k是一个合理的kernel,对于任意的有限的一组点{x(1),...x(m)},其对应的kernel 矩阵必须是对称半正定的。

将kernel应用到SVM,其好处是显而易见的,不过我们需要意识到,kernel的概念不仅仅可以用在SVM上,换句话说,如果一个学习算法需要用到输入向量的内积,即<x,z>,那么这个算法就可以利用kernel,今后我们会介绍到的一些算法都可以利用kernel,这个可以称为kernel trick

参考文献

Andrew Ng, “Machine Learning”, Stanford University.

时间: 2024-08-29 17:25:16

机器学习 第九讲:Support Vector Machines 3的相关文章

[机器学习] Coursera笔记 - Support Vector Machines

序言 机器学习栏目记录我在学习Machine Learning过程的一些心得笔记,包括在线课程或Tutorial的学习笔记,论文资料的阅读笔记,算法代码的调试心得,前沿理论的思考等等,针对不同的内容会开设不同的专栏系列. 机器学习是一个令人激动令人着迷的研究领域,既有美妙的理论公式,又有实用的工程技术,在不断学习和应用机器学习算法的过程中,我愈发的被这个领域所吸引,只恨自己没有早点接触到这个神奇伟大的领域!不过我也觉得自己非常幸运,生活在这个机器学习技术发展如火如荼的时代,并且做着与之相关的工作

机器学习 第七讲:Support Vector Machines 1

引言 这一讲及接下来的几讲,我们要介绍supervised learning 算法中最好的算法之一:Support Vector Machines (SVM,支持向量机).为了介绍支持向量机,我们先讨论"边界"的概念,接下来,我们将讨论优化的边界分类器,并将引出拉格朗日数乘法.我们还会给出 kernel function 的概念,利用 kernel function,可以有效地处理高维(甚至无限维数)的特征向量,最后,我们会介绍SMO算法,该算法说明了如何高效地实现SVM. Margi

斯坦福CS229机器学习课程笔记五:支持向量机 Support Vector Machines

SVM被许多人认为是有监督学习中最好的算法,去年的这个时候我就在尝试学习.不过,面对长长的公式和拗口的中文翻译最终放弃了.时隔一年,看到Andrew讲解SVM,总算对它有了较为完整的认识,总体思路是这样的:1.介绍间隔的概念并重新定义符号:2.分别介绍functional margins与geometric margins:3.由此引出最大间隔分类器,同时将最优化问题转化为凸函数的优化问题:4.补充了拉格朗日对偶性的知识:5.利用拉格朗日对偶性,推导最大间隔分类器最优化的对偶问题,即SVM的最优

Stanford机器学习---第九讲. 聚类

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

Machine Learning - XII. Support Vector Machines (Week 7)

http://blog.csdn.net/pipisorry/article/details/44522881 机器学习Machine Learning - Andrew NG courses学习笔记 Support Vector Machines支持向量机 {SVM sometimes gives a cleaner and more powerful way of learning complex nonlinear functions} Optimization Objective优化目标

(原创)Stanford Machine Learning (by Andrew NG) --- (week 7) Support Vector Machines

本栏目内容来源于Andrew NG老师讲解的SVM部分,包括SVM的优化目标.最大判定边界.核函数.SVM使用方法.多分类问题等,Machine learning课程地址为:https://www.coursera.org/course/ml 大家对于支持向量机(SVM)可能会比较熟悉,是个强大且流行的算法,有时能解决一些复杂的非线性问题.我之前用过它的工具包libsvm来做情感分析的研究,感觉效果还不错.NG在进行SVM的讲解时也同样建议我们使用此类的工具来运用SVM. (一)优化目标(Opt

初译 Support Vector Machines:A Simple Tutorial(一)

从本次开始我将开始尝试着逐章翻译一下 Alexey Nefedov的<Support Vector Machines:A Simple Tutorial>这本教材,这可是我们导师极力推荐的SVM教材,看了好久一直感觉一脸懵逼,索性开坑翻译一下吧,也当是加深理解,毕竟我也是一知半解,如果翻译的有不对的地方还望大佬们斧正,欢迎提意见,欢迎讨论. 嗯,就是这样. (一)Introduction 在本章节中将会介绍一些用于定义支持向量机(SVM)的基础的概念,这些概念对于理解SVM至关重要,假定读者了

Support Vector Machines for classification

Support Vector Machines for classification To whet your appetite for support vector machines, here’s a quote from machine learning researcher Andrew Ng: “SVMs are among the best (and many believe are indeed the best) ‘off-the-shelf’ supervised learni

OpenCV Tutorials &mdash;&mdash; Support Vector Machines for Non-Linearly Separable Data

与上一篇类似 ~~ 只不过是非线性数据 #include "stdafx.h" #include <iostream> #include <opencv2/core/core.hpp> #include <opencv2/highgui/highgui.hpp> #include <opencv2/ml/ml.hpp> #define NTRAINING_SAMPLES 100 // Number of training samples

scikit-learn(工程中用的相对较多的模型介绍):1.4. Support Vector Machines

参考:http://scikit-learn.org/stable/modules/svm.html 在实际项目中,我们真的很少用到那些简单的模型,比如LR.kNN.NB等,虽然经典,但在工程中确实不实用. 今天我们关注在工程中用的相对较多的SVM. SVM功能不少:Support vector machines (SVMs) are a set of supervised learning methods used for classification, regression and outl