Изменения

Перейти к: навигация, поиск

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

1540 байт добавлено, 23:15, 22 июня 2022
Различные виды агрегации Precision и Recall
* '''FN''' — false negative: классификатор неверно утверждает, что объект не принадлежит к рассматриваемому классу.
Здесь про 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> - предсказанный.
Для бинарного случая:
В этом случае TP, TN, FP и FN считаются относительно некоторого класса <math>(i)</math> следующим образом:
: <tex>\text{TP}_i = T_i</tex>
: <tex>\text{FP}_i = \sum\limits_{c \in \text{Classes}} \text{F}_{i,c}</tex>: <tex>\text{FN}_i = \sum\limits_{c \in \text{Classes}} \text{F}_{c,i}</tex>
: <tex>\text{TN}_i = \text{All - TP}_i - \text{FP}_i - \text{FN}_i</tex>
Ввиду того, что такие оценки никак не учитывают изначальное распределение классов в выборке (что может существенно влиять на полученное значение), также существуют взвешенные варианты этих оценок (в терминах многоклассовой классификации):
* '''Precision'''
: <tex>\text{Precision}_W = \dfrac{\sum\limits_{i = 1}^{Nk} \dfrac{T_i P_i}{C_i}}{\text{All}}</tex>
* '''Recall'''
: <tex>\text{Recall}_W = \dfrac{\sum\limits_{i = 1}^{Nk} T_i}{\text{All}}</tex>
= Различные виды агрегации Precision и Recall =
 
