Як розрахувати коефіцієнт кореляції метьюза в 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