前面七篇文章(从间隔最大化,支持向量开始)系统地推导了适用于二类分类(binary/two-class classification)问题的SVM。在此基础上可以将SVM推广到多类分类问题。在理解二类分类SVM后,多类分类SVM也不难理解。
本文对多类分类SVM做简单介绍,内容如下:
前文在数据集只有两类 的情况下推导了二类分类SVM(为方便起见,以下称binary SVM)。现在介绍如何将SVM推广到数据有 个类的分类问题。
多类分类问题描述如下(参考文献[6]):
给定含 个样本的训练集 ,其中 维特征向量 ,类标签 , 。训练集数据共 个类。任务是找到决策函数 (或者说一个规则)用于预测新数据的类别。
成对分类方法(文献[6])是基于binary SVM的,也叫one-against-one(文献[2-3]),pairwise classification(文献[1]引入)。one-against-one适合实际应用(文献[3]),也是LIBSVM库采用的方法(文献[2])。
设训练集数据共 个类,one-against-one方法是在每两个类之间都构造一个binary SVM。以下图(a)为例,共三类(二维)数据,虚线 表示1类和2类数据之间的binary SVM的决策边界, 表示1类和3类之间的决策边界, 则表示2类和3类之间的决策边界。
对于第 类和第 类数据,训练一个binary SVM即求解二次规划问题:
其中,上标表示是 类和 类之间binary SVM的参数;下标 表示 类和 类的并集中样本的索引; 表示输入空间到特征空间的非线性映射。
(当然,求解的是 的对偶问题。)
索引 ,一共需训练 个binary SVMs。平均每个类包含 个样本,所以平均每个对偶问题包含 个变数。
第 类和第 类之间binary SVM的决策函数:
(1)式用于判断数据是属于 类还是 类。
对于新数据,采用voting strategy(投票策略)进行分类:
图(b)所示为根据上述投票策略画出的决策边界(文献[1])。若新数据位于橙色区域,则其对1类的得票为3票,会被预测为1类;同理,位于蓝色和红色区域的数据会分别被预测为2类和3类。至于中心灰色区域,对三个类的得票均为1票。
另外一种基于binary SVM的方法是一类对余类方法(文献[6]),也叫one-against-all(文献[3]),one-against-the-rest(文献[4])。
这种方法也好理解:对于每一个类,将其作为+1类,而其余 个类的所有样本作为-1类,构造一个binary SVM。如下图(a)所示,对于黄点所示的1类,将2类和3类都当成-1类,构造binary SVM,其决策边界为 ;对于蓝点所示的2类,则将1类和3类都当成-1类,构造binary SVM,其决策边界为 ;类似地得到 。
一般地,构造一个binary SVM将第 类与其余 类分开,即求解二次规划问题:
其中,下标 表示样本的索引;上标 ,一共需训练 个binary SVMs,求解 个包含 个变数的二次规划问题。
为避免平票,通常去掉决策函数(1)中的符号函数(signum function),第 类的决策函数采用:
(2)式可看作新数据 到第 条决策边界的带符号的函数间隔『。因为在问题 中我们把第 类当成+1类,所以如果 属于第 类,那么一般来说(2)式应该是正的。
对于 , 个决策函数一共有 个输出。我们选择使(2)式最大的类 作为对 的预测(winner-takes-all, [1]),也就是说,采用如下的决策函数来对 进行分类:
图(b)所示为相应的决策边界(文献[1])。若 位于橙色区域,则 最大, 会被预测为1类;同理,位于蓝色区域 最大,会被预测为2类;位于红色区域 最大,会被预测为3类。
<不平衡数据,unbalanced data(文献[2])>
在某些情况下,不同类别的样本数量是不平衡的。如采用一类对余类方法时,-1类样本的数量可能比+1类样本多很多。
个人理解:这会使得问题 目标函数中的惩罚项主要由-1类样本的error组成,模型偏向于-1类。
这种情况可以通过对两类数据设置不同的惩罚参数(penalty parameter)来处理,优化问题变为:
其中, 分别表示+1类和-1类的惩罚参数。对于样本数更少的+1类,采用更大的惩罚参数 。
相应的对偶问题为:
更一般地,可以对每个样本都设置一个惩罚参数 。
<参数选择,parameter selection>
各个binary SVM可以通过交叉验证(cross-validation)来选择各自的最优参数(惩罚参数和核参数);也可对所有binary SVM采用相同的参数。
文献[7]Section 8比较了这两种方法在one-against-one的 上的应用。文献[8]也有比较研究。这里就不做介绍了。
对于多类分类SVM,还有一种只需求解一个优化问题的方法(文献[4-5])。这种方法类似于one-against-all,构造 个二类的决策函数,其中第 个函数 将第 类和其余类分开。形成的优化问题如下:
解这个优化问题得到全部 个决策函数。
个人理解:不等式约束(3)表示第 类数据到第 个边界的函数间隔应该比到其余 个边界都要远。
决策函数为:
文献[4-5]推导了问题 的对偶问题。
文献[3]比较了几种多类分类SVM的方法,并表明one-against-one适合实际应用。
关于支持向量机的学习暂时先到这里吧。至于 ,sci-kit learn(sklearn)库的svm模块等,以后有机会再继续学习。
[1] Krebel, U. H.-G. 1998. Pairwise classification and support vector machines. In Advances in Kernel Methods – Support Vector Learning, B. Scholkopf, C. J. C. Burges, and A. J. Smola, Eds., MIT Press, Cambridge, MA, 255-268.
[2] C. C. Chang and C. J. Lin. 2001. LIBSVM: a library for support vector machines. http://www.csie. http://ntu.edu.tw/cjlin/libsvm.
[3] C. W. Hsu and C. J. Lin. 2002. A comparison of methods for multi-class support vector machines. IEEE Trans. Neural Netw. 13, 2, 415-425.
[4] J. Weston and C. Watkins. 1998. Multi-class support vector machines. Technical Report CSD-TR-98-04, Department of Computer Science, Royal Holloway, University of London.
[5] J. Weston and C. Watkins. Support vector machines for multi-class pattern recognition. In Proceedings of the Seventh European Symposium on Artificial Neural Networks, April 1999.
[6] 邓乃扬,田英杰,数据挖掘中的新方法——支持向量机,科学出版社,北京,2004年。
[7] P. H. Chen, C. J. Lin, and B. Scholkopf. 2005. A tutorial on -support vector machines. Appl. Stochas. Models Bus. Indust. 21, 111-136.
[8] W. C. Kao, K. M. Chung, C. L. Sun, and C. J. Lin. 2004. Decomposition methods for linear support vector machines. Neural Computation, 16:1689-1704.
推荐阅读: