Як ви обчислюєте точність та відкликання для багатокласової класифікації за допомогою матриці плутанини?


92

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

  • Точність = TP / (TP + FP)
  • Нагадаємо = TP / (TP + FN)

для кожного класу, а потім обчисліть мікросередню F-міру.


Це DOCX , Оцінка моделі класифікації - Що точність і нагадати мені сказати? , від Compumine забезпечує просте введення в матрицю плутанини та заходи, що випливають з неї. Це допомагає створити матрицю плутанини, точність, відкликання, специфічність та точність.
Jayran Choopan

4
знайти відповідь тут. Дуже добре пояснення youtube.com/watch?v=FAr2GmWNbT0

Посилання Compumine мертве.
Трентон

Що стосується багатокласового випадку, я розумію, що уздовж рядків (вісь = 0) є відкликання, а уздовж стовпців (вісь = 1) - точність. rxnlp.com/…
MD ZIA ULLAH

Відповіді:


69

У випадку 2-гіпотези матриця плутанини зазвичай:

       | Declare H1  |  Declare H0 |
|Is H1 |    TP       |   FN        |
|Is H0 |    FP       |   TN        |

де я використав щось подібне до вашої нотації:

  • TP = справжній позитивний (оголосити H1, коли, правда, H1),
  • FN = хибний мінус (оголосити H0, якщо, правда, H1),
  • FP = хибнопозитивний
  • TN = справжній мінус

З необроблених даних значення в таблиці, як правило, становлять підрахунок для кожного виникнення над тестовими даними. З цього ви зможете обчислити необхідні вам кількості.

Редагувати

Узагальнення задач на багато класів полягає в підсумовуванні рядків / стовпців матриці плутанини. З огляду на те, що матриця орієнтована як вище, тобто, що даному рядку матриці відповідає конкретне значення для "істини", ми маємо:

Точність i=МiijМji

Нагадаємо i=МiijМij

iiii


1
У моєму випадку є 10+ класів, тому я думаю, що FN буде означати загальний підрахунок класу H (i), i! = 1; і те саме FP?
daiyue

Привіт, мені цікаво, які значення будуть для Precision і Recall, якщо TP + FP = 0, а TP + FN = 0 для якогось фактичного класу в матриці плутанини.
daiyue

Точність для класу iне визначена, якщо немає випадків, коли алгоритм оголошує i. Відкликання для класу iне визначено, якщо тестовий набір не включає клас i.
Дейв

Моя кінцева мета - обчислити макро F-міру, тому мені потрібна точність та відкликання значень для кожного класу i; тож як я можу обчислити міру Macro-F, якщо зазначені вище два випадки з'являються в якомусь класі i? Зокрема, яке значення для Fi та чи вважає клас i одним із класів M, що кількість елементів у M буде вважатися знаменником формули для обчислення вимірювання макрофункції F.
daiyue

1
Шрі, ти міг би пояснити свою ідею чіткіше?
daiyue

31

Хороший підсумковий документ, дивлячись на ці показники для проблем із класом:

  • Соколова, М., і Лапальме, Г. (2009). Систематичний аналіз ефективності заходів для класифікаційних завдань. Обробка та управління інформацією, 45 , с. 427-437. ( pdf )

У рефераті написано:

У цьому документі представлений систематичний аналіз двадцяти чотирьох заходів ефективності, використовуваних у повному спектрі завдань класифікації машинного навчання, тобто двійкових, багатокласних, багатозначних та ієрархічних. Для кожного завдання класифікації дослідження пов'язує набір змін в матриці плутанини до конкретних характеристик даних. Потім аналіз концентрується на типі змін матриці плутанини, які не змінюють міру, тому зберігають оцінку класифікатора (інваріантність міри). Результатом є таксономія міри інваріантності стосовно всіх змін розподілу міток у проблемі класифікації. Цей формальний аналіз підкріплений прикладами застосувань, де інваріантні властивості заходів призводять до більш надійної оцінки класифікаторів.


2
Ласкаво просимо на сайт, @JamesTaylor. Чи не заперечуєте ви наводити резюме інформації у зв'язаному документі, щоб допомогти читачам вирішити, чи потрібна вона?
gung

8

Використання sklearn і numpy:

from sklearn.metrics import confusion_matrix
import numpy as np

labels = ...
predictions = ...

cm = confusion_matrix(labels, predictions)
recall = np.diag(cm) / np.sum(cm, axis = 1)
precision = np.diag(cm) / np.sum(cm, axis = 0)

Щоб отримати загальні міри точності та нагадування, використовуйте потім

np.mean(recall)
np.mean(precision)
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.