ROC曲线的绘制

ROC曲线一般用于绘制二分类问题,用于评价分类器、分类算法的性能
ROC(Receiver Operating Characteristic)曲线和AUC常被用来评价一个二值分类器(binary classifier)的优劣

工具:matlab2010b+libsvm-3.20

%训练部分
load train.mat train;
load train_label.mat train_label;
model = svmtrain(train_label,train,'-s 0 -t 2 -b 1');
save model.mat model;

%测试部分
load model.mat model;
load test.mat test;
load test_label.mat test_label;
[predict_label, accuracy , dec_values] = svmpredict(test_labels,test,model,'-b 1');

%ROC曲线绘制
score = dec_values(:,1);
[x,y]=perfcurve(test_labels,score,1);
plot(x,y,'-r');
legend('hog','location','best');
xlabel('假阳性率(False Positive Rate)'); 
ylabel( '真阳性率(True positive rate)')

解释部分

绘制ROC曲线需要得到分类器对测试样本的概率输出,即分类器认为某个样本具有多大的概率属于正样本或负样本。libsvm中svmpredict函数,需要标记’-b 1’,这样我们可以获得测试样本的概率输出。其值保存在dec_values中。但我们需要取得的是属于正样本的概率输出,所以只需要dec_values中的第一列即可。再使用perfcurve画出ROC曲线。其它分类器的概率输出类似。

理论说明参考http://alexkong.net/2013/06/introduction-to-auc-and-roc/

你可能感兴趣的:(ROC,svmtrain,svmpredict)