如何将空间划分为两半的算法(如Suport Vector Machines)一般化为使用整数等集合中的标签来标记数据?
例如,支持向量机通过构造超平面来操作,然后超平面上方的东西采用一个标签,而下面的东西采用另一个标签。
这是如何推广的,以便标签是例如整数或其他任意大的集合?
答案 0 :(得分:5)
一个选项是'one-vs-all'方法,在其中为每个要分区的集合创建一个分类器,并选择概率最高的集合。
例如,假设您要使用{1,2,3}
标签对对象进行分类。然后你可以创建三个二元分类器:
如果您在新的数据X上运行这些分类器,那么它们可能会返回:
根据这些输出,您可以将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)