如何组合来自两个(或三个)两类SVM分类器的LIBSVM概率估计。

时间:2014-07-15 15:03:39

标签: svm probability libsvm

我的训练数据分为两类,让我们说是和否。数据代表三个任务,简单,中等和困难。一个人执行这些任务,并因此被分类为两个类中的一个。每个任务都是独立分类,然后结合起来。我使用3个独立训练的SVM分类器,然后对最终结果进行投票。

我希望提供与每种分类相关的置信度或概率。 LIBSVM可以提供概率估计以及每项任务的分类(简单,中等和困难,比如说PePmPd),但我不确定如何最好地将这些组合成对人的最终分类的总体估计(让我们称之为Pp)。

到目前为止,我的尝试一直是简单的平均值:

Pp = (Pe + Pm + Pd) / 3

逆方差加权平均值(因为每个任务重复几次,并且可以计算样本方差(VAReVARmVARd) - 在这种情况下{{1将是所有简单样本的简单平均值):

Pe

或乘法(假设这些事件是独立的,我不确定,因为基础任务是相关的):

Pp = (Pe/VARe + Pm/VARm + Pd/VARd) / (( 1/VARe ) + ( 1/VARm ) + ( 1/VARd ))

乘法会提供一个非常低的数字,所以当投票结果非常明确时,不清楚如何将其解释为总概率。

这三个选项中的任何一个都是最好的还是我忽略了其他一些方法/细节?

1 个答案:

答案 0 :(得分:1)

根据您的评论,我将提出以下建议。如果您需要将其作为SVM执行(因为,正如您所说,当您以这种方式执行此操作时会获得更好的性能),请从中间分类器中获取输出并将其作为要素提供给最终分类器。更好的是,切换到多层神经网络,其中输入表示中间体的输入,(第一)隐藏层表示中间问题的输出,后续层表示您想要的最终决策。这样你就可以获得中间层的好处,但是它的输出被优化以帮助进行最终的预测,而不是为了它本身的准确性(我假设你并不关心)。

这些测试的正确生成模型可能如下所示:

  1. 生成智力/能力分数 i
  2. 对于每个测试t:根据p_t生成通过/失败(通过| i
  3. 这是简化的,但我认为它应该说明你有一个潜在的变量 i 这些测试依赖于它们(并且它们之间也有结构,因为可能是p_easy(传递| i)> p_medium(pass | i)> p_hard(pass | i);您可以将其建模为具有连续“硬度”特征的逻辑回归。我怀疑你所问的是一种对 i 的某些阈值函数进行推理的方法,但你想以分类的方式而不是作为概率模型来做。这很好,但没有明确地编码潜在变量和测试之间的结构,它将变得很难(并且没有概率的平均值将解释缺失的结构)。

    我希望有所帮助 - 如果我做出了不合理的假设,请随时纠正。