Hoe de matthews-correlatiecoëfficiënt in python te berekenen
Matthews Correlatie Coëfficiënt (MCC) is een metriek die we kunnen gebruiken om de prestaties van een classificatiemodel te evalueren.
Het wordt als volgt berekend:
MCC = (TP*TN – FP*FN) / √ (TP+FP)(TP+FN)(TN+FP)(TN+FN)
Goud:
- TP : Aantal echte positieven
- TN : Aantal echte negatieven
- FP : Aantal valse positieven
- FN : Aantal valse negatieven
Deze metriek is vooral handig wanneer de twee klassen niet in evenwicht zijn, dat wil zeggen dat de ene klasse veel meer voorkomt dan de andere.
De waarde van MCC ligt tussen -1 en 1 waarbij:
- -1 geeft de totale onenigheid aan tussen voorspelde klassen en werkelijke klassen
- 0 betekent volledig willekeurige gissingen
- 1 geeft volledige overeenstemming aan tussen voorspelde klassen en werkelijke klassen
Stel bijvoorbeeld dat een sportanalist een logistisch regressiemodel gebruikt om te voorspellen of 400 verschillende universiteitsbasketbalspelers wel of niet zullen worden opgeroepen voor de NBA.
De volgende verwarringsmatrix vat de voorspellingen van het model samen:
Om de MCC van het model te berekenen, kunnen we de volgende formule gebruiken:
- MCC = (TP*TN – FP*FN) / √ (TP+FP)(TP+FN)(TN+FP)(TN+FN)
- MCC = (15*375-5*5) / √ (15+5)(15+5)(375+5)(375+5)
- MCC = 0,7368
De Matthews-correlatiecoëfficiënt blijkt 0,7368 te zijn. Deze waarde ligt enigszins in de buurt van één, wat aangeeft dat het model goed presteert bij het voorspellen of spelers zullen worden opgeroepen of niet.
In het volgende voorbeeld ziet u hoe u MCC voor dit specifieke scenario kunt berekenen met behulp van de functie matthews_corrcoef() uit de sklearn- bibliotheek in Python.
Voorbeeld: berekening van de Matthews-correlatiecoëfficiënt in Python
De volgende code laat zien hoe u een array van voorspelde klassen en een array van daadwerkelijke klassen definieert, en vervolgens de Matthews-correlatiecoëfficiënt van een model in Python berekent:
import numpy as np from sklearn. metrics import matthews_corrcoef #define array of actual classes actual = np. repeat ([1, 0], repeats=[20, 380]) #define array of predicted classes pred = np. repeat ([1, 0, 1, 0], repeats=[15, 5, 5, 375]) #calculate Matthews correlation coefficient matthews_corrcoef(actual, pred) 0.7368421052631579
De MCC bedraagt 0,7368 . Dit komt overeen met de waarde die we eerder handmatig hebben berekend.
Opmerking : u kunt hier de volledige documentatie voor de functie matthews_corrcoef() vinden.
Aanvullende bronnen
In de volgende tutorials wordt uitgelegd hoe u andere algemene statistieken voor classificatiemodellen in Python kunt berekenen:
Een inleiding tot logistieke regressie in Python
Hoe de F1-score in Python te berekenen
Hoe gebalanceerde precisie in Python te berekenen