设万维读者为首页 广告服务 联系我们 关于万维
简体 繁体 手机版
分类广告
版主:诤友
万维读者网 > 教育学术 > 帖子
关于支持向量机(Support Vector Machines)
送交者: SVM 2003年10月31日19:39:14 于 [教育学术] 发送悄悄话

1. 关于SVM:SVM的理论背景

支持向量机(Support Vector Machines)是一种分类器,最早由Vapnik在
1979年提出,当时没有得到重视,随后Vapnik等人花了很长时间完善统计
模式识别的基本数学理论,随着结构风险最小准则的提出,SVM的理论基
础基本完备,终于引起注意。直到最近,它才成为一个研究上的热点,并
开始得到非常广泛的应用。和传统的分类器如神经网络相比,它从理论上
解决了神经网络难以控制自身推广能力的问题。说到这一点大家可能都有
体会,神经网络的收敛条件是比较难定的,理论上,训练时的分类误差可
以一直减小,但是并不是在训练时误差越小,识别时的错误率就越小。为
什么会这样,说起来非常简单,就是因为训练的错误率,并不等于识别的
错误率,它们之间也不成简单的正比例关系。因此难以控制,就会有过学
习现象的出现。

Vapnik极其推崇理论指导实际,强烈反对"只要在工程上有用就是正确
的"这种说法,这或许是他对神经网络嗤之以鼻而穷数十年心力另起SVM这个
炉灶的原因所在。(说到这里只有两个字:弓虽,~~汗……)

支持向量机克服了推广能力难以控制的问题,其根本就在于,找到了
计算实际识别中分类器错误率上界(注意只是上界)的方法。

关于具体的数学推导,可参考Vapnik著,张学工译的“统计学习理
论的本质”,Savy已经在前面隆重推介过了。观点明确,论证也很清晰,
可惜其中的数学推导比较复杂,偶到现在还是只能看个大概:(

大概说来,Vapnik等人推导出,分类器识别率的上界由训练时的错误
率(也称经验风险)及分类器的复杂程度共同决定,而分类器的复杂度
,又是一个关于分类函数(Vapnik认为一个分类器等效于一族分类函数)
VC维的函数。这个复杂度对识别的影响,就是统计学习理论中所强调的结
构风险。

以二分类问题为例,在SVM的实际学习过程中,其目标是,找到一个
特征空间的分类超平面,在两类完全可分的条件下,使两类之间的
"margin"最大。这个"margin",就是训练样本到平面的最小距离的两倍。
如果有一些样本点是无法分开的,或者,有时为了达到最大化"margin"
的目的,需要牺牲一些样本,而使"margin"尽可能大,这个时候,对
"margin"内部的点,在计算分类代价时要加惩罚。这样一个过程,相当
于在经验风险固定的情况下,最小化结构风险。

按我的理解,这样的训练过程,基本上可以说是有控制的,但是
仍然无法从理论上保证得到最小实际风险。不知道对不对,欢迎
大家指正。


2. 关于SVM:优化算法的研究

SVM的研究,包括具体应用、核函数的研究及算法优化三大主题(
也许有更多,恕鄙人孤陋寡闻)。由于应用往往由性能决定,因此先
说算法。

前文提到,寻找最优分类面,最大化"margin"是SVM的学习终点,但
是要实现谈何容易。为了说明其中的难点,必须提到一些数学。

假设分类超平面为w(*)x-b=0,其中(*)为点积,根据分类公式:
f(x)=sgn(w(*)x-b),将所有样本分成两类。这个超平面还有两个平行的
超平面,分别定义为:

H1: y=w(*)x-b=1, H2: y=w(*)x-b=-1

在完全可分的情况下,如果不允许这两个平面之间有样本点,而允许平面
上有样本点存在,则这两个平面的距离就是上面说的"margin"。

数学上的目标至此定下来了,就是在平面之间无样本点,平面上可以
有样本点的条件下,不断调整w和b,使两个平面的距离最大。如果样本非
完全可分,还要考虑分类惩罚,给每个样本加入一个松弛变量。

暂时只考虑完全可分的情况,求解目标可写为:

min||w(*)w||, subject to y(w(*)x-b)>=1, i=1...N

这是一个典型的二次优化问题。它的标准解法是有的,就是引入拉格
朗日算子把这些式子合并成一个方程,然后当方程关于w和b的偏导数为零
时,即得最优解。

问题不在这里,问题是,一个样本对应于一个约束条件方程,一个方
程要解出一个拉格朗日算子,那么,如果样本有10000个,这10000多个方
程,解起来是个什么概念?

不要说我们有线性代数。一个10000×10000的浮点数矩阵(当然大
部分都是零),就算只想一次放到计算机内存里,也实在是一件非常奢侈的
事情,何况大部分计算程序根本对付不了这么大块头的东东,更不用提矩
阵相乘、求逆等等运算了。

因此SVM的首要任务就是:如何解决这个问题?直观的看,当然是想办
法把一个大规模的问题分解成一系列小规模问题,还要考虑效率等因素,
这方面的研究是比较多的。

比较有影响的算法包括Vapnik本人的Chunking算法,Mit的Osuna等人
提出的Osuna算法,及微软的J.Platt提出的SMO算法等。这个问题根本是
个最优化问题。

目前SVM研究的几个比较难以解决的问题有:

1)实现算法;
这个就不多说了

