如何使用支持向量机(SVM)进行多类分类

mlg*_*guy 50 machine-learning svm libsvm

在每本书和例子中,它们总是只显示二进制分类(两个类),新的向量可以属于任何一个类.

这里的问题是我有4个类(c1,c2,c3,c4).我已经训练了4个班级的数据.

对于新的向量,输出应该是

C1 80%(获胜者)

c2 10%

c3 6%

c4 4%

这该怎么做?我打算使用libsvm(因为它最受欢迎).我不太了解它.如果你们中的任何人以前使用它,请告诉我我应该使用的具体命令.

Obe*_*nne 39

LibSVM使用一对一的方法来解决多类学习问题.来自FAQ:

问:libsvm用于多类SVM的方法是什么?你为什么不使用"1-against-the rest"方法?

这是一对一的.我们在做了以下比较后选择了它:C.-W.许和C.-J. 林.多类支持向量机的方法比较,IEEE Transactions on Neural Networks,13(2002),415-425.

"1-against-the rest"是一种很好的方法,其性能可与"1-against-1"相媲美.我们做后者只是因为它的训练时间较短.


Ant*_*kov 19

常用的方法是One vs. Rest和One vs. One.在第一种方法中,您将获得n个分类器,结果类将获得最高分.在第二种方法中,通过所有分类器的多数投票获得所得到的类.

AFAIR,libsvm支持多类分类策略.

  • 我认为libsvm只支持一对一.但它的效果非常好. (3认同)

Lar*_*abe 5

您始终可以通过递归选择一组类的随机分区,将多类分类问题简化为二元问题。这不一定比一次学习要有效或有效,因为子学习问题需要较少的示例,因为分区问题较小。(这可能最多需要一个恒定的订购时间,例如两倍长)。它还可能导致更准确的学习。

我并不一定推荐这样做,但这是对您问题的一个答案,并且是可以应用于任何二进制学习算法的通用技术。