Коэффициент корреляции Мэтьюса (MCC) — это показатель, который мы можем использовать для оценки эффективности модели классификации .
Он рассчитывается как:
MCC = (TP*TN – FP*FN) / √ (TP+FP)(TP+FN)(TN+FP)(TN+FN)
куда:
- TP : количество истинных положительных результатов
- TN : количество истинных отрицательных результатов.
- FP : Количество ложных срабатываний
- FN : количество ложноотрицательных результатов.
Эта метрика особенно полезна, когда два класса несбалансированы, то есть один класс появляется намного больше, чем другой.
Значение для MCC находится в диапазоне от -1 до 1, где:
- -1 указывает на полное несоответствие между предсказанными классами и фактическими классами
- 0 является синонимом полностью случайного угадывания
- 1 указывает на полное соответствие между предсказанными классами и фактическими классами
Например, предположим, что спортивный аналитик использует модель логистической регрессии, чтобы предсказать, попадут ли 400 разных баскетболистов из колледжа в НБА.
Следующая матрица путаницы суммирует прогнозы, сделанные моделью:
Для расчета MCC модели мы можем использовать следующую формулу:
- MCC = (TP*TN – FP*FN) / √ (TP+FP)(TP+FN)(TN+FP)(TN+FN)
- МСС = (15*375-5*5) / √ (15+5)(15+5)(375+5)(375+5)
- МСС = 0,7368
Коэффициент корреляции Мэтьюса оказывается равным 0,7368.Это значение несколько близко к единице, что указывает на то, что модель хорошо предсказывает, будут ли игроки выбраны на драфте.
В следующем примере показано, как рассчитать MCC именно для этого сценария с помощью функции matthews_corrcoef() из библиотеки sklearn в Python.
Пример: вычисление коэффициента корреляции Мэтьюса в Python
В следующем коде показано, как определить массив прогнозируемых классов и массив фактических классов, а затем вычислить коэффициент корреляции Мэтьюса модели в Python:
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
МСС составляет 0,7368.Это соответствует значению, которое мы рассчитали ранее вручную.
Примечание.Полную документацию по функции matthews_corrcoef() можно найти здесь .
Дополнительные ресурсы
В следующих руководствах объясняется, как рассчитать другие общие показатели для моделей классификации в Python:
Введение в логистическую регрессию в Python
Как рассчитать счет F1 в Python
Как рассчитать сбалансированную точность в Python