首页 > 代码库 > 将SVM用于多类分类

将SVM用于多类分类

转自:http://www.lining0806.com/%E5%B0%86svm%E7%94%A8%E4%BA%8E%E5%A4%9A%E7%B1%BB%E5%88%86%E7%B1%BB/


 

  SVM是一种典型的二类分类器,是采用最大间隔化策略来确定特征空间最优超平面的,也就是说它只能回答属于正类还是负类的问题。而现实中要解决的往往是多类分类问题,如何将一个二类分类器转换成一个多类分类器呢?

一、一对多方法

  比如有k个类别,每次分类都把1个类别作为正样本,其余k-1个类别作为负样本,依次类推。这样共有k个分类器。

分类时这k个分类器依次对相应类别回答“是”或“不是”,最后得到“是”的类别即为所属类别。

复杂度:k优点:分类速度快缺点:一对多,样本不均衡。分类重叠现象或者分类不可分现象。

二、一对一方法

  比如有k个类别,每次分类都把1个类别作为正样本,另外1个类别作为负样本,依次类推。这样共有k*(k-1)/2个分类器。

分类时这k*(k-1)/2个分类器依次回答属于两个类别中的哪一类,最后投票统计得票数最高的那个类别即为所属类别。

复杂度:k*(k-1)/2优点:没有分类不可分现象。缺点:分类重叠现象。

三、DAG方法

  DAG的结点从上到下依次为1,2,3,…,k-1个。这样共有k*(k-1)/2个分类器。 这种方法是构造一个DAG SVM,(有向无环的svm)。 还是像一对一方法那样来训练,只是在对一篇文章进行分类之前,先按照下面图的样子来组织分类器这样在分类时,我们就可以先问分类器“1对5”(意思是它能够回答“是第1类还是第5类”),如果它回答5,我们就往左走,再问“2对5”这个分类器,如果它还说是“5”,我们就继续往左走,这样一直问下去,就可以得到分类结果。

技术分享

复杂度:k-1优点:分类速度快,没有分类重叠现象或者分类不可分现象。缺点:分类错误累积(前面分类器分类错误,后面分类器无法纠正),从上到下节点的选取技巧(参照置信度)。

将SVM用于多类分类