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

Posted

技术标签:

【中文标题】LibSVM for MATLAB中多类分类概率估计的解释【英文标题】:Interpretation of Probability Estimate for Multi-class classification in LibSVM for MATLAB 【发布时间】:2012-12-06 01:39:14 【问题描述】:

问题:标签为 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 类而不是 2 类。 libsvm 是否会更改类的顺序,还是我在这里遗漏了什么?如果我错了,谁能解释一下概率估计的真正解释是什么?

    如果我必须移动决策边界以提高第 1 类的精度(预测为第 1 类的项目更少,因此在决策边界中更保守),我应该使用哪些类概率又要怎么处理?

【问题讨论】:

我觉得你最好在stats.stackexchange.com问这个问题 【参考方案1】:

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

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

【讨论】:

【参考方案2】:

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

【讨论】:

以上是关于LibSVM for MATLAB中多类分类概率估计的解释的主要内容,如果未能解决你的问题,请参考以下文章

如何使用 libsvm 库(Matlab)实现 1 对 1 多类分类?

如何使用 libsvm 计算多类预测的概率?

多类 SVM。二元决策树。 LIBSVM 的问题

使用 libsvm 将多类划分为二进制类(不是分类)

matlab中用svm如何做多类别分类(R2013a)?

大型数据库的多类分类(matlab)