''Примеры и картинки взяты из лекций курса «Введение в машинное обучение»<ref>https://web.archive.org/web/20220226120201/https://www.coursera.org/learn/vvedenie-mashinnoe-obuchenie</ref> К.В. Воронцова''
'''Арифметическое среднее:'''
Является наиболее точным усреднением, учитывает оба показателя.
'''Геометрическое среднее, или Индекс Фоулкса–Мэллова (Fowlkes–Mallows index)''': <math> \text{FM} = \sqrt{ \dfrac{\text{TP}}{\text{TP + FP}} \cdot \dfrac{\text{TP}}{\text{TP + FN}} }</math>Менее строгая мера. = F score -мера =
Для общей оценки качества классификатора часто используют 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>
Если брать среднее '''геометрическое''' вместо гармонического, то получитсяИндекс Фоулкса–Мэллова (Fowlkes–Mallows index). Менее строгая мера. : <math> \text{FM} = \sqrt{ \dfrac{\text{TP}}{\text{TP + FP}} \cdot \dfrac{\text{TP}}{\text{TP + FN}} }</math> Среднее гармоническое '''взвешенное''' 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_scores_сomputing.png|thumb|left|150px|Вычисление TP, FP, FN для многоклассовой классификации]]
Для вычисления F-меры (и других) метрик в рамках многоклассовой классификации используется подход "один «один против всех"всех»: каждый класс ровно один раз становится «положительным»,
а остальные — отрицательным (пример вычисления изображён на матрице).
Усреднённая:
: <texmath>\text{F} = \dfrac{1}{Nk} \displaystyle\sum_{i=0}^{Nk} {\text{F}_1score_i}</texmath>,где <math>i</math> - индекс класса, а <math>Nk</math> - количество — число классов.
= ROC -кривая =[[Файл:ROC.png|thumb|300px|ROC -кривая; оранжевым показан идеальный алгоритм, фиолетовым — типичный, а синим — худший]]
Для наглядной оценки качества алгоритма применяется [https://ru.wikipedia.org/wiki/ROC-кривая ROC -кривая]. Кривая строится на плоскости, определённой '''TPR''' (по оси ординат) и '''FPR''' (по оси абсцисс).
Для построении графика используется мягкая классификация: вместо того, чтобы чётко отнести объект к классу, классификатор возвращает вероятности принадлежности объекта к различным классам. Эта уверенность сравнивается с порогом (какой уверенности «достаточно», чтобы отнести объект к положительному классу). В зависимости от значения этого порога меняются значения TPR и FPR.
Алгоритм построения кривой:
Существует '''альтернативный алгоритм построения ROC-кривой'''.
 
# сортируем объекты по уверенности классификатора в их принадлежности к положительному классу
# начинаем в точке (0, 0)
# последовательно продолжаем кривую вверх:
#* для каждого «отрицательного» объекта вверх
#* для каждого «положительного» — вправо.
 
Корректность алгоритма обосновывается тем, что с изменением предсказания для одного объекта в зависимости от его класса меняется либо TPR, либо FPR (значение второго параметра остаётся прежним). Ниже описана другая логика, подводящая к алгоритму выше.
 
[[Файл:ROC_Algo_Alt_Ex1.png|thumb|left|210px|График Accuracy для идеальной классификации]]
[[Файл:ROC_Ex1.png|thumb|right|170px|ROC-кривая для идеальной классификации]]
[[Файл:ROC_Ex2.png|thumb|right|170px|ROC-кривая для неидеальной классификации]]
Напомню, что мы работаем с мягкой классификацией.
   Напомним, что мы работаем с мягкой классификацией.  Рассмотрим примеры (графики accuracy, цветом указан реальный класс объекта: красный - положительный, синий - отрицательный).
Отсортируем наши объекты по возрастанию уверенности классификатора в принадлежности объекта к положительному классу. Допустим, что объекты находятся на равном (единичном) расстоянии друг от друга.
Начнём перебирать "границу раздела"«границу раздела»: если граница в нуле - мы решаем относить все объекты к положительному классу, тогда accuracy = 1/2.
Последовательно сдвигаем границу по единичке вправо:
* если реальный класс объекта, оказавшегося теперь по другую сторону границы - отрицательный, то accuracy увеличивается, так как мы "угадали" «угадали» класс объекта, решив относить объекты левее границы к отрицательному классу;* если же реальный класс объекта - положительный, accuracy уменьшается (по той же логике)
Таким образом, на графиках слева, видно, что:
* на графике идеальной классификации точность в 100% достигается, неидеальной - нет;
* площадь под графиком accuracy идеального классификатора больше, чем аналогичная площадь для неидеального.
Заметим, что, повернув график на 45 градусов, мы получим ROC-кривые для соответствующих классификаторов (графикам accuracy слева соответствуют ROC-кривые справа). Так объясняется альтернативный алгоритм построения ROC-кривой.     
Таким образом, альтернативный алгоритм построения ROC-кривой без пересчета TPR и FPR выглядит так:
# сортируем объекты по уверенности классификатора в их принадлежности к положительному классу
# начинаем в точке (0, 0)
# последовательно продолжаем кривую вверх:
#* для каждого "отрицательного" объекта вверх
#* для каждого "положительного" - вправо.
= Precision-Recall кривая =
'''Обоснование: Чувствительность к соотношению классов.'''
Рассмотрим задачу выделения математических статей из множества научных статей. Допустим, что всего имеется 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.
Избавиться от указанной проблемы с несбалансированными классами можно, перейдя от ROC-кривой к PR-кривой. Она определяется аналогично ROC-кривой, только по осям откладываются не FPR и TPR, а полнота (по оси абсцисс) и точность (по оси ординат). Критерием качества семейства алгоритмов выступает '''площадь под PR-кривой''' (англ. '''Area Under the Curve — AUC-PR''')
 
 
= Источники =
* Coursera: https://www.coursera.org/learn/vvedenie-mashinnoe-obuchenie
* [[Оценка качества в задачах классификации и регрессии]]
* Лекции А. Забашта
* Лекции Е. А. Соколова
* [http://bazhenov.me/blog/2012/07/21/classification-performance-evaluation.html Оценка классификатора (точность, полнота, F-мера)]
1
правка

Навигация