如何将空间分成两半的算法(例如支持向量机)推广到使用来自整数等集合的标签来标记数据?
例如,支持向量机通过构建一个超平面来运行,然后超平面“上方”的事物采用一个标签,而其下方的事物采用另一个标签。
这如何得到概括,以便标签是例如整数或其他任意大的集合?
如何将空间分成两半的算法(例如支持向量机)推广到使用来自整数等集合的标签来标记数据?
例如,支持向量机通过构建一个超平面来运行,然后超平面“上方”的事物采用一个标签,而其下方的事物采用另一个标签。
这如何得到概括,以便标签是例如整数或其他任意大的集合?
一种选择是“one-vs-all”方法,在该方法中,您为要划分的每个集合创建一个分类器,并选择概率最高的集合。
例如,假设您想对带有标签的对象进行分类{1,2,3}
。然后你可以创建三个二元分类器:
如果您在一条新数据 X 上运行这些分类器,那么它们可能会返回:
根据这些输出,您可以将 X 分类为最有可能来自第 3 类。(概率加起来不等于 1 - 这是因为分类器彼此不了解)。
如果您的输出标签是有序的(具有某种有意义的顺序,而不是任意顺序)。例如,在金融领域,您希望将股票分类为 {BUY, SELL, HOLD}。尽管您不能合法地对这些数据执行回归(数据是有序的而不是比率数据),但您可以将 -1、0 和 1 的值分配给 SELL、HOLD 和 BUY,然后假装您有比率数据。有时这可以产生良好的结果,即使它在理论上是不合理的。
另一种方法是 Cramer-Singer 方法(“On the algorithmic implementation of multiclass kernel-based vector machines”)。Svmlight 在这里实现它:http: //svmlight.joachims.org/svm_multiclass.html。
分类为无限集(例如整数集)称为序数回归。通常这是通过将一系列连续值映射到集合的元素上来完成的。(参见http://mlg.eng.cam.ac.uk/zoubin/papers/chu05a.pdf,图 1a)