Изменения

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

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

13 577 байт добавлено, 23:15, 22 июня 2022
Различные виды агрегации Precision и Recall
= Общие понятия =
* '''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''') наглядно показывает суть этих показателей[[Файл: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;"
|-
| style="color: #22aa22;" | T₃
|}
В этом случае TP, TN, FP и FN считаются относительно некоторого класса <math>(i) </math> следующим образом:: <tex>TP_i \text{TP}_i = T_i</tex>: <tex>FP_i \text{FP}_i = \sum\limits_{c \in \text{Classes} F_} \text{F}_{i,c}</tex>: <tex>FN_i \text{FN}_i = \sum\limits_{c \in \text{Classes} F_} \text{F}_{c,i}</tex>: <tex>TN_i \text{TN}_i = \text{All - TP_i TP}_i - FP_i \text{FP}_i - FN_i\text{FN}_i</tex>
= Простые оценки =
* '''Accuracy''' (точность), показывает долю правильных классификаций. Несмотря на очевидность и простоту , является одной из самых малоинформативных оценок классификаторов.: <tex>\text{Acc } = \dfrac{\text{TP + TN}}{\text{TP + TN + FP + FN}}</tex>* '''Recall''' (полнота), так же '''sensitivity''' и , '''TPR''' (true positive rate), ) показывает долю найденных отношение верно классифицированных объектов класса к общему числу объектов класса. Иначе говоря то, насколько хорошо наш классификатор находит объекты из элементов этого класса.: <tex>\text{Recall } = \dfrac{\text{TP}}{\text{TP + FN}}</tex>* '''Precision''' (даточность, тоже точностьперевод совпадает с accuracy), показывает долю верно классифицированных объектов класса среди всех объектов выделенных классификатором, которые к этому классу отнес классификатор.: <tex>Prec \text{Precision} = \dfrac{\text{TP}}{\text{TP + FP}}</tex>* '''Specificity''', показывает долю отношение верных срабатываний классификатора к общему числу объектов за пределами класса. Иначе говоря , то, насколько часто классификатор правильно '''не''' относит объекты к классу.: <tex>Spc \text{Specificity} = \dfrac{\text{TN}}{\text{FP + TN}}</tex>* '''Fall-out''', так же — ('''FPR''' (false positive rate), ) показывает долю неверных срабатываний классификатора к общему числу объектов за пределами класса. Иначе говоря то, насколько часто классификатор ошибается при отнесении того или иного объекта к классу.: <tex>\text{FPR } = \dfrac{\text{FP}}{\text{FP + TN}}</tex>
В виду Ввиду того, что такие оценки никак не учитывают изначальное распределение классов в выборке (что может существенно влиять на полученное значение), так же также существуют взвешенные варианты этих оценок (в терминах многоклассовой классификации):
* '''Precision'''
: <tex>Prec_W \text{Precision}_W = \dfrac{\sum\limits_{i = 1}^{Nk} \dfrac{T_i P_i}{C_i}}{\text{All}}</tex>
* '''Recall'''
: <tex>Recall_W \text{Recall}_W = \dfrac{\sum\limits_{i = 1}^{Nk} T_i}{\text{All}}</tex> = Различные виды агрегации Precision и Recall =
= ROC кривая =[[Файл''Примеры и картинки взяты из лекций курса «Введение в машинное обучение»<ref>https:ROC//web.png|thumb|300px|ROC кривая; оранжевым показан идеальный алгоритм, фиолетовым — типичный, а синим — худший]]archive.org/web/20220226120201/https://www.coursera.org/learn/vvedenie-mashinnoe-obuchenie</ref> К.В. Воронцова''
Для наглядной оценки качества алгоритма применяется '''Арифметическое среднее:'''[https[Файл://enEX1.wikipedia.org/wiki/Receiver_operating_characteristic ROC криваяpng|thumb|145px|Линии уровня для среднего арифметического]]. Кривая строится на плоскости, определённой осями полноты (recall, TPR) по вертикали и частоты ложных срабатываний (FPR, 1-Spc).
Чтобы построить кривую: <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; для micro-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. Алгоритм построения кривой:
# Запустить классификатор на тестовой выборке
# Отсортировать результаты по уверенности классификатора в принадлежности объекта к классу
# Построить кривую по точкам
Таким образом : число точек не превосходит число объектовидеальному алгоритму соответствует ROC-кривая, идеальный алгоритм проходит проходящая через точку <math>(0;1), худший </math>худшему алгоритму (например, монеткамонетке) соответствует прямая TPR = FPR. Для численной же оценки алгоритма по ROC -кривой используется значение площади под ней ('''AUC''', area under curve). Таким образом идеальный Идеальный алгоритм имеет AUC , равный 1, а плохой худший — 0,5.= F₁ score =Для общей оценки качества С другой стороны, для построения ROC-кривой не обязательно пересчитывать TPR и FPR.  Существует '''альтернативный алгоритм построения ROC-кривой'''. # сортируем объекты по уверенности классификатора часто используют F₁ меру в их принадлежности к положительному классу# начинаем в точке (0, 0)# последовательно продолжаем кривую вверх:#* для каждого «отрицательного» объекта вверх#* для каждого «положительного» среднее гармоническое между precision и recallвправо. Корректность алгоритма обосновывается тем, что с изменением предсказания для одного объекта в зависимости от его класса меняется либо 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, цветом указан реальный класс объекта:красный — положительный, синий — отрицательный).Отсортируем наши объекты по возрастанию уверенности классификатора в принадлежности объекта к положительному классу. Допустим, что объекты находятся на равном (единичном) расстоянии друг от друга. Начнём перебирать «границу раздела»: <tex>F_1 если граница в нуле — мы решаем относить все объекты к положительному классу, тогда accuracy = \left 1/2. Последовательно сдвигаем границу по единичке вправо:* если реальный класс объекта, оказавшегося теперь по другую сторону границы — отрицательный, то accuracy увеличивается, так как мы «угадали» класс объекта, решив относить объекты левее границы к отрицательному классу;* если же реальный класс объекта — положительный, accuracy уменьшается ( \dfrac{Prec^{по той же логике) Таким образом, на графиках слева, видно, что:* на графике идеальной классификации точность в 100% достигается, неидеальной — нет;* площадь под графиком accuracy идеального классификатора больше, чем аналогичная площадь для неидеального. Заметим, что, повернув график на 45 градусов, мы получим ROC-1} + Recall^{кривые для соответствующих классификаторов (графикам accuracy слева соответствуют ROC-1}}{2} \right кривые справа)^{. Так объясняется альтернативный алгоритм построения 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 = 2 \cdot \dfrac{Prec \cdot Recall}{β^2 \cdot Prec + Recall}0.05, что крайне близко к показателям идеального алгоритма.Таким образом, если положительный класс существенно меньше по размеру, то AUC-ROC может давать неадекватную оценку качества работы алгоритма, поскольку измеряет долю неверно принятых объектов относительно общего числа отрицательных. Так, алгоритм <math>b(x)</texmath>, помещающий 100 релевантных документов на позиции с 50.001-й по 50.101-ю, будет иметь AUC-ROC 0.95. '''Precison-recall (PR) кривая.'''
F₁ мера так же может быть обобщена до F<sub>β</sub>:: <tex>F_β = Избавиться от указанной проблемы с несбалансированными классами можно, перейдя от ROC-кривой к PR-кривой. Она определяется аналогично ROC-кривой, только по осям откладываются не FPR и TPR, а полнота (1 + β^2по оси абсцисс) и точность (по оси ординат). Критерием качества семейства алгоритмов выступает '''площадь под PR-кривой''' (англ. '''Area Under the Curve — AUC-PR''') \dfrac{Prec \cdot Recall}{β^2 \cdot Prec + Recall}</tex>
F<sub>β</sub> измеряет эффективность классификатора учитывая recall в β раз более важным чем precision.
Для многоклассовой = Источники =* Coursera: https://www.coursera.org/learn/vvedenie-mashinnoe-obuchenie* [[Оценка качества в задачах классификации с учётом изначального распределения по классам имеет смысл рассматривать микро- и макро- F меру:регрессии]]* Лекции А. Забашта* Лекции Е. А. Соколова* [http: <tex>micro F_β = \sum\limits_{c \in Classes} \dfrac{P_i F_β(c)}{All}</tex>: <tex>macro F_β = /bazhenov.me/blog/2012/07/21/classification-performance-evaluation.html Оценка классификатора (1 + β^2точность, полнота, F-мера) \dfrac{Prec_W \cdot Recall_W}{β^2 \cdot Prec_W + Recall_W}</tex>]
1
правка

Навигация