【问题标题】:Using LIBSVM grid.py for unbalanced data?将 LIBSVM grid.py 用于不平衡数据?
【发布时间】:2012-07-09 17:44:06
【问题描述】:

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

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

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

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

【问题讨论】:

    标签: machine-learning libsvm text-mining svm


    【解决方案1】:

    -w 参数是不平衡数据所需要的。到目前为止,您尝试过什么?

    如果您的课程是:

    • 0 级:90%
    • 1 类:5%
    • 2 类:5%

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

    -w0 5 -w1 90 -w2 90
    

    【讨论】:

    • 谢谢,但我认为应该反过来:-w0 5 -w1 90 -w2 90,因为较小的班级应该有更多的相关费用..这个有帮助!跨度>
    • 是的,我认为你是对的。我刚刚编辑了我的问题。谢谢!
    • 而当你有超过3个类的时候,你怎么能对每个w的值进行属性化呢?
    【解决方案2】:

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

    最小化 AUC 可能比重新加权训练示例得到更好的结果。

    【讨论】:

    • svmlight 对商业不友好;它仅供学术使用。
    【解决方案3】:

    您可以使用grid.py 优化任何精度、召回率、F-score 和 AUC。调整是您必须更改 svm-train 在 LIBSVM 中使用的交叉验证评估度量。关注procedure given on LIBSVM website

    【讨论】:

      【解决方案4】:

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

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

      【讨论】:

        猜你喜欢
        • 2015-04-12
        • 2013-06-11
        • 2013-10-06
        • 2015-02-16
        • 2012-12-03
        • 2017-05-26
        • 2014-08-01
        • 2016-12-31
        • 2015-03-09
        相关资源
        最近更新 更多