我写了一些代码来运行基于线性判别分析的分类:
%% 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
我的问题是:
ROC分析后我们得到了更好的准确率,当我们报告分类器的准确率时,我们应该使用哪个值?ROC 曲线究竟能告诉我们什么或可以推断出什么?我们可以说在 ROC 分析之后我们发现 LDA 分类器的准确性更高吗?
为什么 ROC 可以为分类器产生更好的准确率,而原始的 ClassificationDiscriminant.fit 不能?
我还对 LDA 分类器进行了交叉验证,例如
cvLDAClassifier = crossval(LDAClassifierObject, 'leaveout', 'on');
那么如何获得交叉验证的 ROC 分析呢?' resubPredict
' 方法似乎只接受'判别对象'作为输入,那么我们如何获得分数呢?
4.. classperf
Matlab 的功能非常方便收集分类器的所有信息,比如
%% Get the performance of the classifier
LDAClassifierPerformace = classperf(groundTruthGroup, resubPredict(LDAClassifierObject));
但是,任何人都知道如何为交叉验证结果收集这些信息,例如准确性、FPR 等?
非常感谢。我真的很期待看到对上述问题的答复。
一个。