支持向量机 (SVM) 分类的超大类集

机器算法验证 支持向量机 多级
2022-04-03 02:32:14

对于我有成千上万个不同类的问题,使用典型的多类方法会不会非常低效?如果我要做一个与所有,这是否意味着在确定一组新数据是否属于某个类之前,我必须遍历每个单独的类?这在计算上会非常慢。

有没有办法解决这个问题?当它达到这样的大小时,我什至应该使用 SVM 吗?

3个回答

我会使用DAGSVM方法,它构造成对分类器树。如果每个类只有 100 个模式,但有数万个类,那么很多成对分类器将没有训练数据,因此并非每个可能的成对分类器都需要构建。

然而,更重要的是,很难考虑有这么多类的问题,其中分类在某种意义上不是分层的。更好的方法是首先构建一个分类器,将每个模式分类为大类(表示一组相关类),然后使用每个大类迭代地细化模式,以识别类之间更精细的区别。

看看 Vowpal Wabbit。它是随机梯度体面的一种实现,对于大规模数据集非常有效。如果您选择正确的参数,它可以模拟 SVM(铰链损失)。它还包括一个名为Error-Correcting Tournaments的减少,这对于多个课程非常有效。

有些分类模型本质上是多类的,没有纠错码或一对一。一些流行的是神经网络、线性判别分析、随机森林、朴素贝叶斯和 kNN。训练时间通常会增加一点,但它比 one-vs-rest 分类更有效。有一个结构 SVM 的多类公式,值得一提。虽然我自己没用过。