支持向量机SVM—实现多分类问题的解决方案

支持向量机SVM—实现多分类问题的解决方案

前言

众所周知,支持向量机SVM是机器学习中典型的二值分类算法。但现实生活中,有很多实际应用是没有办法用简单的二值分类器去完成分类的。因此,为了拓展支持向量机SVM的应用场景,必须考虑在多分类情况下的算法实现。

一、支持向量机SVM如何应用在多分类问题中?

原本应用在二值分类上的SVM算法是否可以应用在多分类问题上呢?答案是肯定的。

通过重新构造后。SVM算法便可以应用到多分类问题中去。具体的解决方案主要有两大类,第一类是直接法,这种方法的核心是直接修改目标函数,将多分类问题中的多个参数整合到一个函数中,。这种方法看似简单,但其计算复杂度比较高,实现起来比较困难,只适合用于小型问题中。另一类是间接法,主要是通过组合多个二分类器来实现多分类器的构造,常见的方法有one-against-oneone-against-all两种。

二、解决方案

1.One-Versus-Rest(一对多)

训练时依次把某个类别的样本归为一类,其他剩余的样本归为另一类,这样k个类别的样本就构造出了k个SVM。分类时将未知样本分类为具有最大分类函数值的那类。

拿文章分类举例,比如我们有5个文章类别,第一次就把类别1的样本定为正样本,其余2,3,4,5的样本合起来定为负样本,这样得到一个两类分类器,它能够指出一篇文章是还是不是第1类的;第二次我们把类别2 的样本定为正样本,把1,3,4,5的样本合起来定为负样本,得到一个分类器,如此下去,我们可以得到5个这样的两类分类器(总是和类别的数目一致)。到了有文章需要分类的时候,我们就拿着这篇文章挨个分类器的问:是属于你的么?是属于你的么?哪个分类器点头说是了,文章的类别就确定了。

这种方法的好处是每个优化问题的规模比较小,而且分类的时候速度很快(只需要调用5个分类器就知道了结果)。但有时也会出现两种很尴尬的情况,例如拿一篇文章问了一圈,每一个分类器都说它是属于它那一类的,或者每一个分类器都说它不是它那一类的,前者叫分类重叠现象,后者叫不可分类现象。分类重叠倒还好办,随便选一个结果都不至于太离谱,或者看看这篇文章到各个超平面的距离,哪个远就判给哪个。不可分类现象就着实难办了,只能把它分给第6个类别了……更要命的是,本来各个类别的样本数目是差不多的,但“其余”的那一类样本数总是要数倍于正类(因为它是除正类以外其他类别的样本之和嘛),这就人为的造成了“数据集偏斜”问题。

2.One-Versus-One(一对一)

这种方案的具体做法是在任意两类样本之间设计一个SVM,因此k个类别的样本就需要设计k(k-1)/2个SVM。当对一个未知样本进行分类时,最后得票最多的类别即为该未知样本的类别。

每次选一个类的样本作正类样本,而负类样本则变成只选一个类(称为“一对一”的方法),这就避免了前面所提到的数据偏斜。因此过程就是算出这样一些分类器,第一个只回答“是第1类还是第2类”,第二个只回答“是第1类还是第3类”,第三个只回答“是第1类还是第4类”,如此下去,你也可以马上得出,这样的分类器应该有5 X 4/2=10个(通式是,如果有k个类别,则总的两类分类器数目为k(k-1)/2)。虽然分类器的数目多了,但是在训练阶段(也就是算出这些分类器的分类平面时)所用的总时间却比“一对多”方法少很多,在真正用来分类的时候,把一篇文章扔给所有分类器,第一个分类器会投票说它是“1”或者“2”,第二个会说它是“1”或者“3”,让每一个都投上自己的一票,最后统计票数,如果类别“1”得票最多,就判这篇文章属于第1类。这种方法显然也会有分类重叠的现象,但不会有不可分类现象,因为总不可能所有类别的票数都是0。看起来够好么?其实不然,想想分类一篇文章,我们调用了多少个分类器?10个,这还是类别数为5的时候,类别数如果是1000,要调用的分类器数目会上升至约500,000个(类别数的平方量级)。这如何是好?

3.Directed Acyclic Graph SVM(有向无环图)

是由PIatt提出的决策导向的循环图DAG导出的,是针对“一对一”SVMS存在误分,拒分现象提出的。这种方法的训练过程类似于“一对一”方法,类别数增加时,速度快于前两者,且简单易行,对于一般规模的多类分类问题行之有效。是基于一对一方式的优化,不会出现拒分。

这样在分类时,我们就可以先问分类器“1对5”(意思是它能够回答“是第1类还是第5类”),如果它回答5,我们就往左走,再问“2对5”这个分类器,如果它还说是“5”,我们就继续往左走,这样一直问下去,就可以得到分类结果。好处在哪?我们其实只调用了4个分类器(如果类别数是k,则只调用k-1个),分类速度飞快,且没有分类重叠和不可分类现象!
《支持向量机SVM—实现多分类问题的解决方案》
另外,由于其特殊的结构,故有一定的容错性(体现在最后一层得出分类时,一个样本的类别判定依据可以来自两个SVM),分类精度较一般的二叉树方法高。然而,由于存在自上而下的“误差累积”现象是层次结构固有弊端,DAG-SVMS也逃脱不掉。即如果在某个节点上发生了分类错误,则会把分类错误延续到该结点的后续结点上。

4.层次支持向量机

决策树的基本思想是从根节点开始,采用某种方法将该结点所包含的类别划分为两个子类,然后再对两个子类进一步划分,如此循环,直到子类中只包含一个类别为止。这样就得到一个倒立的二叉树。最后,在二叉树各决策节点训练支持向量机分类器,实现对识别样本的分类。决策树支持向量机多分类方法有很多种,不同方法的主要区别在于设计树结构的方法不同。

总结

用SVM解决多分类问题存在困难。传统的SVM就是解决二分类问题的,上面有介绍不少解决多分类问题的SVM技巧,不过各种方法都一定程度上的缺陷。可以根据自身需要,灵活使用SVM来解决多分类问题。

    原文作者:没有什么是一杯奶茶解决不了的
    原文地址: https://blog.csdn.net/weixin_44822636/article/details/110820652
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