Vowpal Wabbit 多类线性分类
Vowpal Wabbit Multiclass Linear Classification
是否可以使用 Vowpal Wabbit 库训练多class(多项式)线性 class化模型?
我尝试将 --oaa 与 --loss_function 平方一起使用,但似乎 --oaa 的默认损失函数是逻辑损失函数。
我正在使用 rcv1.multiclass 作为输入。
一个解决方案:
我可以创建多个版本的数据如下:
版本 i:将所有标签设为零,除了 class I
然后我可以为每个版本的数据训练多个二进制 classifications。最后,我可以将测试数据提供给所有 classifier 并应用 argmax。有更好的(自动化)解决方案吗?
当你使用vw --oaa N
时,你实际上会得到一个linear N-class classifier。要获得非线性 classifier,您需要添加 quadratic/polynomial 特征(-q
、--cubic
、--interactions
)或内核(--ksvm
) 或隐藏层 (--nn
) 或任何其他非线性缩减 (--lrq
, --stage_poly
, --autolink
).
损失函数的选择不影响classifier是否是线性的。默认值为 --loss_function=squared
。对于 class化,我建议使用 --loss_function=logistic
(如果你想预测每个 class 的概率,可以使用 --probabilities
)或 --loss_function=hinge
(如果你关心仅在顶部 class).
Then I can train multiple binary classifications for each version of data. Finally, I can feed the test data to all the classifier and apply an argmax. Is there any better (automated) solution?
是的,这正是 --oaa
所做的(但效率更高)。
是否可以使用 Vowpal Wabbit 库训练多class(多项式)线性 class化模型?
我尝试将 --oaa 与 --loss_function 平方一起使用,但似乎 --oaa 的默认损失函数是逻辑损失函数。
我正在使用 rcv1.multiclass 作为输入。
一个解决方案:
我可以创建多个版本的数据如下:
版本 i:将所有标签设为零,除了 class I
然后我可以为每个版本的数据训练多个二进制 classifications。最后,我可以将测试数据提供给所有 classifier 并应用 argmax。有更好的(自动化)解决方案吗?
当你使用vw --oaa N
时,你实际上会得到一个linear N-class classifier。要获得非线性 classifier,您需要添加 quadratic/polynomial 特征(-q
、--cubic
、--interactions
)或内核(--ksvm
) 或隐藏层 (--nn
) 或任何其他非线性缩减 (--lrq
, --stage_poly
, --autolink
).
损失函数的选择不影响classifier是否是线性的。默认值为 --loss_function=squared
。对于 class化,我建议使用 --loss_function=logistic
(如果你想预测每个 class 的概率,可以使用 --probabilities
)或 --loss_function=hinge
(如果你关心仅在顶部 class).
Then I can train multiple binary classifications for each version of data. Finally, I can feed the test data to all the classifier and apply an argmax. Is there any better (automated) solution?
是的,这正是 --oaa
所做的(但效率更高)。