4

问题:标签为 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 类的精度(预测为第 1 类的项目更少,因此在决策边界上更加保守),我应该处理哪些类概率以及如何处理?

4

2 回答 2

7

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

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

于 2013-05-20T09:47:18.367 回答
0

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

于 2013-12-17T12:24:23.267 回答