Как рассчитать коэффициент корреляции мэтьюза в 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

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *