マルチクラスのマシューズ相関係数


9

マシューズ相関係数()は、バイナリ分類の品質を測定する測定値です([Wikipedia] [1])。定式化は、真陽性()、偽陽性()、偽陰性()、および真陰性()の値を利用して、以下のようにバイナリ分類を行います。MCCMCC T P F P F N T NTPFPFNTN

MCC=TP×TNFP×FN(TP+FP)(TP+FN)(TN+FP)(TN+FN)

、、 3つの異なるクラスを分類する必要がある場合があります。上記の定式化を適用して、以下に示すように各クラスの、、、および値を計算した後、マルチクラスケースのを計算できますか? ABCMCCTPTNFPFN

TP=TPA+TPB+TPC;TN=TNA+TNB+TNC;FP=FPA+FPB+FPC;FN=FNA+FNB+FNC;


マシューズ相関係数(バイナリ分類の場合、これは単にファイまたはピアソン相関です)は、マルチクラス分類のRk相関と呼ばれるものになります。その2つの公式が、私のWebページのドキュメント「パーティションの比較」で引用されています。
ttnphns

回答:


5

はい、一般的には可能です。使用したいこのアプローチは、「マイクロ平均化」と呼ばれることもあります。最初に、各クラスのすべての、などを合計してからTN、対象FPの統計を計算します。

個々のクラスの統計を組み合わせる別の方法は、いわゆる「マクロ平均」を使用することです。ここでは、最初に個々のクラスの統計を計算し(A対Aではなく、B対Bではないなど)、次に平均を計算します。それら。

追加の詳細については、こちらをご覧ください。このページでは、精度と再現率について説明していますが、マシューの係数だけでなく、分割表に基づく他の統計にも当てはまると思います。


4

マクロ平均化手法は、精度、感度、および特異性に適しています。しかし、クライアントセンターで試したところ、適切な結果が得られませんでした。マルチクラスMCC計算の詳細については、以下を参照してください。

  1. Jurman G、Riccadonna S、Furlanello C(2012)「マルチクラス予測におけるMCCとCENの誤差測定の比較」。PLoS ONE 7(8):e41882。doi:10.1371 / journal.pone.0041882
  2. ジャーマン、ジュゼッペ、チェザーレフルラネッロ。「マルチクラス予測におけるパフォーマンス測定の統一ビュー。」arXivプレプリントarXiv:1008.2908(2010)。

次のコードは私のために働きました:

% the confusion matrix at input is given by matrix cm_svm_array
mcc_numerator=0;count=1;
% limits klm=1 TO n SUM(ckk.cml - clk.ckm)
for k = 1:1:length(cm_svm_array)
    for l=1:1:length(cm_svm_array)
        for m=1:1:length(cm_svm_array)
          mcc_numerator1(count) = (cm_svm_array(k,k) *cm_svm_array(m,l))-
                                  (cm_svm_array(l,k)*cm_svm_array(k,m))
          mcc_numerator=mcc_numerator+mcc_numerator1(count)
          count=count+1;
        end
    end
end

mcc_denominator_1=0 ; count=1;
for k=1:1:length(cm_svm_array)
     mcc_den_1_part1=0;
    for l=1:1:length(cm_svm_array)
        mcc_den_1_part1= mcc_den_1_part1+cm_svm_array(l,k);
    end
    mcc_den_1_part2=0;
    for f=1:1:length(cm_svm_array)
        if f ~=k
          for g=1:1:length(cm_svm_array)
            mcc_den_1_part2= mcc_den_1_part2+cm_svm_array(g,f);
          end
        end
    end
    mcc_denominator_1=(mcc_denominator_1+(mcc_den_1_part1*mcc_den_1_part2));
end

mcc_denominator_2=0; count=1;
for k=1:1:length(cm_svm_array)
     mcc_den_2_part1=0;
    for l=1:1:length(cm_svm_array)
        mcc_den_2_part1= mcc_den_2_part1+cm_svm_array(k,l);
    end
    mcc_den_2_part2=0;
    for f=1:1:length(cm_svm_array)
        if f ~=k
          for g=1:1:length(cm_svm_array)
            mcc_den_2_part2= mcc_den_2_part2+cm_svm_array(f,g);
          end
        end
    end
    mcc_denominator_2=(mcc_denominator_2+(mcc_den_2_part1*mcc_den_2_part2));
end

mcc = (mcc_numerator)/((mcc_denominator_1^0.5)*(mcc_denominator_2^0.5))


0

MCCはバイナリ分類用に設計されています。

分類子の同様の測定値が必要な場合は、コーエンのカッパを試すことができます。これは、マルチクラス混同行列に適用できます。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.