Оценка качества в задачах классификации — различия между версиями

Материал из Викиконспекты
Перейти к: навигация, поиск
(change formula for F₁ score)
м (rollbackEdits.php mass rollback)
 
(не показано 16 промежуточных версий 6 участников)
Строка 1: Строка 1:
 
= Общие понятия =
 
= Общие понятия =
* '''TP''' — true positive, классификатор верно отнёс объект к рассматриваемому классу.
+
* '''TP''' — true positive: классификатор верно отнёс объект к рассматриваемому классу.
* '''TN''' — true negative, классификатор верно утверждает, что объект не принадлежит к рассматриваемому классу.
+
* '''TN''' — true negative: классификатор верно утверждает, что объект не принадлежит к рассматриваемому классу.
* '''FP''' — false positive, классификатор неверно отнёс объект к рассматриваемому классу.
+
* '''FP''' — false positive: классификатор неверно отнёс объект к рассматриваемому классу.
* '''FN''' — false negative, классификатор неверно утверждает, что объект не принадлежит к рассматриваемому классу.
+
* '''FN''' — false negative: классификатор неверно утверждает, что объект не принадлежит к рассматриваемому классу.
  
'''Confusion matrix''' ('''матрица несоответствий''') наглядно показывает суть этих показателей:
+
Здесь про TP, TN, FP, FN и понятия, через них выражающиеся, мы говорим в рамках одного класса бинарной классификации. То есть, в такой системе подразумевается, что реальное число объектов класса 0 (для бинарного случая 0/1) может выражаться как <math>\text{TP₀ + FN₀ = FP₁ + TN₁}</math>
 +
 
 +
'''Confusion matrix''' ('''матрица ошибок / несоответствий / потерь, CM''')
 +
[[Файл:F_scores_сomputing.png|thumb|right|150px|Вычисление TP, FP, FN по CM]]
 +
— квадратная матрица размера k × k, где <tex>\text{CM}_{t,c}</tex> — число объектов класса <math>t</math>,
 +
которые были квалифицированны как класс <math>c</math>, а <math>k</math> — число классов. Значения ячеек CM могут быть вычислены по формуле:
 +
<tex>\text{CM}(y, \hat{y})_{t,c} =
 +
\displaystyle\sum_{i = 1}^{n}[(y_i = t) ∧ (\hat{y_i} = c)]</tex>, где <tex>y_i</tex> — реальный класс объекта, а <tex>\hat{y_i}</tex> — предсказанный.
 +
 
 +
Для бинарного случая:
 
{| class="wikitable" style="text-align: center;"
 
{| class="wikitable" style="text-align: center;"
 
|-
 
|-
Строка 44: Строка 53:
 
| style="color: #22aa22;" | T₃
 
| style="color: #22aa22;" | T₃
 
|}
 
|}
В этом случае TP, TN, FP и FN считаются относительно некоторого класса (i) следующим образом:
+
В этом случае TP, TN, FP и FN считаются относительно некоторого класса <math>(i)</math> следующим образом:
: <tex>TP_i = T_i</tex>
+
: <tex>\text{TP}_i = T_i</tex>
: <tex>FP_i = \sum\limits_{c \in Classes} F_{i,c}</tex>
+
: <tex>\text{FP}_i = \sum\limits_{c \in \text{Classes}} \text{F}_{i,c}</tex>
: <tex>FN_i = \sum\limits_{c \in Classes} F_{c,i}</tex>
+
: <tex>\text{FN}_i = \sum\limits_{c \in \text{Classes}} \text{F}_{c,i}</tex>
: <tex>TN_i = All - TP_i - FP_i - FN_i</tex>
+
: <tex>\text{TN}_i = \text{All - TP}_i - \text{FP}_i - \text{FN}_i</tex>
  
 
= Простые оценки =
 
