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 などのこれらの情報を収集する方法を知っている人はいますか?

どうもありがとう。上記の質問への回答をお待ちしております。

A.

4

0 に答える 0