2)模型选择;
即解决如何确定核函数参数和正则参数。

3)简化SVM;
如何在保证学习机器推广能力的基础上,减少SV数目。加快决策过程。

4)多类分类;
虽然有很多方法,但目前就实验结果来看,还是1VS1的好。

5)向无监督学习的推广
理论和方法方面的研究都不多。

如果只是将SVM作为工具,建议用LIBSVM,VC++实现,写得比较易懂,
容易修改。并提供了很多功能。


3. 关于SVM:核函数

SVM中的核函数是非常重要的。它大致有两个作用,一是将线性分类面扩展
为非线性分类面,然后实现非线性可分;二是确保分类超平面是平滑的,避
免overfiting现象。

SVM的标准核函数有三个:多项式、RBF(径向基函数)和多层感知机
,核函数和实际问题可能是有联系的。这三个核函数是不够用的。其它
的比较经典的核函数算法包括:

Kernel Fisher Discriminant核函数(FD Kernel);
Kernel Principal Component Analysis(PCA Kernel);
Relevance Vector Machines;
Kernel Independent Component Analysis (Kernel ICA);

关于核函数的研究,我所知不多,所用过的,只有FD Kernel,
这是一种基于类内类间判据的核函数,至少在样本集稀疏的情况下,
效果要比标准核函数好得多。

以上关于核函数的说明,欢迎高人补充。


4. 关于SVM:一些感想和重要的网络资源

关于SVM的应用,由于实在太多,我就不敢班门弄斧了。目前
应该主要有数据挖掘、分类、回归等等。

Vapnik在推进统计学习理论研究的过程中有两个比较著名的观
点,一是不赞同"有用即合理",二是下面这句话:

"Never try to solve a problem that is more general than the
one you actually want to solve!"

大概的意思,可能是一要有严格的理论指导,二是不要把具体问题转
换成一个更一般化的问题来解决(可能是因为一般化的问题更难)。

因此,对于缺乏严格数学基础的理论,如神经网络,遗传算法(这
个还好些)等,相信他是持不乐观的态度的。贯穿统计学习理论的,就
是数学数学数学,只有推导,很少见到进化之类的观点。不知道这个在
以后是否会有所变化。也许推动这个变化的,就是看到这篇的诸位也说
不定:)

下面是一些关于SVM的网络资源。

http://www.cs.ualberta.ca/~newton/mlrg/links.html
几乎所有研究SVM的牛人和著名的网站在上面都有收录,推荐

http://svmlight.joachims.org/
SVMlight的网站,提供源码和使用说明,如果下不了,可以向
joachims本人要,我这里也有:)

http://www.csie.ntu.edu.tw/~cjlin/
有LIBSVM,是一个台湾人,这个人好像比较活跃。

http://www.research.microsoft.com/~jplatt/
从上面某个链接可以下SVM-SMO源码,如果找不到就跟我要吧

还有一个osusvm的MATLAB工具箱,但是不开放源码,是从LIBSVM
改写过来的,网址找不到了,上GOOGLE搜一把吧。

http://www.ics.uci.edu/~mlearn/MLRepository.html
UCI Machine Learning Repository download
研究机器学习, 发表paper必备,推荐

0%(0)
标 题 (必选项):
内 容 (选填项):
实用资讯
回国机票$360起 | 商务舱省$200 | 全球最佳航空公司出炉:海航获五星
海外华人福利!在线看陈建斌《三叉戟》热血归回 豪情筑梦 高清免费看 无地区限制
一周点击热帖 更多>>
一周回复热帖
历史上的今天:回复热帖
2002: 悼念田长霖:人本是大地的过客
2002: 交大发展之怪现象