7

我遇到了不平衡数据(90%、5%、5%)的三类问题。现在我想使用 LIBSVM 训练一个分类器。

问题在于 LIBSVM 优化其参数 gamma 和 Cost 以获得最佳精度,这意味着 100% 的示例被归类为 1 类,这当然不是我想要的。

我试过修改权重参数 -w 没有太大成功。

所以我想要的是,修改 grid.py 以优化成本和伽玛的精度和按类分开的召回率,而不是整体精度。有没有办法做到这一点?还是有其他脚本可以做这样的事情?

4

4 回答 4

8

-w 参数是不平衡数据所需要的。你试过什么了?

如果您的课程是:

  • 0级:90%
  • 第一类:5%
  • 2级:5%

您应该将以下参数传递给 svm:

-w0 5 -w1 90 -w2 90
于 2012-07-10T15:08:21.190 回答
4

如果您想尝试替代方案,svmlight 系列中的一个程序http://www.cs.cornell.edu/people/tj/svm_light/svm_rank.html直接最小化 ROC 曲线下的区域。

与重新加权训练示例相比,最小化 AUC 可能会产生更好的结果。

于 2012-07-14T13:09:50.583 回答
0

您可以使用 优化任何精度、召回率、F-score 和 AUC grid.py。调整是您必须更改svm-trainLIBSVM 中使用的交叉验证评估度量。遵循LIBSVM 网站上给出的程序

于 2017-03-06T13:54:45.230 回答
0

如果您有不平衡的数据,您可能不应该优化准确性。而是优化 f 分数(或回忆,如果这对您更重要)。您可以按照此处所述更改评估函数。

我认为您还应该优化 gamma 和 Cost,同时使用不同的类权重配置。为此,我通过传递不同的类权重(-wi 权重)修改了 grid.py 中的“get_cmd”函数。以我的经验,班级加权并不总是有帮助。

于 2017-03-22T15:51:13.647 回答