2

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

%% 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');

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

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

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

但是,任何人都知道如何为交叉验证结果收集这些信息,例如准确性、FPR 等?

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

一个。

4

0 回答 0