Coefficient de corrélation de Matthews avec multi-classe


9

Le coefficient de corrélation de Matthews ( ) est une mesure pour mesurer la qualité d'une classification binaire ([Wikipedia] [1]). formulation est donnée pour la classification binaire utilisant les valeurs de vrais positifs ( ), de faux positifs ( ), de faux négatifs ( ) et de vrais négatifs ( ) comme indiqué ci-dessous:MCCMCCTPFPFNTN

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

J'ai un cas où je dois classer trois classes différentes, , et . Puis-je appliquer la formulation ci-dessus pour calculer pour le cas multi-classe après avoir calculé les valeurs , , et pour chaque classe comme indiqué ci-dessous? UNEBCMCCTPTNFPFN

TP=TPUNE+TPB+TPC;TN=TNUNE+TNB+TNC;FP=FPUNE+FPB+FPC;FN=FNUNE+FNB+FNC;


Le coefficient de corrélation de Matthews (qui pour la classification binaire est simplement la corrélation Phi ou Pearson) devient ce que l'on appelle la corrélation Rk pour la classification multiclasse. Deux formules en sont citées dans mon document "Comparer les partitions" sur ma page web.
ttnphns

Réponses:


5

Oui, en général, vous le pouvez. Cette approche que vous souhaitez utiliser est parfois appelée «micro-moyenne»: d'abord, additionnez tous les TNs, FPs, etc. pour chaque classe, puis calculez la statistique d'intérêt.

Une autre façon de combiner les statistiques pour les classes individuelles consiste à utiliser ce que l'on appelle la «macro-moyenne»: ici, vous calculez d'abord les statistiques pour les classes individuelles (A vs non A, B vs non B, etc.), puis calculez la moyenne de leur.

Vous pouvez consulter ici pour plus de détails. La page parle de précision et de rappel, mais je crois que cela s'applique au coefficient de Matthew ainsi qu'à d'autres statistiques basées sur des tableaux de contingence.


4

La technique de moyenne macro fonctionne bien pour la précision, la sensibilité et la spécificité. Mais quand je l'ai essayé pour MCC, cela n'a pas donné de bons résultats. Pour plus de détails sur les calculs MCC multiclasses, voir:

  1. Jurman G, Riccadonna S, Furlanello C (2012) " A Comparison of MCC and CEN Error Measures in Multi-Class Prediction ". PLoS ONE 7 (8): e41882. doi: 10.1371 / journal.pone.0041882
  2. Jurman, Giuseppe et Cesare Furlanello. "Une vue unificatrice pour les mesures de performances dans la prédiction multi-classes." arXiv preprint arXiv: 1008.2908 (2010).

Le code suivant a fonctionné pour moi:

% 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 est conçu pour la classification binaire.

Si vous voulez obtenir une mesure similaire d'un classificateur, vous pouvez essayer le Kappa de Cohen, il peut être appliqué à une matrice de confusion multi-classes.

En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.