ROC曲线到底能告诉我们什么或可以推断出什么?

时间:2013-03-18 12:51:20

标签: matlab roc

我写了一些代码来运行基于线性判别分析的分类:

%% Construct a LDA classifier with selected features and ground truth information
LDAClassifierObject                     = ClassificationDiscriminant.fit(featureSelcted, groundTruthGroup, 'DiscrimType', 'linear');
LDAClassifierResubError                 = resubLoss(LDAClassifierObject);

因此,我可以得到

Resubstitution Error of LDA (Training Error): 1.7391e-01
Resubstitution Accuracy of LDA: 82.61%
Confusion Matrix of LDA:
    14     3
     1     5

然后我为LDA分类器运行ROC分析:

% Predict resubstitution response of LDA classifier
[LDALabel, LDAScore]                    = resubPredict(LDAClassifierObject);

% Fit probabilities for scores (the groundTruthGroup contains lables either 'Good' or 'Bad')
[FPR, TPR, Thr, AUC, OPTROCPT]      = perfcurve(groundTruthGroup(:,1), LDAScore(:,1), 'Good');

我有:

OPTROCPT =

    0.1250    0.8667

因此,我们可以得到:

Accuracy of LDA after ROC analysis: 86.91%
Confusion Matrix of LDA after ROC analysis:
    13     1
     2     7

我的问题是:

  1. 在我们报告分类器的准确性时,我们应该使用哪个值,在ROC分析后我们获得了更好的准确度? ROC曲线到底能告诉我们什么或可以推断出什么?我们可以说在ROC分析后我们发现LDA分类器具有更好的准确度吗?

  2. 为什么ROC可以为分类器提供更好的准确性,但原来的ClassificationDiscriminant.fit不能?

  3. 我还对LDA分类器进行了交叉验证,比如

    cvLDAClassifier = crossval(LDAClassifierObject,'leaveout','on');

  4. 那么如何获得交叉验证的ROC分析? 'resubPredict'方法似乎只接受'判别对象'作为输入,那么我们如何得到分数?

    4 .. classperf Matlab的功能非常方便收集分类器的所有信息,如

    %% Get the performance of the classifier
    LDAClassifierPerformace                 = classperf(groundTruthGroup, resubPredict(LDAClassifierObject));
    

    但是,有人知道如何收集交叉验证结果等准确性,FPR等信息吗?

    非常感谢。我真的很期待看到上述问题的答复。

    一个。

0 个答案:

没有答案