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。下图引用出自于王正海《基于决策树多分类支持向量机岩性波谱分类》

 


  
(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)的分类方法。


图1 有向无环图

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


 

  • 34
    点赞
  • 188
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
回答: SVM分类分类边界可以通过两种方法来构造。一种是"同时考虑所有分类"的方法,该方法在优化公式的同时考虑所有的类别数据,通过重新构造多类分类型,将问题转化为解决二次规划问题,从而实现多分类。这种方法的计算复杂度较高,实现起来比较困难。另一种方法是通过组合多个二分类器来构造多分类器,常见的方法有"一对一"和"一对其余"两种。其中"一对一"方法需要对n类训练数据两两组合,构建n(n-1)/2个支持向量机,最后通过投票的方式决定分类结果。"一对其余"方法则对n分类问题构建n个支持向量机,每个支持向量机负责区分本类数据和非本类数据,最后结果由输出离分界面距离最大的支持向量机决定。\[1\]另外,还有一种基于决策树的多分类支持向量机方法,通过将所有类别分为两个类别,再进一步划分为两个次级子类,直到每个节点只包含一个类别为止,最后使用SVM进行分类。\[2\] #### 引用[.reference_title] - *1* [Svm实现多分类](https://blog.csdn.net/cayman_2015/article/details/90210865)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^koosearch_v1,239^v3^insert_chatgpt"}} ] [.reference_item] - *2* *3* [SVM分类的两种方式](https://blog.csdn.net/xfChen2/article/details/79621396)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^koosearch_v1,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值