Coeficiente de correlação de Matthews com multi-classe

9

O coeficiente de correlação de Matthews ( ) é uma medida para medir a qualidade de uma classificação binária ([Wikipedia] [1]). formulação é fornecida para classificação binária utilizando valores de positivos verdadeiros ( ), falsos positivos ( ), falsos negativos ( ) e negativos verdadeiros ( ), conforme indicado abaixo:MCCMCC T P F P F N T NTPFPFNTN

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

I têm um caso onde preciso classificar três classes diferentes, , , e . Posso aplicar a formulação acima para calcular para casos com várias classes depois de calcular os valores de , , e para cada classe, como mostrado abaixo? UMABCMCCTPTNFPFN

TP=TPUMA+TPB+TPC;TN=TNUMA+TNB+TNC;FP=FPUMA+FPB+FPC;FN=FNUMA+FNB+FNC;

John David
fonte
O coeficiente de correlação de Matthews (que para a classificação binária é simplesmente a correlação de Phi ou Pearson) torna-se o que é conhecido como correlação Rk para a classificação multiclasse. Duas fórmulas são citadas no meu documento "Compare partições" na minha página da web.
ttnphns 01/09/19

Respostas:

5

Sim, em geral, você pode. Essa abordagem que você deseja usar às vezes é chamada de "Micro-média": primeiro, some todos os TNs, FPs, etc. para cada classe e depois calcule a estatística de interesse.

Outra maneira de combinar as estatísticas para classes individuais é usar a chamada "Macro-Média": aqui você primeiro calcula as estatísticas para classes individuais (A vs não A, B vs não B, etc.) e depois calcula a média de eles.

Você pode dar uma olhada aqui para obter mais detalhes. A página fala sobre Precision and Recall, mas acredito que se aplica ao coeficiente de Matthew, bem como a outras estatísticas baseadas em tabelas de contingência.

Alexey Grigorev
fonte
4

A técnica de média de macro funciona bem para precisão, sensibilidade e especificidade. Mas quando tentei na MCC, não deu os resultados adequados. Para mais detalhes sobre cálculos MCC multiclass, consulte:

  1. Jurman G, Riccadonna S, Furlanello C (2012) " Uma comparação das medidas de erro MCC e CEN na previsão de várias classes ". PLoS ONE 7 (8): e41882. doi: 10.1371 / journal.pone.0041882
  2. Jurman, Giuseppe e Cesare Furlanello. "Uma visão unificadora para medidas de desempenho na previsão de várias classes." pré-impressão do arXiv arXiv: 1008.2908 (2010).

O código a seguir funcionou para mim:

% 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))
Swati Shilaskar
fonte
1

O MCC pode ser usado para a classificação binária e multiclasse da Wikipedia e é implementado no sci-kit learn para rótulos binários e multiclasses.

David Makovoz
fonte
0

A MCC foi projetada para classificação binária.

Se você deseja obter uma medida semelhante de um classificador, tente o Kappa de Cohen, que pode ser aplicado à matriz de confusão de várias classes.

Nico
fonte