【问题标题】:Probability outputs for SVM(SMO) in WEKAWEKA 中 SVM(SMO) 的概率输出
【发布时间】:2016-10-29 14:30:36
【问题描述】:

我有两个输入类,0 和 5。我已经在训练数据上使用这两个标签训练了我的分类器。

在测试时,在明确分配给每个类之前,我希望获得 SVM 为每个实例计算的概率。

当我使用classifier.distributionForInstance() 时,我只能获得与每个实例相关的 0.000 和 1.000 值。 例如。 [0:1.000][5:0.000][0:1.000][5:0.000]

在为 arff 文件创建关系时,我将 label 属性定义如下 bw.write("@attribute label {0,5}"); ,其中 bw 是一个 BufferedWriter 对象。

获得SVM的中间概率值的过程应该是什么?

【问题讨论】:

  • 看起来,您没有使用任何交叉验证方案来选择您的 SVM 参数,这会导致非常糟糕的预测(仅包含非常小的一组不同的值)。这意味着,distributionForInstance 只会转换已经很糟糕的预测值。
  • 交叉验证,而预测没有任何意义?我已经进行了 2 折交叉验证,我得到的二进制分类结果非常好。我的查询是获取中间概率,以便我也可以使用这些预测将实例划分为中间类。我没有直接使用多类分类器,因为它碰巧会降低我系统的整体准确度。
  • 中间类的概念听起来不太好(理论上)。使用 SVM 预测概率通常非常糟糕(因为它超出了概念范围;通常使用 Platt-scaling 和一些额外的等渗回归来完成)。通常,您只能进行排名。我不确定 Weka 在内部做什么。我对出了什么问题的假设/想法主要基于您在其他 SO 问题中提供的数字。这些预测数字(只有 3 个唯一值)看起来很可疑。

标签: java machine-learning classification svm weka


【解决方案1】:

如果我正确理解了这个问题,我认为这里 0.000 和 1.000 只是中间概率,因为您正在创建一个 2 路分类器。

如果您尝试创建一个 3 路分类器而不是 2 路分类器,您会看到类似“3.3333、6.6666 和 0.000”或“3.3333、3.3333 和 3.3333”等情况......

我希望这会有所帮助。

【讨论】:

    猜你喜欢
    • 2017-10-01
    • 1970-01-01
    • 2021-11-24
    • 2016-10-03
    • 2013-05-22
    • 2017-05-09
    • 2014-10-05
    • 2016-03-12
    • 2014-11-18
    相关资源
    最近更新 更多