zoukankan      html  css  js  c++  java
  • 将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
    优点:分类速度快,没有分类重叠现象或者分类不可分现象。
    缺点:分类错误累积(前面分类器分类错误,后面分类器无法纠正),从上到下节点的选取技巧(参照置信度)。
  • 相关阅读:
    我对自己公司产品的看法与一点微不足道的建议
    Error:java: 无效的源发行版: 1.8
    生成带星期的日期格式
    使用RestTemplate发送multipart/form-data格式的数据
    解决java.lang.NoClassDefFoundError错误
    Invalid bound statement (not found) 问题处理
    java8 关于日期的处理
    关于java后台如何接收xml格式的数据
    关于线程和junit注入失败的问题
    多线程异步调度任务
  • 原文地址:https://www.cnblogs.com/xingshansi/p/6896577.html
Copyright © 2011-2022 走看看