= Простые оценки =
* '''Accuracy''' (точность), показывает долю правильных классификаций. Несмотря на очевидность и простоту является одной из самых малоинформативных оценок классификаторов.
+
* '''Accuracy''' (точность) показывает долю правильных классификаций. Несмотря на очевидность и простоту, является одной из самых малоинформативных оценок классификаторов.
: <tex>Acc = \dfrac{TP + TN}{TP + TN + FP + FN}</tex>
+
: <tex>\text{Acc} = \dfrac{\text{TP + TN}}{\text{TP + TN + FP + FN}}</tex>
* '''Recall''' (полнота), так же '''sensitivity''' и '''TPR''' (true positive rate), показывает долю найденных объектов класса к общему числу объектов класса. Иначе говоря то, насколько хорошо наш классификатор находит объекты из класса.
+
* '''Recall''' (полнота, '''sensitivity''', '''TPR''' (true positive rate)) показывает отношение верно классифицированных объектов класса к общему числу элементов этого класса.
: <tex>Recall = \dfrac{TP}{TP + FN}</tex>
+
: <tex>\text{Recall} = \dfrac{\text{TP}}{\text{TP + FN}}</tex>
* '''Precision''' (да, тоже точность), показывает долю объектов класса среди объектов выделенных классификатором.
+
* '''Precision''' (точность, перевод совпадает с accuracy)показывает долю верно классифицированных объектов среди всех объектов, которые к этому классу отнес классификатор.
: <tex>Prec = \dfrac{TP}{TP + FP}</tex>
+
: <tex>\text{Precision} = \dfrac{\text{TP}}{\text{TP + FP}}</tex>
* '''Specificity''', показывает долю верных срабатываний классификатора к общему числу объектов за пределами класса. Иначе говоря то, насколько часто классификатор правильно '''не''' относит объекты к классу.
+
* '''Specificity''' показывает отношение верных срабатываний классификатора к общему числу объектов за пределами класса. Иначе говоря, то, насколько часто классификатор правильно '''не''' относит объекты к классу.
: <tex>Spc = \dfrac{TN}{FP + TN}</tex>
+
: <tex>\text{Specificity} = \dfrac{\text{TN}}{\text{FP + TN}}</tex>
* '''Fall-out''', так же '''FPR''' (false positive rate), показывает долю неверных срабатываний классификатора к общему числу объектов за пределами класса. Иначе говоря то, насколько часто классификатор ошибается при отнесении того или иного объекта к классу.
+
* '''Fall-out''' — ('''FPR''' (false positive rate)) показывает долю неверных срабатываний классификатора к общему числу объектов за пределами класса. Иначе говоря то, насколько часто классификатор ошибается при отнесении того или иного объекта к классу.
: <tex>FPR = \dfrac{FP}{FP + TN}</tex>
+
: <tex>\text{FPR} = \dfrac{\text{FP}}{\text{FP + TN}}</tex>
  
В виду того, что такие оценки никак не учитывают изначальное распределение классов в выборке (что может существенно влиять на полученное значение), так же существуют взвешенные варианты этих оценок (в терминах многоклассовой классификации):
+
Ввиду того, что такие оценки никак не учитывают изначальное распределение классов в выборке (что может существенно влиять на полученное значение), также существуют взвешенные варианты этих оценок (в терминах многоклассовой классификации):
 
* '''Precision'''
 
* '''Precision'''
: <tex>Prec_W = \dfrac{\sum\limits_{i = 1}^{N} \dfrac{T_i P_i}{C_i}}{All}</tex>
+
: <tex>\text{Precision}_W = \dfrac{\sum\limits_{i = 1}^{k} \dfrac{T_i P_i}{C_i}}{\text{All}}</tex>
 
* '''Recall'''
 
* '''Recall'''
: <tex>Recall_W = \dfrac{\sum\limits_{i = 1}^{N} T_i}{All}</tex>
+
: <tex>\text{Recall}_W = \dfrac{\sum\limits_{i = 1}^{k} T_i}{\text{All}}</tex>
 +
 
 +
= Различные виды агрегации Precision и Recall =
  
