Vowpal Wabbit 中的纠错锦标赛 (ect) 多类分类

Posted

技术标签:

【中文标题】Vowpal Wabbit 中的纠错锦标赛 (ect) 多类分类【英文标题】:Error Correcting Tournaments (ect) Multi Class Classification in Vowpal Wabbit 【发布时间】:2014-08-27 18:05:29 【问题描述】:

我试图通过描述 ECT 算法的 this paper 来了解它,但无法从中得到太多。

我知道它与 one-against-al (oaa) 不同,甚至比 oaa 表现更好。我想简单解释一下 ect 的工作原理。

【问题讨论】:

【参考方案1】:

ECT 和过滤树(仅)在您有大量输出标签(类)时有用,假设 N=1000。使用 OAA(one-against-all),这意味着对每个示例(在训练和测试期间)执行 N 个二进制分类任务。使用 ECT,您可以更快地进行预测:log(N)。您可以将过滤树(它是 ECT 的基础)想象成一棵决策树,在每个节点中您询问示例是属于一组标签还是另一组标签(使用所有特征,与原始决策树不同)。

总的来说,ECT 比 OAA 更差(在损失或准确性方面)(但在某些情况下它可能几乎与 OAA 一样好)。对于 N=10 个标签,您应该先尝试 OAA。 N>1000,OAA 太慢(甚至准确率也很低),你应该尝试 ECT(或者在 VW 中使用 --log_multi--csoaa_ldf,如果你可以预先选择与每个示例相关的较少数量的标签) .

见http://cilvr.cs.nyu.edu/diglib/lsml/logarithmic.pdf

【讨论】:

使用 OAA(一对一),您只需要执行 N = 1000 个二元分类任务,因为您为每个类 c 训练一个二元分类器来预测 c 和非 c。使用 OAO(一对一),您将需要 N^2 个分类器,因为您为每一对类 (c_1, c_2) 训练一个二元分类器来预测 c_1 或 c_2。 糟糕,我怎么能写出 OAA 需要 N^2? (可能我把它和 OAO 混淆了,又名 wap=weighted all pairs,前段时间从大众中删除了。)我现在修好了。感谢您的关注。

以上是关于Vowpal Wabbit 中的纠错锦标赛 (ect) 多类分类的主要内容,如果未能解决你的问题,请参考以下文章

--oaa 2 和 --loss_function=logistic 在 Vowpal Wabbit 中的效果

Vowpal Wabbit Logistic 回归

vowpal-wabbit:使用多次通过、保持和保持期来避免过度拟合?

使用 Vowpal wabbit 的上下文强盗

Vowpal Wabbit 如何表示分类特征

Vowpal Wabbit 的梯度提升