4

我需要有关 libSVM 的权重选项的帮助。我在某些时候感到困惑;我们是否也应该在进行交叉验证时使用 -wi 选项?如果是这样,我们应该使用整个数据的计算权重还是根据 v-1 子集计算的权重(用于 v-fold 交叉验证)?我的第二个问题是我们应该在预测期间使用 -wi 选项吗?如果是这样,我们应该在训练期间使用计算的权重还是应该根据测试数据中负实例和正实例的分布来计算权重?

例如; 我们有 50 + 数据和 200 - 数据。因此,在计算出最佳 c 和 gamma 参数值之后,我们将在训练时使用 -w1 4 -w-1 1 选项。但是网格搜索和交叉验证期间的训练呢?假设我们正在执行 5 折交叉验证。在对剩余的 4 个子集进行训练时,负实例和正实例的分布可能会发生变化。那么我们应该在这个 5 折交叉验证期间重新计算权重吗?

除了我们应该在测试时使用 -w1 4 -w-1 1 选项吗?

谢谢

4

1 回答 1

6

要回答您的第一个问题,如果您在模型训练期间将重要的权重应用于类的子集,那么您应该在整个训练/调整过程中执行相同的操作,包括基于交叉验证的 C 和 gamma 调整(否则您将根据成本敏感的目标/风险/损失函数调整模型,该函数与您通过启用非平凡类权重实际指定的不同)

类权重在 libSVM 外部,因为它们不是由 libSVM 计算的——命令行选项允许用户设置他/她自己的类权重以强调/降低类子集的重要性。有些人也会调整班级权重,但这是另一回事。

至于预测,类权重没有明确使用(因为它们在模型训练/调整阶段作为目标/风险/损失函数的“调整”出现,因此生成的模型已经“意识到”权重)

于 2012-01-03T17:59:13.163 回答