какие бывают метрики машинного обучения
Метрики в машинном обучении: precision, recall и не только
Почему я это написал. Долгое время я был бэкэнд разработчиком. Вращался среди коллег и прекрасно их понимал. Но бэкенд нужен и людям, занимающимся машинным обучением. В какой-то момент я попал в их логово. И вот тут я поднял, что вообще не понимаю их язык. Думаю, что не только я оказывался в такой ситуации, поэтому сейчас расскажу всё понятными словами для нормальных людей.
Немного про машинное обучение
ML работает всего с несколькими вещами:
Приведу пример. Допустим у вас есть яблоня. Каждый год вы ломаете голову, опрыскивать ли её от долгоносика. Решили обучить модель, что она вам предсказывала нашествия долгоносика.
Данные: Допустим, вы знаете только весенние температуры в виде одного числа. (Не важно, что это, допустим, просто средняя температура.) То есть у вас есть одна фича — температура.
Разметка У вас есть журнал по годам, где отмечено, был долгоносик или нет. То есть каждой температуре вы можете сопоставить «правильный» ответ. Обратите внимание, что одной и той же температуре могут соответствовать несколько ответов, они могут быть разными (за разные годы).
Модель Пусть у нас будет модель с одним параметром: пограничной температурой. Модель будет просто говорить «да», если температура выше какой-то черты и «нет» — если ниже. Можно было бы придумать модель с двумя параметрами (она бы смотрела на интервал), или ещё сложнее, но мы сейчас возьмём самую простую, для наглядности.
Предсказания Если применить модель к температурам (фичам), то получим предсказания.
Немного кода
Чтобы было с чем играть, вот вам код. Тут есть и данные, и модель, и всё о чём мы будем говорить.
Если это запустить, то мы получим метрики для разных моделей:
T — это параметр модели. То есть мы получили метрики, фактически, для 10 разных моделей.
Если раскомментировать dump() то будет видна детальная информация.
Сейчас мы со всем разберёмся.
TP, TN, FP, FN и друге буквы
Когда люди начинают жонглировать этими буквами, с непривычки, можно очень легко запутаться и потерять нить. Чтобы всё встало на свои места, нам понадобится ещё несколько букв и пара полезных соотношений.
Давайте посмотрим на входные данные (разметку, фактические наблюдения). Введём две буквы:
Теперь посмотрим на прогнозы модели. Здесь тоже есть positive и negative, но их сразу же делят на четыре группы:
Тут важно проникнуться простыми соотношениями:
Остановитесь тут и подумайте минуту.
Ну и, конечно, ясно что такое TP+FP (это все ответы «да», полученные от модели) и NT+FN (все ответы «нет»).
Ценность метрик
У нас появились первые метрики. Давайте посмотрим, на сколько они полезны.
Аналогично не работают и другие три метрики. Нужно что-то получше.
Accuracy
Первое, что приходит в голову: давайте поделим все правильные ответы на все вообще ответы.
Такая метрика уже лучше, чем ничего, но всё же, она очень плоха. Даже в моём примере (хотя я не подгонял специально числа) видно, что, с одной стороны, разумные модели имеют высокую точность, однако, побеждает по точности просто самая пессимистичная модель.
Вы можете поиграться с данными и посмотреть, как это происходит. Но понять смысл очень просто на другом примере. Допустим вы хотите предсказывать землетрясения (какое-то очень редкое явление). Ясно, что по этой метрике всегда будет побеждать модель, которая даже не пытается ничего предсказывать, а просто говорит всегда «нет». Те же модели, которые будут пытаться говорить когда-то «да», будут иногда ошибаться в позитивных прогнозах и сразу же терять очки.
Поэтому, про эту метрику вы, скорее всего, даже не услышите никогда. Я тут её упомянул только чтобы показать её неэффективность при, кажущейся, логичности.
Precision, recall и их друзья
Лично я чаще всего сталкивался именно с этими словами. При том, что, как мне кажется, это самые неудачные варианты. Я буду приводить альтернативные называния, которые, как мне кажется, на много лучше отражают суть.
Recall aka sensitivity, hit rate, or true positive rate (TPR)
Мне кажется, hit rate и TPR лучше всего отражают суть. В этой метрике мы рассматриваем только P-случаи: когда в реальных наблюдениях было «да». И считаем, какую долю из этих случаев модель предсказала правильно.
Все случаи «нет» мы отбрасываем.
У recall есть брат-близнец:
Specificity, selectivity or true negative rate (TNR)
Важно, так же, заметить, что если T и P сильно отличаются (как в примере с землетрясениями), то сравнивать recall и специфичность надо очень осторожно.
Precision aka positive predictive value (PPV)
Какая часть наших предсказаний «да» действительно сбылась:
Недостатки этой метрики аналогичны: она вообще никак не учитывает предсказания «нет». Из наших результатов видно, что побеждает модель, которая почти всегда говорить «нет». Она как бы снижает риск проиграть, выводя большую часть своих ответ за рамки рассмотрения.
У этой метрики есть аналогичный близнец
Negative predictive value (NPV)
Какая часть «нет»-предсказаний сбылась.
И ещё немного метрик
Перечислю кратко и другие метрики. Это далеко не все существующие, а просто аналоги вышеперечисленных, только относительно отрицательных прогнозов.
Miss rate aka false negative rate (FNR)
Fall-out aka false positive rate (FPR)
False discovery rate (FDR)
False omission rate (FOR)
И что же со всем этим делать
Как вы уже видели, каждая из этих метрик рассматривает только какое-то подмножество предсказаний. Поэтому их эффективность очень сомнительна.
Однако, их очень часто используют для двух вещей:
На втором я хотел бы остановиться в некотором философском ключе.
Давайте задумаемся, а что значит «одна модель лучше другой»? Единого ответа тут нет.
В нашем примере с долгоносиком всё зависит от наших приоритетов.
Если мы хотим ни в коем случае не потерять урожай, то нам надо максимизировать TP любой ценой. Фактически, в предельном случае, мы можем выкинуть любые модели и просто опрыскивать дерево химикатами всегда.
В реальной же жизни, мы ищем некоторый компромисс. Во многих случаях он может быть совершенно чётко сформулирован, с учётом цен на химикаты, стоимости урожая, репутационных потерь и прочего.
Не редко, люди придумывают собственные метрики. Но есть и готовые, пригодные во многих случаях.
F1-score
Это комбинация recall и precision:
Но мне кажется, поведение этой функции становится гораздо понятней, если записать её так:
То есть, это гармоническое среднее.
Максимальный F1-score мы получим, если и recall, и precision достаточно далеки от нуля. Он позволяет найти некое компромиссное решение, фактически, между максимизацией TP по разным шкалам.
Это не единственная возможная метрика. И у неё, как вы видите, тоже есть чёткий фокус, а значит и недостатки. Однако, даже её достаточно, чтобы среди наших моделей выиграла та, у которой пограничная температура равна 4. Давайте ещё раз взглянем на сравнение всех моделей:
И вот детализация по этой конкретной модели (с T=4):
Вы можете взять мой код, раскомментировать функцию dump() и посмотреть детализацию по всем моделям.
Надеюсь, я пролил некоторый свет на вопрос.
Оценка модели ML.NET с помощью метрик
Общие сведения о метриках, которые используются для оценки модели ML.NET.
Требуемые метрики оценки зависят от типа задачи машинного обучения, которую выполняет модель.
Например, для выполнения задачи классификации модель оценивается путем измерения того, насколько хорошо прогнозируемая категория соответствует фактической категории. Для задачи кластеризации оценка производится на основе того, насколько близко кластерные элементы находятся друг к другу и насколько велико расстояние между кластерами.
Метрики оценки для двоичной классификации
metrics | Описание | Вы ищете |
---|---|---|
Точность | Точность — это доля правильных прогнозов с помощью проверочного набора данных. Это соотношение числа правильно угаданных и общего числа примеров входных данных. Эта метрика работает хорошо, если существует аналогичное количество выборок, принадлежащих каждому классу. | Чем ближе к 1,00, тем лучше. Точное значение 1,00 говорит о проблемах (обычно это утечка меток и целей, переобучение или тестирование с помощью учебных данных). Если тестовые данные не сбалансированы (большинство экземпляров относится к одному из классов), набор данных мал или оценка подходит к значению 0,00 или 1,00, то точность не отражает фактическую эффективность классификатора и вам нужно проверить дополнительные метрики. |
AUC | aucROC или площадь под кривой оценивает площадь под кривой, созданной суммированием частот истинно положительных результатов и ложно положительных результатов. | Чем ближе к 1,00, тем лучше. Для того чтобы модель была допустима, ее значение должно быть больше 0,50. Модель со значением AUC не выше 0,50 неприменима. |
AUCPR | aucPR или площадь под кривой «точность — полнота» : удобная мера успешного прогноза, когда классы различаются (крайне неравномерно распределенные наборы данных). | Чем ближе к 1,00, тем лучше. Высокий уровень оценки, близкий к 1,00, показывает, что классификатор возвращает точные результаты (высокая точность), а также возвращает большую часть всех положительных результатов (высокий уровень полноты). |
Показатель F1 | Показатель F1 также называется сбалансированной F-оценкой или F-мерой. Это среднее гармоническое значение точности и полноты. Показатель F1 полезен в том случае, если необходимо найти баланс между точностью и полнотой. | Чем ближе к 1,00, тем лучше. Показатель F1 достигает лучшего значения в 1,00 и худшего — в 0,00. Он сообщает, насколько точен классификатор. |
Дополнительные сведения о метриках бинарной классификации см. в следующих статьях:
Метрики оценки для многоклассовой классификации
Обычно микроточность лучше согласуется с бизнес-потребностями прогнозов машинного обучения. Если вы хотите выбрать одну метрику для определения качества задачи многоклассовой классификации, обычно следует выбрать микроточность.
Например, для задачи классификации запросов в службу поддержки (сопоставляет входящие запросы в и команды службы поддержки)
Макроточность перевешивает небольшие команды в этом примере; небольшие команды, которые получают только 10 обращений в год, учитываются наравне с большой командой с 10 000 обращений в год. В этом случае микроточность лучше коррелирует с бизнес-потребностями: «сколько времени и денег можно сэкономить, автоматизируя процесс маршрутизации запросов в службу».
Дополнительные сведения о метриках многоклассовой классификации см. в следующих статьях:
Метрики оценки для задач регрессии и рекомендации
Задачи регрессии и рекомендации прогнозируют число. В случае регрессии число может быть любым выходным свойством, на которое влияют входные свойства. В случае рекомендации число обычно представляет собой значение оценки (например, от 1 до 5) или рекомендацию «да/нет» (представленную 1 и 0 соответственно).
Дополнительные сведения о метриках регрессии см. в следующих статьях:
Оценка качества в задачах классификации и регрессии
В машинном обучении различают оценки качества для задачи классификации и регрессии. Причем оценка задачи классификации часто значительно сложнее, чем оценка регрессии.
Содержание
Оценки качества классификации [ править ]
Матрица ошибок (англ. Сonfusion matrix) [ править ]
Перед переходом к самим метрикам необходимо ввести важную концепцию для описания этих метрик в терминах ошибок классификации — confusion matrix (матрица ошибок). Допустим, что у нас есть два класса [math]y = \< 0, 1 \>[/math] и алгоритм, предсказывающий принадлежность каждого объекта одному из классов. Рассмотрим пример. Пусть банк использует систему классификации заёмщиков на кредитоспособных и некредитоспособных. При этом первым кредит выдаётся, а вторые получат отказ. Таким образом, обнаружение некредитоспособного заёмщика ( [math]y = 1 [/math] ) можно рассматривать как «сигнал тревоги», сообщающий о возможных рисках.
Любой реальный классификатор совершает ошибки. В нашем случае таких ошибок может быть две:
Несложно увидеть, что эти ошибки неравноценны по связанным с ними проблемам. В случае «ложной тревоги» потери банка составят только проценты по невыданному кредиту (только упущенная выгода). В случае «пропуска цели» можно потерять всю сумму выданного кредита. Поэтому системе важнее не допустить «пропуск цели», чем «ложную тревогу».
Таким образом, ошибка I рода, или ложно-положительный исход классификации, имеет место, когда отрицательное наблюдение распознано моделью как положительное. Ошибкой II рода, или ложно-отрицательным исходом классификации, называют случай, когда положительное наблюдение распознано как отрицательное. Поясним это с помощью матрицы ошибок классификации:
[math]y = 1[/math] | [math]y = 0[/math] | |
[math]a ( x ) = 1[/math] | Истинно-положительный (True Positive — TP) | Ложно-положительный (False Positive — FP) |
[math]a ( x ) = 0[/math] | Ложно-отрицательный (False Negative — FN) | Истинно-отрицательный (True Negative — TN) |
Здесь [math]a ( x )[/math] — это ответ алгоритма на объекте, а [math]y [/math] — истинная метка класса на этом объекте. Таким образом, ошибки классификации бывают двух видов: False Negative (FN) и False Positive (FP). P означает что классификатор определяет класс объекта как положительный (N — отрицательный). T значит что класс предсказан правильно (соответственно F — неправильно). Каждая строка в матрице ошибок представляет спрогнозированный класс, а каждый столбец — фактический класс.
Безупречный классификатор имел бы только истинно-положительные и истинно отрицательные классификации, так что его матрица ошибок содержала бы ненулевые значения только на своей главной диагонали (от левого верхнего до правого нижнего угла):
Аккуратность (англ. Accuracy) [ править ]
Интуитивно понятной, очевидной и почти неиспользуемой метрикой является accuracy — доля правильных ответов алгоритма:
Эта метрика бесполезна в задачах с неравными классами, что как вариант можно исправить с помощью алгоритмов сэмплирования и это легко показать на примере.
Допустим, мы хотим оценить работу спам-фильтра почты. У нас есть 100 не-спам писем, 90 из которых наш классификатор определил верно (True Negative = 90, False Positive = 10), и 10 спам-писем, 5 из которых классификатор также определил верно (True Positive = 5, False Negative = 5). Тогда accuracy:
[math] accuracy = \dfrac<5+90> <5+90+10+5>= 86,4 [/math]
Однако если мы просто будем предсказывать все письма как не-спам, то получим более высокую аккуратность:
[math] accuracy = \dfrac<0+100> <0+100+0+10>= 90,9 [/math]
При этом, наша модель совершенно не обладает никакой предсказательной силой, так как изначально мы хотели определять письма со спамом. Преодолеть это нам поможет переход с общей для всех классов метрики к отдельным показателям качества классов.
Точность (англ. Precision) [ править ]
Точностью (precision) называется доля правильных ответов модели в пределах класса — это доля объектов действительно принадлежащих данному классу относительно всех объектов которые система отнесла к этому классу.
[math] Precision = \dfrac
Именно введение precision не позволяет нам записывать все объекты в один класс, так как в этом случае мы получаем рост уровня False Positive.
Полнота (англ. Recall) [ править ]
Полнота — это доля истинно положительных классификаций. Полнота показывает, какую долю объектов, реально относящихся к положительному классу, мы предсказали верно.
[math] Recall = \dfrac
Полнота (recall) демонстрирует способность алгоритма обнаруживать данный класс вообще.
Имея матрицу ошибок, очень просто можно вычислить точность и полноту для каждого класса. Точность (precision) равняется отношению соответствующего диагонального элемента матрицы и суммы всей строки класса. Полнота (recall) — отношению диагонального элемента матрицы и суммы всего столбца класса. Формально:
Результирующая точность классификатора рассчитывается как арифметическое среднее его точности по всем классам. То же самое с полнотой. Технически этот подход называется macro-averaging.
F-мера (англ. F-score) [ править ]
Precision и recall не зависят, в отличие от accuracy, от соотношения классов и потому применимы в условиях несбалансированных выборок. Часто в реальной практике стоит задача найти оптимальный (для заказчика) баланс между этими двумя метриками. Понятно что чем выше точность и полнота, тем лучше. Но в реальной жизни максимальная точность и полнота не достижимы одновременно и приходится искать некий баланс. Поэтому, хотелось бы иметь некую метрику которая объединяла бы в себе информацию о точности и полноте нашего алгоритма. В этом случае нам будет проще принимать решение о том какую реализацию запускать в производство (у кого больше тот и круче). Именно такой метрикой является F-мера.
F-мера представляет собой гармоническое среднее между точностью и полнотой. Она стремится к нулю, если точность или полнота стремится к нулю.
Данная формула придает одинаковый вес точности и полноте, поэтому F-мера будет падать одинаково при уменьшении и точности и полноты. Возможно рассчитать F-меру придав различный вес точности и полноте, если вы осознанно отдаете приоритет одной из этих метрик при разработке алгоритма:
где [math]β[/math] принимает значения в диапазоне [math]0\lt β\lt 1[/math] если вы хотите отдать приоритет точности, а при [math]β\gt 1[/math] приоритет отдается полноте. При [math]β=1[/math] формула сводится к предыдущей и вы получаете сбалансированную F-меру (также ее называют [math]F_1[/math] ).
Как правильно выбрать метрику оценки для моделей машинного обучения: Часть 3 Классификационные метрики
Дата публикации Sep 12, 2018
В предыдущей статьеЧасть 1&Часть 2мы обсудили метрики для проблем регрессии. В этой статье представлены метрики оценки классификации. Давайте представим сначала основные метрики классификации:
Матрица путаницы
Идеальный сценарий, который мы все хотим, состоит в том, что модель должна давать 0 ложных срабатываний и 0 ложных отрицательных.
Например, рисунок ниже иллюстрирует вывод функции sklearn «confusion_matrix», используемой для задачи классификации, где мы прогнозируем, есть ли у человека рак или нет. Давайте дадим метку нашей целевой переменной:1: Когда у человека рак0:Когда у человека НЕ рак.
Матрица Confusion сама по себе не является показателем производительности как таковым, но почти все показатели производительности основаны на Confusion Matrix и числах внутри нее.
Минимизация ложных негативов против ложных позитивов
В примере с проблемой обнаружения рака скажем, что из 100 человек только 5 человек болеют раком. Мы определенно хотим охватить все случаи рака, и мы могли бы в конечном итоге сделать классификацию, когда человек, на самом деле НЕ имеющий рак, классифицируется как рак. Это может быть хорошо, так как пропустить больного раком будет огромной ошибкой, так как дальнейшее обследование не будет сделано для них. Поэтому лучшеминимизировать ложные негативыв этом случае
точность
Это процент от общего количества предметов, классифицированных правильно.
Итак, для нашего примера: Точность = (20 + 200) / (20 + 10 + 70 + 200) = 220/300.
Это самая простая мера качества классификаторов. Это значение от 0 до 1. Чем выше, тем лучше. Эта метрика настолько интуитивна и естественна, что люди часто используют ее, не задумываясь, хотя во многих случаях она определенно не подходит.
Существенный недостаток
Очевидно, что лучшая константа для прогнозирования в случае точности является наиболее частым классом. Однако это может привести к проблемам, если целевые переменные классов в данных не сбалансированы. Пример: Допустим, в нашем наборе поездов есть 10 кошек и 90 собак.
Если бы мы всегда предсказывали собаку для каждого объекта, то точность была бы равна 0,9. Но на самом деле ваша модель просто предсказывает класс собаки, независимо от того, что является входным значением.
Таким образом, проблема заключается в том, что точность базовой линии может быть очень высокой для набора данных, даже 99%, и это затрудняет интерпретацию результатов.
Таким образом, точность является хорошей мерой, когда целевые переменные классы в данных почти сбалансированы.
Напомним или Чувствительность или TPR (True Positive Rate)
Это количество предметов, правильно определенных как положительные из общего числа истинных положительных.
Итак, для нашего примера: Recall = 20 / (20 + 10) = 20/30
точность
Это количество предметов, правильно определенных как положительные из общего числа предметов, определенных как положительные.
Итак, для нашего примера: Точность = 20 / (20 + 70) = 20/90
Precision VS Recall
Ясно, что отзыв дает нам информацию о производительности классификатора в отношении ложных негативов (сколько мы пропустили), а точность дает нам информацию о его результатах в отношении ложных срабатываний (сколько мы поймали).
точностьо точности Таким образом, даже если нам удалось зафиксировать только один случай заболевания раком, и мы правильно его уловили, то мы на 100% точны.
Отзывне столько о правильном захвате случаев, сколько о захвате всех случаев, у которых есть «рак» с ответом «рак». Так что, если мы просто всегда говорим каждый случай как «рак», мы имеем 100% воспоминаний
Таким образом, в основном, если мы хотим больше сосредоточиться на минимизации ложных негативов, мы бы хотели, чтобы наш отзыв был как можно ближе к 100%, при этом точность не была бы слишком плохой, и если мы хотим сосредоточиться на минимизации ложных срабатываний, тогда мы должны сосредоточиться на Точность максимально приближена к 100%.
Специфичность или TNR (истинный отрицательный коэффициент)
Это количество предметов, правильно определенных как отрицательные из общего числа отрицательных.
Итак, для нашего примера: Точность = 70 / (200 + 70) = 70/270.
Специфика является полной противоположностью Recall.
Еще две матрицы, которые почти никогда не используются:
Пример:В примере обнаружения рака давайте рассмотрим, что в нем содержится 100 человек, только у 5 человек рак. Мы предсказываем, что у всех пациентов будет рак:
Итак, TP = 5, FP = 95 и TN = FN = 0
Точность = 5 / (5 + 95) = 5%
Напомним = 5 / (5 + 0) = 100%
Специфичность = 0 / (0 + 5) = 0%
Счет F1
Всегда лучше установить в качестве ученого данныхметрика оценки одного номера для вашей команды для оптимизации, Точность является примером метрики оценки с одним числом и позволяет быстро сравнить два классификатора.
Лучше всего, если мы сможем получить единый балл, который представляет как Точность (P), так и Напоминание (R).
пример
Точность и отзыв для примера показаны на рисунке ниже.
Теперь, если мы просто возьмем среднее арифметическое для обоих, то получится почти 51%. Мы не должны давать такую умеренную оценку ужасной модели, поскольку она просто предсказывает каждую транзакцию как мошенничество.
Итак, нам нужно нечто более сбалансированное, чем среднее арифметическое, и это среднее гармоническое.
Среднее гармоническое является своего рода средним, когда x и y равны. Но когда x и y различны, тогда это ближе к меньшему числу по сравнению с большим числом.
Для нашего предыдущего примера F1 балл = среднее гармоническое (точность, отзыв)
Счет F1 = 2 * Точность * Напомним / (Точность + Напомним) = 2 * 3 * 100/103 = 5%
Таким образом, если одно число действительно мало между точностью и повторным запуском, показатель «Счет F1» поднимает флаг и становится ближе к меньшему числу, чем к большему, давая модели подходящее значение, а не просто среднее арифметическое.
Фактические значения представлены столбцами. Предсказанные значения представлены строками. Путаница матрица дляMNISTнабор данных.
Чтобы найти одно значение для всей модели:
Взять домой сообщение
Теперь мы знаем, что в следующий раз, когда вы услышите, как кто-то говорит о точности или точности 99%, вы должны спросить его о других показателях, которые мы обсуждали в этом посте.
Если вам понравилась эта статья, вы также можете прочитатьЧасть 1а такжеЧасть 2которые представляют метрики оценки регрессии.
Спасибо за чтение, и я с нетерпением жду, чтобы услышать ваши вопросы 🙂
Оставайтесь с нами и счастливого машинного обучения.
п SЕсли вы хотите больше узнать о мире машинного обучения, вы также можете подписаться на меня вInstagram,напишите мне напрямуюилинайди меня на linkedin, Я хотел бы услышать от вас.