Matlab ROC曲线与libsvm

Matlab ROC曲线与libsvm,matlab,classification,svm,libsvm,roc,Matlab,Classification,Svm,Libsvm,Roc,给定用plotroc.m绘制的ROC曲线(请参阅): 理论问题:如何选择要使用的最佳阈值 编程问题:如何引导libsvm分类器使用选定的(最佳)阈值 ROC曲线是通过绘制y轴上的真阳性分数与x轴上的假阳性分数生成的曲线。所以,ROC曲线上任意点(x,y)的坐标表示特定阈值下的FPR和TPR值。 如图所示,我们找到ROC曲线上的点(x,y),该点对应于该点到绘图左上角(即(0,1))的最小距离。对应于该点的阈值是所需的阈值。很抱歉,我不允许放置任何图像,因此无法用图进行解释。但是,有关此操作的更多

给定用
plotroc.m
绘制的ROC曲线(请参阅):

  • 理论问题:如何选择要使用的最佳阈值
  • 编程问题:如何引导
    libsvm
    分类器使用选定的(最佳)阈值

  • ROC曲线是通过绘制y轴上的真阳性分数与x轴上的假阳性分数生成的曲线。所以,ROC曲线上任意点(x,y)的坐标表示特定阈值下的FPR和TPR值。 如图所示,我们找到ROC曲线上的点(x,y),该点对应于该点到绘图左上角(即(0,1))的最小距离。对应于该点的阈值是所需的阈值。很抱歉,我不允许放置任何图像,因此无法用图进行解释。但是,有关此操作的更多详细信息,请单击

    其次,在libsvm中,svmpredict函数返回属于特定类的数据样本的概率。所以,如果概率(正类)大于阈值(从ROC图获得),那么我们可以将样本分类为正类。以下几行可能对您有用:

        [pred_labels,~,p] = svmpredict(target_labels,feature_test,svmStruct,'-b 1');
    
    %其中,svmStruct是svmtrain函数返回的结构

    现在,如果这个变量'op'大于阈值,那么我们可以将相应的测试样本分类为阳性类。这可以按如下方式完成


    op_标签=op>th;%其中“th”是从ROC获得的阈值

    有人已经费心为计算AUC(ROC)的libsvm实现扩展。可以在这里找到:
        op = p(:,svmStruct.Label==1);  % This gives probability for positive
    % class (i.e whose label is 1 )