Оцінка точності класифікатора

Якщо ви читаєте цю замітку, то напевно, ви вже стикалися і з точністю (precision), і з повнотою (recall) класифікаторів. Але ніяк не можете запам'ятати формули про TP, TN, FP, FN. Я теж ніяк не міг їх усвідомити і бачив безліч людей, кориті кожен раз замислюються, що там в чисельнику, а що в знаменнику. Але коли я глянув на проблему під іншим кутом, все встало з голови на ноги.

Почну з початку. Наше завдання полягає в тому, щоб визначити, який класифікатор краще. Для цього нам потрібна якась чисельна характеристика якості класифікації.

Зазвичай про це розповідають на прикладі бінарної класифікації (типу спам / Не-спам). Я ж пропоную поглянути на проблему ширше. Це, як мені здається, дозволяє краще зрозуміти суть справи.

Давайте розглянемо класифікацію опадів. Нехай у нас є спостереження за 10 днів. І прогноз, який згенерував наш класифікатор.

Кількості пар [фактичні опади] - [передбачені отсадки] ми можемо уявити наочно в таблиці - матриці неточностей (confusion matrix).

Найпростіша міра якості класифікатора - accuracy

Вона дорівнює відношення кількості правильних рішень і загальної кількості розглянутих елементів. У термінах наших матриць: це відношення суми діагональних осередків до суми всіх осередків. Обидва класифікатора показують

Відразу видно недолік такої оцінки. Відповідно до неї, классіфкатори однакові. Однак, подивіться на те, як вони пророкують сніг. Видно, що перший на багато краще. Він тільки трохи набрехав з ясною погодою, але сніг він передбачив. Другий же класифікатор жодного разу не вгадав сніг. А «ясно» він пророкує всього лише трохи краще.

Ми ж не можемо розрізнити ці два класифікатора за допомогою нашої метрики accuracy.

Щоб позбутися від цієї проблеми вводять дві інші метрики.

Точність (precision) і повнота (recall) класифікатора

Точність (precision) - це відношення діагонального елемента і суми всіх елементів відповідного рядка. Тобто, яка частина пророкувань цього класу була вірна.

За змістом, це «влучність» класифікатора. На скільки часто він потрапляє в факт, коли працює в даному класі.

Повнота (recall) - це те ж саме, але тільки для стовпця. Тобто, яка частка фактичних обставин цього класу була правильно передбачена.

За змістом, це «чуйність» класифікатора. На скільки він «відчуває» факт.

Для наших класифікаторів ми отримаємо такі цифри:

Тут вже видно, що прогнозатор А краще, ніж В. Але нам-то потрібно одне число для оцінки.

І таким числом часто стає

Нам потрібна деяка функція наших двох чисел, яка зростала б при зростанні будь-якого з аргументів. Найпростіший кандидат і є F-міра:

Для нашого класифікатора А вона буде дорівнює 0.72, а для B - 0.59.

Тепер точно видно, що А виграє.

Крім F-заходи бувають і інші варіанти функцій, які віддають перевагу точності, або повноті. Але це вже інша історія.

Схожі статті