用于MATLAB的LibSVM中多类分类的概率估计解释

时间:2012-12-18 19:16:29

标签: matlab probability classification libsvm

问题:带有标签1,2,3的3级分类。

工具:用于MATLAB的LibSVM

svmModel = svmtrain(<Trainfeatures>, <TrainclassLabels>, '-b 1 -c <someCValue> -g <someGammaValue>');
[predLabels, classAccuracy, **probEstimates**] = svmpredict(<TestFeatures>, <TestClassLabels>, '-b 1');

在这一步之后,我得到前十行probEstimates,

0.9129    0.0749    0.0122
0.9059    0.0552    0.0389
0.8231    0.0183    0.1586
0.9077    0.0098    0.0825
0.9074    0.0668    0.0257
0.8685    0.0146    0.1169
0.8962    0.0664    0.0374
0.9074    0.0548    0.0377
0.9474    0.0054    0.0472
0.9178    0.0642    0.0180

但前十个预测的标签是:

 2
 2
 2
 2
 2
 2
 2
 2
 2
 2

问题:

  1. 我的理解是,概率估计是特定项目属于特定类别的概率,给定其特征向量。但是,如果这是真的,那么这些项应该属于类1而不是类2. libsvm是否改变了类的顺序,或者我在这里遗漏了什么?如果我错了,有人可以解释概率估计的真正解释是什么?

  2. 如果我必须移动决策边界以提高第1类的精度(预测的项目数量较少,因此在决策边界内更为保守),我应该选择哪一类概率必须处理和如何处理?

2 个答案:

答案 0 :(得分:7)

我最近遇到了同样的问题。 原因与训练数据的顺序有关。 如果您希望概率后矢量的索引对应于训练数据的标签,则应根据标签对训练数据进行排序。

例如,如果第一个数据点的标签是4,那么后概率向量的第一个条目与标记为4的数据点相关。

答案 1 :(得分:0)

模型中存储的标签的顺序可能与我们认为应该的顺序不同。您可以使用svmModel.Label进行检查。并且按照这个顺序输出概率估计值。