二进制分类器如何推广以将数据分类为任意大的集合?

时间:2012-06-15 10:14:30

标签: machine-learning

如何将空间划分为两半的算法(如Suport Vector Machines)一般化为使用整数等集合中的标签来标记数据?

例如,支持向量机通过构造超平面来操作,然后超平面上方的东西采用一个标签,而下面的东西采用另一个标签。

这是如何推广的,以便标签是例如整数或其他任意大的集合?

2 个答案:

答案 0 :(得分:5)

一个选项是'one-vs-all'方法,在其中为每个要分区的集合创建一个分类器,并选择概率最高的集合。

例如,假设您要使用{1,2,3}标签对对象进行分类。然后你可以创建三个二元分类器:

  • C1 = 1或(不是1)
  • C2 = 2或(不是2)
  • C3 = 3或(不是3)

如果您在新的数据X上运行这些分类器,那么它们可能会返回:

  • C1(X)= 31.6%的可能性为1
  • C2(X)= 63.3%的可能性为2
  • C3(X)=在3
  • 中有89.3%的几率

根据这些输出,您可以将X分类为最有可能来自第3类。(概率不等于1 - 这是因为分类器彼此不了解)。

如果您的输出标签是有序的(带有某种有意义的,而不是任意的排序)。例如,在金融中,您希望将股票分类为{买入,卖出,持有}。虽然您无法合法地对这些进行回归(数据为ordinal rather than ratio data),但可以将值-1,0和1分配给卖出,保持并购买,然后假装您有比率数据。有时这可以产生良好的结果,即使它在理论上是不合理的。

答案 1 :(得分:2)

另一种方法是Cramer-Singer方法("关于基于多类内核的矢量机的算法实现")。 Svmlight在这里实现它:http://svmlight.joachims.org/svm_multiclass.html

分类为无限集(例如整数集)称为序数回归。通常,这是通过将一系列连续值映射到集合的元素上来完成的。 (见http://mlg.eng.cam.ac.uk/zoubin/papers/chu05a.pdf,图1a)