SVM多分类的两种方式

以下内容参考:https://www.cnblogs.com/CheeseZH/p/5265959.html

                       http://blog.csdn.net/rainylove1/article/details/32101113

                      王正海《基于决策树多分类支持向量机岩性波谱分类》

       SVM本身是一个二值分类器,SVM算法最初是为二值分类问题设计的,当处理多类问题时,就需要构造合适的多类分类器。 目前,构造SVM多类分类器的方法主要有两类,直接法、间接法。

一 直接法  

    直接在目标函数上进行修改,将多个分类面的参数求解合并到一个最优化问题中,通过求解该最优化问题“一次性”实现多类分类。这种方法看似简单,但其计算复杂度比较高,实现起来比较困难只适合用于小型问题中;

二 间接法

   主要是通过组合多个二分类器来实现多分类器的构造,常见的方法有one-against-one和one-against-all两种。

(1)一对多法(one-versus-rest,简称OVR SVMs)

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

  假如我有四类要划分(也就是4个Label),他们是A、B、C、D。

  于是我在抽取训练集的时候,分别抽取

  (1)A所对应的向量作为正集,B,C,D所对应的向量作为负集;

  (2)B所对应的向量作为正集,A,C,D所对应的向量作为负集;

  (3)C所对应的向量作为正集,A,B,D所对应的向量作为负集;

  (4)D所对应的向量作为正集,A,B,C所对应的向量作为负集;

  使用这四个训练集分别进行训练,然后的得到四个训练结果文件。

  在测试的时候,把对应的测试向量分别利用这四个训练结果文件进行测试。

  最后每个测试都有一个结果f1(x),f2(x),f3(x),f4(x)。

  于是最终的结果便是这四个值中最大的一个作为分类结果。

评价

优点:训练k个分类器,个数较少,其分类速度相对较快。

 缺点:

  ①每个分类器的训练都是将全部的样本作为训练样本,这样在求解二次规划问题时,训练速度会随着训练样本的数量的增加而急剧减慢

  ②同时由于负类样本的数据要远远大于正类样本的数据,从而出现了样本不对称的情况,且这种情况随着训练数据的增加而趋向严重。解决不对称的问题可以引入不同的惩罚因子,对样本点来说较少的正类采用较大的惩罚因子C

  ③还有就是当有新的类别加进来时,需要对所有的模型进行重新训练

从“一对多”的方法又衍生出基于决策树的分类:      

      首先将所有类别分为两个类别,再将子类进一步划分为两个次级子类,如此循环下去,直到所有的节点都只包含一个单独的类别为止,此节点也是二叉树树种的叶子。该分类将原有的分类问题同样分解成了一系列的两类分类问题,其中两个子类间的分类函数采用SVM。下图引用出自于王正海《基于决策树多分类支持向量机岩性波谱分类》

 SVM多分类的两种方式_第1张图片


  

(2)一对一法(one-versus-one,简称OVO SVMs或者pairwise)

     其做法是在任意两类样本之间设计一个SVM,因此k个类别的样本就需要设计k(k-1)/2个SVM。

  当对一个未知样本进行分类时,最后得票最多的类别即为该未知样本的类别。

  Libsvm中的多类分类就是根据这个方法实现的。

  假设有四类A,B,C,D四类。在训练的时候我选择A,B; A,C; A,D; B,C; B,D;C,D所对应的向量作为训练集,然后得到六个训练结果,在测试的时候,把对应的向量分别对六个结果进行测试,然后采取投票形式,最后得到一组结果。

  投票是这样的:
  A=B=C=D=0;
  (A,B)-classifier 如果是A win,则A=A+1;otherwise,B=B+1;
  (A,C)-classifier 如果是A win,则A=A+1;otherwise, C=C+1;
  ...
  (C,D)-classifier 如果是A win,则C=C+1;otherwise,D=D+1;
  The decision is the Max(A,B,C,D)

评价:这种方法虽然好,但是当类别很多的时候,model的个数是n*(n-1)/2,代价还是相当大的。

 评价:

  优点:不需要重新训练所有的SVM,只需要重新训练和增加语音样本相关的分类器在训练单个模型时,相对速度较快

  缺点:所需构造和测试的二值分类器的数量关于k成二次函数增长总训练时间和测试时间相对较慢

  从“一对一”的方式出发,出现了有向无环图(DirectedAcyclic Graph)的分类方法。

SVM多分类的两种方式_第2张图片


图1 有向无环图

        直接方法尽管看起来简洁,但是在最优化问题求解过程中的变量远远多于第一类方法,训练速度不及间接方法,而且在分类精度上也不占优。当训练样本数非常大时,这一问题更加突出。正因如此,间接方法更为常用。


 

你可能感兴趣的:(SVM多分类的两种方式)