Оценка качества в задачах классификации

Материал из Викиконспекты
Версия от 17:39, 22 сентября 2020; 5.18.249.104 (обсуждение) (Простые оценки)
Перейти к: навигация, поиск

Общие понятия

  • TP — true positive, классификатор верно отнёс объект к рассматриваемому классу.
  • TN — true negative, классификатор верно утверждает, что объект не принадлежит к рассматриваемому классу.
  • FP — false positive, классификатор неверно отнёс объект к рассматриваемому классу.
  • FN — false negative, классификатор неверно утверждает, что объект не принадлежит к рассматриваемому классу.

Confusion matrix (матрица несоответствий) наглядно показывает суть этих показателей:

Принадлежит классу (P) Не принадлежит классу (N)
Предсказана принадлежность классу TP FP
Предсказано отсутствие принадлежности к классу FN TN

Для многоклассовой классификации матрица несоответствий строится по тому же принципу:

Предсказанный класс Класс 1 (C₁) Класс 2 (C₂) Класс 3 (C₃)
1 (P₁) T₁ F₁₂ F₁₃
2 (P₂) F₂₁ T₂ F₂₃
3 (P₃) F₃₁ F₃₂ T₃

В этом случае TP, TN, FP и FN считаются относительно некоторого класса (i) следующим образом:

[math]TP_i = T_i[/math]
[math]FP_i = \sum\limits_{c \in Classes} F_{i,c}[/math]
[math]FN_i = \sum\limits_{c \in Classes} F_{c,i}[/math]
[math]TN_i = All - TP_i - FP_i - FN_i[/math]

Простые оценки

  • Accuracy (точность), показывает долю правильных классификаций. Несмотря на очевидность и простоту является одной из самых малоинформативных оценок классификаторов.
[math]Acc = \dfrac{TP + TN}{TP + TN + FP + FN}[/math]
  • Recall (полнота), так же sensitivity и TPR (true positive rate), показывает долю найденных объектов класса к общему числу объектов класса. Иначе говоря то, насколько хорошо наш классификатор находит объекты из класса.
[math]Recall = \dfrac{TP}{TP + FN}[/math]
  • Precision (да, тоже точность), показывает долю объектов класса среди объектов выделенных классификатором.
[math]Prec = \dfrac{TP}{TP + FP}[/math]
  • Specificity, показывает долю верных срабатываний классификатора к общему числу объектов за пределами класса. Иначе говоря то, насколько часто классификатор правильно не относит объекты к классу.
[math]Spc = \dfrac{TN}{FP + TN}[/math]
  • Fall-out, так же FPR (false positive rate), показывает долю неверных срабатываний классификатора к общему числу объектов за пределами класса. Иначе говоря то, насколько часто классификатор ошибается при отнесении того или иного объекта к классу.
[math]FPR = \dfrac{FP}{FP + TN}[/math]

В виду того, что такие оценки никак не учитывают изначальное распределение классов в выборке (что может существенно влиять на полученное значение), так же существуют взвешенные варианты этих оценок (в терминах многоклассовой классификации):

  • Precision
[math]Prec_W = \dfrac{\sum\limits_{i = 1}^{N} \dfrac{T_i P_i}{C_i}}{All}[/math]
  • Recall
[math]Recall_W = \dfrac{\sum\limits_{i = 1}^{N} T_i}{All}[/math]

ROC кривая

ROC кривая; оранжевым показан идеальный алгоритм, фиолетовым — типичный, а синим — худший

Для наглядной оценки качества алгоритма применяется ROC кривая. Кривая строится на плоскости, определённой осями полноты (recall, TPR) по вертикали и частоты ложных срабатываний (FPR, 1-Spc).

Чтобы построить кривую:

  1. Запустить классификатор на тестовой выборке
  2. Отсортировать результаты по уверенности классификатора в принадлежности объекта к классу
  3. Пока не кончились элементы:
    1. Взять объект с максимальной уверенностью
    2. Сравнить метку с реальной
    3. Пересчитать TPR и FPR на взятых объектах
    4. Поставить точку, если обе характеристики не NaN / ±∞
  4. Построить кривую по точкам

Таким образом число точек не превосходит число объектов, идеальный алгоритм проходит через точку (0;1), худший (например, монетка) — прямая TPR = FPR. Для численной же оценки алгоритма по ROC кривой используется значение площади под ней (AUC, area under curve). Таким образом идеальный алгоритм имеет AUC равный 1, а плохой — 0,5.

F₁ score

Для общей оценки качества классификатора часто используют F₁ меру — среднее гармоническое между precision и recall:

[math]F_1 = \left ( \dfrac{Prec^{-1} + Recall^{-1}}{2} \right )^{-1} = 2 \cdot \dfrac{Prec \cdot Recall}{β^2 \cdot Prec + Recall}[/math]

F₁ мера так же может быть обобщена до Fβ:

[math]F_β = (1 + β^2) \dfrac{Prec \cdot Recall}{β^2 \cdot Prec + Recall}[/math]

Fβ измеряет эффективность классификатора учитывая recall в β раз более важным чем precision.

Для многоклассовой классификации с учётом изначального распределения по классам имеет смысл рассматривать микро- и макро- F меру:

[math]micro F_β = \sum\limits_{c \in Classes} \dfrac{C_c F_β(c)}{All}[/math]
[math]macro F_β = (1 + β^2) \dfrac{Prec_W \cdot Recall_W}{β^2 \cdot Prec_W + Recall_W}[/math]