Python에서 matthews 상관 계수를 계산하는 방법
MCC( Matthews Correlation Coefficient )는 분류 모델 의 성능을 평가하는 데 사용할 수 있는 측정항목입니다.
다음과 같이 계산됩니다.
MCC = (TP*TN – FP*FN) / √ (TP+FP)(TP+FN)(TN+FP)(TN+FN)
금:
- TP : 참양성의 수
- TN : 참음성의 수
- FP : 오탐지 수
- FN : 위음성의 수
이 측정항목은 두 클래스의 균형이 맞지 않을 때, 즉 한 클래스가 다른 클래스보다 훨씬 더 많이 나타날 때 특히 유용합니다.
MCC의 값은 -1과 1 사이입니다. 여기서:
- -1은 예측 클래스와 실제 클래스 간의 총 불일치를 나타냅니다.
- 0은 완전히 무작위 추측을 의미합니다.
- 1은 예측 클래스와 실제 클래스가 완전히 일치함을 나타냅니다.
예를 들어, 스포츠 분석가가 로지스틱 회귀 모델을 사용하여 400명의 대학 농구 선수가 NBA에 선발될지 여부를 예측한다고 가정해 보겠습니다.
다음 혼동 행렬은 모델의 예측을 요약합니다.

모델의 MCC를 계산하려면 다음 공식을 사용할 수 있습니다.
- 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
Matthews 상관계수는 0.7368 로 나타났습니다. 이 값은 다소 1에 가까우며, 이는 모델이 선수의 드래프트 여부를 적절하게 예측하고 있음을 나타냅니다.
다음 예에서는 Python의 sklearn 라이브러리에서 matthews_corrcoef() 함수를 사용하여 이 특정 시나리오에 대한 MCC를 계산하는 방법을 보여줍니다.
예: Python에서 Matthews 상관 계수 계산
다음 코드는 예측 클래스 배열과 실제 클래스 배열을 정의한 다음 Python에서 모델의 Matthews 상관 계수를 계산하는 방법을 보여줍니다.
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
MCC는 0.7368 입니다. 이는 이전에 수동으로 계산한 값과 일치합니다.
참고 : 여기에서 matthews_corrcoef() 함수에 대한 전체 문서를 찾을 수 있습니다.
추가 리소스
다음 튜토리얼에서는 Python에서 분류 모델에 대한 기타 일반적인 측정항목을 계산하는 방법을 설명합니다.
Python의 로지스틱 회귀 소개
Python에서 F1 점수를 계산하는 방법
Python에서 균형 잡힌 정밀도를 계산하는 방법