Як розрахувати коефіцієнт кореляції метьюза в 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)
  • MCC = (15*375-5*5) / √ (15+5)(15+5)(375+5)(375+5)
  • MCC = 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 .

Це відповідає значенню, яке ми обчислили раніше вручну.

Якщо ви хочете обчислити коефіцієнт кореляції Метьюза для матриці плутанини, ви можете використовувати аргумент confusionM таким чином:

 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

Додати коментар

Ваша e-mail адреса не оприлюднюватиметься. Обов’язкові поля позначені *