摘录自:
http://www.blogjava.net/zhenandaci/archive/2009/02/13/254519.html
上回说到对于文本分类这样的不适定问题(有一个以上解的问题称为不适定问题),需要有一个指标来衡量解决方案(即我们通过训练建立的分类模型)的好坏,而分类间隔是一个比较好的指标。
在进行文本分类的时候,我们可以让计算机这样来看待我们提供给它的训练样本,每一个样本由一个向量(就是那些文本特征所组成的向量)和一个标记(标示出这个样本属于哪个类别)组成。如下:
Di=(xi,yi)
xi就是文本向量(维数很高),yi就是分类标记。
在二元的线性分类中,这个表示分类的标记只有两个值,1和-1(用来表示属于还是不属于这个类)。有了这种表示法,我们就可以定义一个样本点到某个超平面的间隔:
δi=yi(wxi+b)
这个公式乍一看没什么神秘的,也说不出什么道理,只是个定义而已,但我们做做变换,就能看出一些有意思的东西。
首先注意到如果某个样本属于该类别的话,那么wxi+b>0(记得么?这是因为我们所选的g(x)=wx+b就通过大于0还是小于0来判断分类),而yi也大于0;若不属于该类别的话,那么wxi+b<0,而yi也小于0,这意味着yi(wxi+b)总是大于0的,而且它的值就等于|wxi+b|!(也就是|g(xi)|)
现在把w和b进行一下归一化,即用w/||w||和b/||w||分别代替原来的w和b,那么间隔就可以写成
这个公式是不是看上去有点眼熟?没错,这不就是解析几何中点xi到直线g(x)=0的距离公式嘛!(推广一下,是到超平面g(x)=0的距离, g(x)=0就是上节中提到的分类超平面)
小Tips:||w||是什么符号?||w||叫做向量w的范数,范数是对向量长度的一种度量。我们常说的向量长度其实指的是它的2-范数,范数最一般的表示形式为p-范数,可以写成如下表达式
向量w=(w1, w2, w3,…… wn)
它的p-范数为
看看把p换成2的时候,不就是传统的向量长度么?当我们不指明p的时候,就像||w||这样使用时,就意味着我们不关心p的值,用几范数都可以;或者上文已经提到了p的值,为了叙述方便不再重复指明。
当用归一化的w和b代替原值之后的间隔有一个专门的名称,叫做几何间隔,几何间隔所表示的正是点到超平面的欧氏距离,我们下面就简称几何间隔为“距离”。以上是单个点到某个超平面的距离(就是间隔,后面不再区别这两个词)定义,同样可以定义一个点的集合(就是一组样本)到某个超平面的距离为此集合中离超平面最近的点的距离。下面这张图更加直观的展示出了几何间隔的现实含义:
H是分类面,而H1和H2是平行于H,且过离H最近的两类样本的直线,H1与H,H2与H之间的距离就是几何间隔。
之所以如此关心几何间隔这个东西,是因为几何间隔与样本的误分次数间存在关系:
其中的δ是样本集合到分类面的间隔,R=max ||xi|| i=1,...,n,即R是所有样本中(xi是以向量表示的第i个样本)向量长度最长的值(也就是说代表样本的分布有多么广)。先不必追究误分次数的具体定义和推导过程,只要记得这个误分次数一定程度上代表分类器的误差。而从上式可以看出,误分次数的上界由几何间隔决定!(当然,是样本已知的时候)
至此我们就明白为何要选择几何间隔来作为评价一个解优劣的指标了,原来几何间隔越大的解,它的误差上界越小。因此最大化几何间隔成了我们训练阶段的目标,而且,与二把刀作者所写的不同,最大化分类间隔并不是SVM的专利,而是早在线性分类时期就已有的思想。
分享到:
相关推荐
SVM入门(三)线性分类器Part 2 SVM入门(四)线性分类器的求解——问题的描述Part1 SVM入门(五)线性分类器的求解——问题的描述Part2 SVM入门(六)线性分类器的求解——问题的转化,直观角度 SVM入门(七)为何...
简单的SVM线性分类的仿真实验,包括测试数据跟源码,易学
使用SVM对数据进行分类,且进行结果显示,可查阅SVM相关资料,对该代码及其算法进行进一步了解。
采用matlab进行支持向量机svm的线性分类,每一句都有详尽的解释,方便大家学习交流
利用支持向量机(SVM)求解分类问题,包含线性分类方法,非线性分类方法,高斯核分类方法等小实例
SVM-非线性分类数据集
分类器设计之线性分类器和线性SVM(Matlab代码 具休请参考本人博客: http://blog.csdn.net/ranchlai/article/details/10303031
线性支持向量机训练文件 MATLAB代码 可运行
线性SVM分类器
模式识别 北京大学 本科生课程 课件 (包括贝叶斯模型、最近邻、SVM、线性与非线性分类器、boosting、统计学习、非监督学习等)
SVM入门需要的欢迎下载
四种流行的SVM分类器工具箱,很全。rar
基于SVM实现了对于数据的线性分类,并且附带了使用的数据
模式识别线性SVM分类器liblinear-1.5模式识别线性SVM分类器liblinear-1.5模式识别线性SVM分类器liblinear-1.5模式识别线性SVM分类器liblinear-1.5模式识别线性SVM分类器liblinear-1.5
SVM是一个线性分类器,但是比起一般的线性分类器,SVM选择的是鲁棒性最好、泛化能力最强的分界超平面,将数据分为两个部分。而选择最好的决策边界是根据支持向量所决定的,也就是说对于整个数据集,我只需要支持向量...
SVM非线性核函数程序
该方法基于为训练集中的每个示例训练单独的线性SVM分类器。因此,这些示例SVM中的每一个都由一个正实例和数百万个负定义。尽管每个检测器对其示例都非常特定,但我们从经验上观察到,这样的示例-SVM的集成提供了令人...
用SVM方法制作的分类器1 Training Click “Learning “ from Toolbar or Menu, a dialog will appears like following : You can browse and choose the training sample data file(*.trn), or write the data ...
用线性SVM解决非线性问题,基于MATLAB平台的数据分类代码
Matlab的SVM入门整理文档-SVM入门.rar 首先非常感谢matlab中文论坛的人工智能版主在SVM知识方面做的贡献,《SVM入门》文档就是在论坛上下的,但是有一缺点就是板书不太好看,因此我将该文档调整了一下,看上去舒服...