什么是MATLAB的“perfcurve”Roc曲线参数?

时间:2014-05-16 13:38:59

标签: matlab parameters libsvm roc

我一直在使用LibSVM分类器对3个不同的类进行分类 - 标记为2,1,-1

我尝试使用MATLAB为使用LibSVM生成的一些数据生成Roc曲线图,但我无法理解它需要运行的参数。

我认为:

标签是生成的标签的向量,用于说明我的数据属于哪个类(我的数据包含1,-1和2,大小为60x1)

得分是由LibSVM创建的变量,称为' accuracy_score' (60x3大小)

但我不知道posclass是什么?

我还希望了解我的假设是否正确,如果没有,为什么不呢?

2 个答案:

答案 0 :(得分:4)

有关明确说明,请参阅here

  

给出以下指示:       [X,Y] = perfcurve(labels,scores,posclass);   labels是数据的真实标签,scores是分类器的输出分数(在阈值之前),而posclass是标签中的正分类。

答案 1 :(得分:3)

参见percurve的文档,posclass是正类的标签,在你的情况下它必须是1,-1或2 http://www.mathworks.com/help/stats/perfcurve.html

ROC曲线在x轴上具有“假阳性率”并且在y轴上具有“真阳性率”。通过指定posclass,您可以指定计算误报率和真阳性率的类别。 例如如果将posclass指定为2,则认为当true标签为2时,预测1或-1被视为错误预测(假阴性)。

编辑: 你提到的accuaracy_score(在我的文档版本(3.17,在matlab文件夹中),它被称为decision_values / prob_estimates)有3列,每列对应于属于一个类的数据的概率。

e.g。

model=svmtrain(train_label,train_data);
[predicted_label, accuracy, decision_values]=predict(test_label,test_dat,model);

model.Label包含类标签,decision_values中的各个列包含测试用例属于model.Label中指定的类的概率。(参见http://www.csie.ntu.edu.tw/~b91082/SVM/README)。

使用purfcurve计算m类的ROC:

[X,Y] = perfcurve(truelabels, decision_values(:,m)*model.Label(m),model.Label(m));

必须执行decision_values(:,m)*model.Label(m),尤其是当您的类标签为负数时。