Как рассчитать коэффициент корреляции мэтьюза в r
Коэффициент корреляции Мэтьюза (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 для этого конкретного сценария с помощью функции mcc() из пакета mltools в R.
Пример: вычисление коэффициента корреляции Мэтьюза в R
Следующий код показывает, как определить вектор прогнозируемых классов и вектор фактических классов, а затем вычислить коэффициент корреляции Мэтьюза с помощью функции mcc() из пакета mltools :
library (mltools) #define vector of actual classes actual <- rep (c(1, 0), times =c(20, 380)) #define vector of predicted classes preds <- rep (c(1, 0, 1, 0), times =c(15, 5, 5, 375)) #calculate Matthews correlation coefficient mcc(preds, actual) [1] 0.7368421
Коэффициент корреляции Мэтьюза составляет 0,7368 .
Это соответствует значению, которое мы рассчитали вручную ранее.
Если вы хотите вычислить коэффициент корреляции Мэтьюза для матрицы путаницы, вы можете использовать аргумент путаницыM следующим образом:
library (mltools) #create confusion matrix conf_matrix <- matrix(c(15, 5, 5, 375), nrow= 2 ) #view confusion matrix conf_matrix [,1] [,2] [1,] 15 5 [2,] 5,375 #calculate Matthews correlation coefficient for confusion matrix mcc(confusionM = conf_matrix) [1] 0.7368421
Опять же, коэффициент корреляции Мэтьюза равен 0,7368.
Дополнительные ресурсы
В следующих руководствах объясняется, как выполнять другие распространенные задачи в R:
Как выполнить логистическую регрессию в R
Как построить кривую ROC с помощью ggplot2
Как посчитать счет F1 в R