= ROC кривая =
+
''Примеры и картинки взяты из лекций курса «Введение в машинное обучение»<ref>https://web.archive.org/web/20220226120201/https://www.coursera.org/learn/vvedenie-mashinnoe-obuchenie</ref> К.В. Воронцова''
[[Файл:ROC.png|thumb|300px|ROC кривая; оранжевым показан идеальный алгоритм, фиолетовым — типичный, а синим — худший]]
 
  
Для наглядной оценки качества алгоритма применяется [https://en.wikipedia.org/wiki/Receiver_operating_characteristic ROC кривая]. Кривая строится на плоскости, определённой осями полноты (recall, TPR) по вертикали и частоты ложных срабатываний (FPR, 1-Spc).
+
'''Арифметическое среднее:'''
 +
[[Файл:EX1.png|thumb|145px|Линии уровня для среднего арифметического]]
  
Чтобы построить кривую:
+
: <math>A = \dfrac{1}{2} (\text{precision + recall})</math>
 +
 
 +
* Если precision = 0.05, recall = 1, то A = 0.525
 +
* Если precision = 0.525, recall = 0.525, то A = 0.525.
 +
* Первый классификатор — константный, не имеет смысла.
 +
* Второй классификатор показывает неплохое качество.
 +
Таким образом, взятие среднего арифметического не является показательным.
 +
 
 +
'''Минимум:'''
 +
[[Файл:EX2.png|thumb|145px|Линии уровня для минимума]]
 +
 
 +
: <tex>\text{M = min(precision, recall)}</tex>
 +
 
 +
* Если precision = 0.05, recall = 1, то M = 0.05
 +
* Если precision = 0.525, recall = 0.525, то M = 0.525.
 +
То есть, довольно неплохо отражает качество классификатора, не завышая его.
 +
* Если precision = 0.2, recall = 1, то M = 0.2.
 +
* Если precision = 0.2, recall = 0.3, то M = 0.2.
 +
Но не отличает классификаторы с разными неминимальными показателями.
 +
 
 +
'''Гармоническое среднее, или F-мера:'''
 +
[[Файл:EX3.png|thumb|145px|Линии уровня для F-меры]]
 +
 
 +
: <tex>\text{F} = \dfrac{2 \cdot \text{precision} \cdot \text{recall}}{\text{precision + recall}}</tex>
 +
 
 +
* Если precision = 0.05, recall = 1, то F = 0.1.
 +
* Если precision = 0.525, recall = 0.525, то F = 0.525.
 +
* Если precision = 0.2, recall = 1, то F = 0.33.
 +
* Если precision = 0.2, recall = 0.3, то F = 0.24.
 +
Является наиболее точным усреднением, учитывает оба показателя.
 +
 
 +
'''Геометрическое среднее, или Индекс Фоулкса–Мэллова (Fowlkes–Mallows index)'''
 +
: <math> \text{FM} = \sqrt{ \dfrac{\text{TP}}{\text{TP + FP}} \cdot \dfrac{\text{TP}}{\text{TP + FN}} }</math>
 +
Менее строгая мера.
 +
 
 +
= F-мера =
 +
 
 +
Для общей оценки качества классификатора часто используют F₁-меру. Оригинально она вычисляется для позитивного класса случая бинарной классификации, обобщается с помощью приниципа «‎один против всех» (описан подробнее ниже, для многоклассовой классификации). F₁-мера  — среднее гармоническое между precision и recall:
 +
: <tex>\text{F}_1 = \left ( \dfrac{\text{precision}^{-1} + \text{recall}^{-1}}{2} \right )^{-1} = 2 \cdot \dfrac{\text{precision} \cdot \text{recall}}{\text{precision + recall}}</tex>
 +
 
 +
Среднее гармоническое '''взвешенное''' F<sub>β</sub> (F<sub>1</sub>-мера — частный случай F<sub>β</sub>-меры для β = 1).
 +
F<sub>β</sub> измеряет эффективность классификатора учитывая recall в β раз более важным чем precision:
 +
: <tex>\text{F}_β = (1 + β^2) \dfrac{\text{Precision} \cdot \text{Recall}}{β^2 \cdot \text{Precision + Recall}}</tex>
 +
 
 +
'''F-мера для многоклассовой классификации. Три вида усреднения'''
 +
[[Файл:F_scores.png|thumb|400px|Принцип усреднения различных F-мер для нескольких классов]]
 +
[[Файл:F_scores_сomputing.png|thumb|left|150px|Вычисление TP, FP, FN для многоклассовой классификации]]
 +
 
 +
Для вычисления F-меры (и других) метрик в рамках многоклассовой классификации используется подход «один против всех»: каждый класс ровно один раз становится «положительным»,
 +
а остальные — отрицательным (пример вычисления изображён на матрице).
 +
 
 +
Таким образом, в зависимости от этапа вычисления, на котором производится усреднение, можно вычислить micro-average, macro-average и average F-меры (логика вычисления изображена на схеме справа).
 +
Микро- и макро-:
 +
: <tex>\text{F} = 2 \cdot \dfrac{\text{precision} \cdot \text{recall}}{\text{precision + recall}}</tex>,
 +
 
 +
где для micro-average precision и recall вычислены из усреднённых TP, FP, FN;
 +
 
 +
для macro-average precision и recall вычислены из усреднённых precision<sub>i</sub>, recall<sub>i</sub>;
 +
 
 +
Усреднённая:
 +
: <math>\text{F} = \dfrac{1}{k} \displaystyle\sum_{i = 0}^{k} {\text{F}_1score_i}</math>,
 +
где <math>i</math> — индекс класса, а <math>k</math> — число классов.
 +
 
 +
= ROC-кривая =
 +
[[Файл:ROC.png|thumb|300px|ROC-кривая; оранжевым показан идеальный алгоритм, фиолетовым — типичный, а синим — худший]]
 +
 
 +
Для наглядной оценки качества алгоритма применяется [https://ru.wikipedia.org/wiki/ROC-кривая ROC-кривая]. Кривая строится на плоскости, определённой '''TPR''' (по оси ординат) и '''FPR''' (по оси абсцисс).
 +
 
 +
Для построении графика используется мягкая классификация: вместо того, чтобы чётко отнести объект к классу, классификатор возвращает вероятности принадлежности объекта к различным классам. Эта уверенность сравнивается с порогом (какой уверенности «достаточно», чтобы отнести объект к положительному классу). В зависимости от значения этого порога меняются значения TPR и FPR.
 +
 
 +
Алгоритм построения кривой:
 
# Запустить классификатор на тестовой выборке
 
# Запустить классификатор на тестовой выборке
 
# Отсортировать результаты по уверенности классификатора в принадлежности объекта к классу
 
# Отсортировать результаты по уверенности классификатора в принадлежности объекта к классу
Строка 83: Строка 164:
 
# Построить кривую по точкам
 
# Построить кривую по точкам
  
Таким образом число точек не превосходит число объектов, идеальный алгоритм проходит через точку (0;1), худший (например, монетка) прямая TPR = FPR.
+
Таким образом:
Для численной же оценки алгоритма по ROC кривой используется значение площади под ней ('''AUC''', area under curve). Таким образом идеальный алгоритм имеет AUC равный 1, а плохой — 0,5.
+
число точек не превосходит число объектов
= F₁ score =
+
идеальному алгоритму соответствует ROC-кривая, проходящая через точку <math>(0;1)</math>
Для общей оценки качества классификатора часто используют F₁ меру среднее гармоническое между precision и recall:
+
худшему алгоритму (например, монетке) соответствует прямая TPR = FPR.
: <tex>F_1 = \left ( \dfrac{Prec^{-1} + Recall^{-1}}{2} \right )^{-1} = 2 \cdot \dfrac{Prec \cdot Recall}{Prec + Recall}</tex>
+
 
 +
Для численной оценки алгоритма по ROC-кривой используется значение площади под ней ('''AUC''', area under curve). Идеальный алгоритм имеет AUC, равный 1, худший — 0,5.
 +
 
 +
С другой стороны, для построения ROC-кривой не обязательно пересчитывать TPR и FPR.
 +
 
 +
Существует '''альтернативный алгоритм построения ROC-кривой'''.
 +
 
 +
# сортируем объекты по уверенности классификатора в их принадлежности к положительному классу
 +
# начинаем в точке (0, 0)
 +
# последовательно продолжаем кривую вверх:
 +
#* для каждого «отрицательного» объекта вверх
 +
#* для каждого «положительного» вправо.
 +
 
 +
Корректность алгоритма обосновывается тем, что с изменением предсказания для одного объекта в зависимости от его класса меняется либо TPR, либо FPR (значение второго параметра остаётся прежним). Ниже описана другая логика, подводящая к алгоритму выше.
 +
 
 +
[[Файл:ROC_Algo_Alt_Ex1.png|thumb|left|210px|График Accuracy для идеальной классификации]]
 +
[[Файл:ROC_Ex1.png|thumb|right|170px|ROC-кривая для идеальной классификации]]
 +
[[Файл:ROC_Algo_Alt_Ex2.png|thumb|left|210px|График Accuracy для неидеальной классификации]]
 +
[[Файл:ROC_Ex2.png|thumb|right|170px|ROC-кривая для неидеальной классификации]] 
 +
 
 +
 
 +
 
 +
 
 +
 
 +
Напомним, что мы работаем с мягкой классификацией.
 +
 
 +
Рассмотрим примеры (графики accuracy, цветом указан реальный класс объекта: красный — положительный, синий — отрицательный).
 +
Отсортируем наши объекты по возрастанию уверенности классификатора в принадлежности объекта к положительному классу. Допустим, что объекты находятся на равном (единичном) расстоянии друг от друга.
 +
 
 +
Начнём перебирать «границу раздела»: если граница в нуле — мы решаем относить все объекты к положительному классу, тогда accuracy = 1/2.
 +
Последовательно сдвигаем границу по единичке вправо:
 +
* если реальный класс объекта, оказавшегося теперь по другую сторону границы — отрицательный, то accuracy увеличивается, так как мы «угадали» класс объекта, решив относить объекты левее границы к отрицательному классу;
 +
* если же реальный класс объекта — положительный, accuracy уменьшается (по той же логике)
 +
 
 +
Таким образом, на графиках слева, видно, что:
 +
* на графике идеальной классификации точность в 100% достигается, неидеальной — нет;
 +
* площадь под графиком accuracy идеального классификатора больше, чем аналогичная площадь для неидеального.
 +
 
 +
Заметим, что, повернув график на 45 градусов, мы получим ROC-кривые для соответствующих классификаторов (графикам accuracy слева соответствуют ROC-кривые справа). Так объясняется альтернативный алгоритм построения ROC-кривой.
 +
 
 +
 
 +
 
 +
 
 +
 
 +
 
 +
 
 +
= Precision-Recall кривая =
 +
[[Файл:PR_curve.png|thumb|400px|PR кривая]]
 +
 
 +
'''Обоснование: Чувствительность к соотношению классов.'''
 +
 
 +
Рассмотрим задачу выделения математических статей из множества научных статей. Допустим, что всего имеется 1.000.100 статей, из которых лишь 100 относятся к математике. Если нам удастся построить алгоритм <math>a(x)</math>, идеально решающий задачу, то его TPR будет равен единице, а FPR — нулю. Рассмотрим теперь «плохой» алгоритм, дающий положительный ответ на 95 математических и 50.000 нематематических статьях. Такой алгоритм совершенно бесполезен, но при этом имеет TPR = 0.95 и FPR = 0.05, что крайне близко к показателям идеального алгоритма.
 +
Таким образом, если положительный класс существенно меньше по размеру, то AUC-ROC может давать неадекватную оценку качества работы алгоритма, поскольку измеряет долю неверно принятых объектов относительно общего числа отрицательных. Так, алгоритм <math>b(x)</math>, помещающий 100 релевантных документов на позиции с 50.001-й по 50.101-ю, будет иметь AUC-ROC 0.95.
 +
 
 +
'''Precison-recall (PR) кривая.'''
  
F₁ мера так же может быть обобщена до F<sub>β</sub>:
+
Избавиться от указанной проблемы с несбалансированными классами можно, перейдя от ROC-кривой к PR-кривой. Она определяется аналогично ROC-кривой, только по осям откладываются не FPR и TPR, а полнота (по оси абсцисс) и точность (по оси ординат). Критерием качества семейства алгоритмов выступает '''площадь под PR-кривой''' (англ. '''Area Under the Curve — AUC-PR''')
: <tex>F_β = (1 + β^2) \dfrac{Prec \cdot Recall}{β^2 \cdot Prec + Recall}</tex>
 
  
F<sub>β</sub> измеряет эффективность классификатора учитывая recall в β раз более важным чем precision.
 
  
Для многоклассовой классификации с учётом изначального распределения по классам имеет смысл рассматривать микро- и макро- F меру:
+
= Источники =
: <tex>micro F_β = \sum\limits_{c \in Classes} \dfrac{P_c F_β(c)}{All}</tex>
+
* Coursera: https://www.coursera.org/learn/vvedenie-mashinnoe-obuchenie
: <tex>macro F_β = (1 + β^2) \dfrac{Prec_W \cdot Recall_W}{β^2 \cdot Prec_W + Recall_W}</tex>
+
* [[Оценка качества в задачах классификации и регрессии]]
 +
* Лекции А. Забашта
 +
* Лекции Е. А. Соколова
 +
* [http://bazhenov.me/blog/2012/07/21/classification-performance-evaluation.html Оценка классификатора (точность, полнота, F-мера)]

Текущая версия на 19:22, 4 сентября 2022

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

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

Здесь про TP, TN, FP, FN и понятия, через них выражающиеся, мы говорим в рамках одного класса бинарной классификации. То есть, в такой системе подразумевается, что реальное число объектов класса 0 (для бинарного случая 0/1) может выражаться как [math]\text{TP₀ + FN₀ = FP₁ + TN₁}[/math]

Confusion matrix (матрица ошибок / несоответствий / потерь, CM)

Вычисление TP, FP, FN по CM

— квадратная матрица размера k × k, где [math]\text{CM}_{t,c}[/math] — число объектов класса [math]t[/math], которые были квалифицированны как класс [math]c[/math], а [math]k[/math] — число классов. Значения ячеек CM могут быть вычислены по формуле: [math]\text{CM}(y, \hat{y})_{t,c} = \displaystyle\sum_{i = 1}^{n}[(y_i = t) ∧ (\hat{y_i} = c)][/math], где [math]y_i[/math] — реальный класс объекта, а [math]\hat{y_i}[/math] — предсказанный.

Для бинарного случая:

Принадлежит классу (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 считаются относительно некоторого класса [math](i)[/math] следующим образом:

[math]\text{TP}_i = T_i[/math]
[math]\text{FP}_i = \sum\limits_{c \in \text{Classes}} \text{F}_{i,c}[/math]
[math]\text{FN}_i = \sum\limits_{c \in \text{Classes}} \text{F}_{c,i}[/math]
[math]\text{TN}_i = \text{All - TP}_i - \text{FP}_i - \text{FN}_i[/math]

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

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

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

  • Precision
[math]\text{Precision}_W = \dfrac{\sum\limits_{i = 1}^{k} \dfrac{T_i P_i}{C_i}}{\text{All}}[/math]
  • Recall
[math]\text{Recall}_W = \dfrac{\sum\limits_{i = 1}^{k} T_i}{\text{All}}[/math]

Различные виды агрегации Precision и Recall

Примеры и картинки взяты из лекций курса «Введение в машинное обучение»[1] К.В. Воронцова

Арифметическое среднее:

Линии уровня для среднего арифметического
[math]A = \dfrac{1}{2} (\text{precision + recall})[/math]
  • Если precision = 0.05, recall = 1, то A = 0.525
  • Если precision = 0.525, recall = 0.525, то A = 0.525.
  • Первый классификатор — константный, не имеет смысла.
  • Второй классификатор показывает неплохое качество.

Таким образом, взятие среднего арифметического не является показательным.

Минимум:

Линии уровня для минимума
[math]\text{M = min(precision, recall)}[/math]
  • Если precision = 0.05, recall = 1, то M = 0.05
  • Если precision = 0.525, recall = 0.525, то M = 0.525.

То есть, довольно неплохо отражает качество классификатора, не завышая его.

  • Если precision = 0.2, recall = 1, то M = 0.2.
  • Если precision = 0.2, recall = 0.3, то M = 0.2.

Но не отличает классификаторы с разными неминимальными показателями.

Гармоническое среднее, или F-мера:

Линии уровня для F-меры
[math]\text{F} = \dfrac{2 \cdot \text{precision} \cdot \text{recall}}{\text{precision + recall}}[/math]
  • Если precision = 0.05, recall = 1, то F = 0.1.
  • Если precision = 0.525, recall = 0.525, то F = 0.525.
  • Если precision = 0.2, recall = 1, то F = 0.33.
  • Если precision = 0.2, recall = 0.3, то F = 0.24.

Является наиболее точным усреднением, учитывает оба показателя.

Геометрическое среднее, или Индекс Фоулкса–Мэллова (Fowlkes–Mallows index)

[math] \text{FM} = \sqrt{ \dfrac{\text{TP}}{\text{TP + FP}} \cdot \dfrac{\text{TP}}{\text{TP + FN}} }[/math]

Менее строгая мера.

F-мера

Для общей оценки качества классификатора часто используют F₁-меру. Оригинально она вычисляется для позитивного класса случая бинарной классификации, обобщается с помощью приниципа «‎один против всех» (описан подробнее ниже, для многоклассовой классификации). F₁-мера — среднее гармоническое между precision и recall:

[math]\text{F}_1 = \left ( \dfrac{\text{precision}^{-1} + \text{recall}^{-1}}{2} \right )^{-1} = 2 \cdot \dfrac{\text{precision} \cdot \text{recall}}{\text{precision + recall}}[/math]

Среднее гармоническое взвешенное Fβ (F1-мера — частный случай Fβ-меры для β = 1). Fβ измеряет эффективность классификатора учитывая recall в β раз более важным чем precision:

[math]\text{F}_β = (1 + β^2) \dfrac{\text{Precision} \cdot \text{Recall}}{β^2 \cdot \text{Precision + Recall}}[/math]

F-мера для многоклассовой классификации. Три вида усреднения

Принцип усреднения различных F-мер для нескольких классов
Вычисление TP, FP, FN для многоклассовой классификации

Для вычисления F-меры (и других) метрик в рамках многоклассовой классификации используется подход «один против всех»: каждый класс ровно один раз становится «положительным», а остальные — отрицательным (пример вычисления изображён на матрице).

Таким образом, в зависимости от этапа вычисления, на котором производится усреднение, можно вычислить micro-average, macro-average и average F-меры (логика вычисления изображена на схеме справа). Микро- и макро-:

[math]\text{F} = 2 \cdot \dfrac{\text{precision} \cdot \text{recall}}{\text{precision + recall}}[/math],

где для micro-average precision и recall вычислены из усреднённых TP, FP, FN;

для macro-average precision и recall вычислены из усреднённых precisioni, recalli;

Усреднённая:

[math]\text{F} = \dfrac{1}{k} \displaystyle\sum_{i = 0}^{k} {\text{F}_1score_i}[/math],

где [math]i[/math] — индекс класса, а [math]k[/math] — число классов.

ROC-кривая

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

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

Для построении графика используется мягкая классификация: вместо того, чтобы чётко отнести объект к классу, классификатор возвращает вероятности принадлежности объекта к различным классам. Эта уверенность сравнивается с порогом (какой уверенности «достаточно», чтобы отнести объект к положительному классу). В зависимости от значения этого порога меняются значения TPR и FPR.

Алгоритм построения кривой:

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

Таким образом: число точек не превосходит число объектов идеальному алгоритму соответствует ROC-кривая, проходящая через точку [math](0;1)[/math] худшему алгоритму (например, монетке) соответствует прямая TPR = FPR.

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

С другой стороны, для построения ROC-кривой не обязательно пересчитывать TPR и FPR.

Существует альтернативный алгоритм построения ROC-кривой.

  1. сортируем объекты по уверенности классификатора в их принадлежности к положительному классу
  2. начинаем в точке (0, 0)
  3. последовательно продолжаем кривую вверх:
    • для каждого «отрицательного» объекта вверх
    • для каждого «положительного» — вправо.

Корректность алгоритма обосновывается тем, что с изменением предсказания для одного объекта в зависимости от его класса меняется либо TPR, либо FPR (значение второго параметра остаётся прежним). Ниже описана другая логика, подводящая к алгоритму выше.

График Accuracy для идеальной классификации
ROC-кривая для идеальной классификации
График Accuracy для неидеальной классификации
ROC-кривая для неидеальной классификации



Напомним, что мы работаем с мягкой классификацией.

Рассмотрим примеры (графики accuracy, цветом указан реальный класс объекта: красный — положительный, синий — отрицательный). Отсортируем наши объекты по возрастанию уверенности классификатора в принадлежности объекта к положительному классу. Допустим, что объекты находятся на равном (единичном) расстоянии друг от друга.

Начнём перебирать «границу раздела»: если граница в нуле — мы решаем относить все объекты к положительному классу, тогда accuracy = 1/2. Последовательно сдвигаем границу по единичке вправо:

  • если реальный класс объекта, оказавшегося теперь по другую сторону границы — отрицательный, то accuracy увеличивается, так как мы «угадали» класс объекта, решив относить объекты левее границы к отрицательному классу;
  • если же реальный класс объекта — положительный, accuracy уменьшается (по той же логике)

Таким образом, на графиках слева, видно, что:

  • на графике идеальной классификации точность в 100% достигается, неидеальной — нет;
  • площадь под графиком accuracy идеального классификатора больше, чем аналогичная площадь для неидеального.

Заметим, что, повернув график на 45 градусов, мы получим ROC-кривые для соответствующих классификаторов (графикам accuracy слева соответствуют ROC-кривые справа). Так объясняется альтернативный алгоритм построения ROC-кривой.




Precision-Recall кривая

PR кривая

Обоснование: Чувствительность к соотношению классов.

Рассмотрим задачу выделения математических статей из множества научных статей. Допустим, что всего имеется 1.000.100 статей, из которых лишь 100 относятся к математике. Если нам удастся построить алгоритм [math]a(x)[/math], идеально решающий задачу, то его TPR будет равен единице, а FPR — нулю. Рассмотрим теперь «плохой» алгоритм, дающий положительный ответ на 95 математических и 50.000 нематематических статьях. Такой алгоритм совершенно бесполезен, но при этом имеет TPR = 0.95 и FPR = 0.05, что крайне близко к показателям идеального алгоритма. Таким образом, если положительный класс существенно меньше по размеру, то AUC-ROC может давать неадекватную оценку качества работы алгоритма, поскольку измеряет долю неверно принятых объектов относительно общего числа отрицательных. Так, алгоритм [math]b(x)[/math], помещающий 100 релевантных документов на позиции с 50.001-й по 50.101-ю, будет иметь AUC-ROC 0.95.

Precison-recall (PR) кривая.

Избавиться от указанной проблемы с несбалансированными классами можно, перейдя от ROC-кривой к PR-кривой. Она определяется аналогично ROC-кривой, только по осям откладываются не FPR и TPR, а полнота (по оси абсцисс) и точность (по оси ординат). Критерием качества семейства алгоритмов выступает площадь под PR-кривой (англ. Area Under the Curve — AUC-PR)


Источники

  • https://web.archive.org/web/20220226120201/https://www.coursera.org/learn/vvedenie-mashinnoe-obuchenie
  • Источник — «http://neerc.ifmo.ru/wiki/index.php?title=Оценка_качества_в_задачах_классификации&oldid=85014»