www.machinelearningmastery.ru

Машинное обучение, нейронные сети, искусственный интеллект
Header decor

Home

5 метрик оценки классификации, которые должен знать каждый ученый данных

Дата публикации Sep 17, 2019

Что мы хотим оптимизировать для?Большинство предприятий не могут ответить на этот простой вопрос.

Каждая бизнес-проблема немного отличается, и ее следует оптимизировать по-разному.

Мы все создали модели классификации. Много времени мы стараемся повысить оценку наших моделей на точность.Но действительно ли мы хотим точности в качестве показателя производительности нашей модели?

Что, если мы прогнозируем количество астероидов, которые поразят Землю.

Просто говорите ноль все время. И вы будете на 99% точнее. Моя модель может быть достаточно точной, но совсем не ценной. Что мы должны делать в таких случаях?

Разработка проекта Data Science гораздо важнее, чем само моделирование.

Этот пост о различных метриках оценки и о том, как и когда их использовать.


1. Точность, точность и отзыв:


А. Точность

Точность является наиболее существенной классификационной метрикой. Это довольно легко понять. И легко подходит как для бинарной, так и для мультиклассовой классификации.

Accuracy = (TP+TN)/(TP+FP+FN+TN)

Точность - это доля истинных результатов среди общего числа исследованных случаев.

Когда использовать?

Точность - это правильный выбор оценки для задач классификации, которые хорошо сбалансированы и не смещены, или нет дисбаланса классов.

Предостережения

Допустим, наш целевой класс очень скудный. Хотим ли мы точность как показатель производительности нашей модели?Что если мы предсказываем, что астероид ударит Землю?Просто скажиNoвсе время. И вы будете на 99% точнее. Моя модель может быть достаточно точной, но совсем не ценной.


Б. Точность

Давайте начнем сточность, который отвечает на следующий вопрос: какая доляпрогнозируемые позитивыдействительно положительно?

Precision = (TP)/(TP+FP)

В проблеме предсказания астероидов мы никогда не предсказывали истинный позитив.

И, таким образом, точность = 0

Когда использовать?

Точность - это правильный выбор метрики оценки, когда мы хотим быть очень уверенными в нашем прогнозе. Например: если мы создаем систему для прогнозирования, следует ли нам уменьшить кредитный лимит для определенного аккаунта, мы хотим быть очень уверенными в нашем прогнозе, иначе это может привести к неудовлетворенности клиентов.

Предостережения

Точность означает, что наша модель не затронет многих неплательщиков кредита и, следовательно, потеряет деньги


C. Напомним

Еще одна очень полезная мераотзыв, который отвечает на другой вопрос: какая доляфактические Позитивыправильно классифицирован?

Recall = (TP)/(TP+FN)

В проблеме предсказания астероидов мы никогда не предсказывали истинный позитив.

И, таким образом, отзыв также равен 0.

Когда использовать?

Отзыв - это правильный выбор метрики оценки, когда мы хотим получить как можно больше положительных результатов. Например: если мы создаем систему, чтобы предсказать, есть ли у человека рак или нет, мы хотим зафиксировать болезнь, даже если мы не очень уверены в этом.

Предостережения

Напомним 1, если мы предсказываем 1 для всех примеров.

И, таким образом, приходит идея использовать компромисс между точностью и отзывом -Счет F1,


2. Оценка Ф1:

Это моелюбимая метрика оценкии я часто использую это в своих классификационных проектах.

Оценка F1 - это число от 0 до 1, и это среднее гармоническое значение точности и отзыва.

Давайте начнем с проблемы двоичного предсказания.Мы предсказываем, ударит ли астероид на землю или нет.

Так что, если мы скажем «Нет» для всего учебного набора. Наша точность здесь равна 0. Каков отзыв о нашем положительном классе? Это ноль. Какая точность? Это более 99%.

И, следовательно, оценка F1 также равна 0. И, таким образом, мы узнаем, что классификатор с точностью до 99% в принципе бесполезен для нашего случая. И, следовательно, это решает нашу проблему.

Когда использовать?

Мы хотим иметь модель с хорошей точностью и отзывом.

Точный компромисс

Просто изложилОценка в баллах F1 поддерживает баланс между точностью и отзывом для вашего классификатора, Если ваша точность низкая, F1 низкий, а если отзыв низкий, то ваш F1 низкий.

Если вы являетесь полицейским инспектором и хотите поймать преступников, вы хотите быть уверены, что человек, которого вы поймали, является преступником (Precision), и вы также хотите поймать как можно больше преступников (Recall). Счет F1 управляет этим компромиссом.

Как использовать?

Вы можете рассчитать оценку F1 для задач двоичного прогнозирования, используя:

from sklearn.metrics import f1_score
y_true = [0, 1, 1, 0, 1, 1]
y_pred = [0, 0, 1, 0, 0, 1]f1_score(y_true, y_pred)

Это одна из моих функций, которую я использую, чтобы получить лучший порог для максимизации балла F1 для бинарных предсказаний. Приведенная ниже функция перебирает возможные пороговые значения, чтобы найти тот, который дает лучший результат F1.

# y_pred is an array of predictions
def bestThresshold(y_true,y_pred):
best_thresh = None
best_score = 0
for thresh in np.arange(0.1, 0.501, 0.01):
score = f1_score(y_true, np.array(y_pred)>thresh)
if score > best_score:
best_thresh = thresh
best_score = score
return best_score , best_thresh

Предостережения

Основная проблема со счетом F1 заключается в том, что он придает одинаковый вес точности и отзыву Иногда нам может потребоваться включить знание предметной области в нашу оценку, когда мы хотим иметь больше воспоминаний или большей точности.

Чтобы решить эту проблему, мы можем сделать это путем создания взвешенной метрики F1, как показано ниже, где бета управляет компромиссом между точностью и отзывом.

Здесь мы даем в β раз большую важность, чтобы помнить, как точность

from sklearn.metrics import fbeta_scorey_true = [0, 1, 1, 0, 1, 1]
y_pred = [0, 0, 1, 0, 0, 1]fbeta_score(y_true, y_pred,beta=0.5)

F1 Score также можно использовать для задач мультикласса. Видетьэтопотрясающий пост в блогеБоаз Шмуэлидля деталей.


3. Log Loss / Бинарный Кроссентропия

Потеря журнала является довольно хорошим показателем оценки для двоичных классификаторов, и иногда это является целью оптимизации также в случае логистической регрессии и нейронных сетей.

Потери двоичного журнала для примера задаются формулой ниже, где p - вероятность прогнозирования 1.

Как видите, потери в журнале уменьшаются, так как мы достаточно уверены в нашем прогнозе 1, а истинная метка равна 1.

Когда использовать?

Когда на выходе классификатора есть предсказания вероятностей.Log Loss учитывает неопределенность вашего прогноза, основанную на том, насколько он отличается от фактического ярлыка.Это дает нам более детальное представление о производительности нашей модели. Как правило, минимизация потерь в журнале дает большую точность классификатору.

Как использовать?

from sklearn.metrics import log_loss  # where y_pred are probabilities and y_true are binary class labels
log_loss(y_true, y_pred, eps=1e-15)

Предостережения

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


4. Категориальная кроссентропия

Потеря журнала также обобщает проблему мультикласса. Классификатор в мультиклассовой настройке должен назначить вероятность каждому классу для всех примеров. Если имеется N выборок, принадлежащих к M классам, тоКатегориальная кроссентропияэто сумма -ylogpзначения:

y_ij1, если образецiпринадлежит к классуjеще 0

p_ijвероятность того, что наш классификатор предсказывает выборкуiпринадлежность к классуj,

Когда использовать?

Когда вывод классификатора - мультиклассовые вероятности предсказания. Мы обычно используем Категориальную Кроссентропию в случае Нейронных Сетей.В общем, минимизация категориальной кросс-энтропии дает большую точность для классификатора.

Как использовать?

from sklearn.metrics import log_loss  # Where y_pred is a matrix of probabilities with shape = (n_samples, n_classes) and y_true is an array of class labelslog_loss(y_true, y_pred, eps=1e-15)

Предостережения:

Это восприимчиво в случаенесбалансированныйнаборы данных.


5. АУК

AUC - площадь под кривой ROC.

AUC ROC указывает, насколько хорошо вероятности из положительных классов отделены от отрицательных классов

Что такое кривая ROC?

Мы получили вероятности от нашего классификатора. Мы можем использовать различные пороговые значения, чтобы построить нашу чувствительность (TPR) и (1-специфичность) (FPR) на лекарстве, и мы получим кривую ROC.

Где истинно положительный показатель или TPR - это просто доля истин, которые мы собираем, используя наш алгоритм.

Sensitivty = TPR(True Positive Rate)= Recall = TP/(TP+FP)

и ложноположительный показатель или FPR - это просто доля ложного, которую мы фиксируем с помощью нашего алгоритма

1- Specificity = FPR(False Positive Rate)= FP/(TN+FP)

РПЦ Кривая

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

Если это приложение для классификации рака, вы не хотите, чтобы ваш порог достигал 0,5. Даже если у пациента вероятность заболеть раком 0,3, вы бы классифицировали его как 1.

В противном случае в заявке на снижение лимитов по кредитной карте вы не захотите, чтобы ваш порог составлял менее 0,5. Вы здесь немного обеспокоены негативным влиянием снижения лимитов на удовлетворенность клиентов.

Когда использовать?

AUC являетсямасштабно-инвариантным, Он измеряет, насколько хорошо ранжируются прогнозы, а не их абсолютные значения. Так, например, если вы как маркетолог хотите найти список пользователей, которые будут отвечать на маркетинговую кампанию. AUC - хороший показатель для использования, поскольку ранжированные по вероятности прогнозы - это порядок, в котором вы создадите список пользователей для отправки маркетинговой кампании.

Еще одним преимуществом использования AUC является то, что этоКлассификация порог-инвариантныйкак потеря журнала. Он измеряет качество прогнозов модели независимо от того, какой порог классификации выбран, в отличие от балла F1 или точности, которые зависят от выбора порога.

Как использовать?

import numpy as np
from sklearn.metrics import roc_auc_score
y_true = np.array([0, 0, 1, 1])
y_scores = np.array([0.1, 0.4, 0.35, 0.8])print(roc_auc_score(y_true, y_scores))

Предостережения

Иногда нам понадобятся хорошо откалиброванные вероятностные результаты из наших моделей, и AUC не поможет с этим.


Вывод

Важный шаг при создании нашегоконвейер машинного обученияоценивает наши разные модели друг против друга. Неправильный выбор метрики оценки может нанести ущерб всей вашей системе.

Поэтому всегда следите за тем, что вы прогнозируете, и как выбор метрики оценки может повлиять на ваши окончательные прогнозы.

Кроме того, выбор метрики оценки должен хорошо соответствовать бизнес-цели, и, следовательно, он немного субъективен. И вы можете придумать свою собственную метрику оценки, а также


Продолжить обучение

Если хочешьучитьсяподробнее о том, как структурировать проект по машинному обучению и о лучших практиках, я хотел бы назвать его потрясающимтретий курсПроекты структурированного машинного обучения в CourseraСпециализация глубокого обучения, Проверьте это. В нем рассказывается о подводных камнях и множестве базовых идей по улучшению ваших моделей.

Спасибо за прочитанное. Я собираюсь писать больше постов для начинающих в будущем. Следуй за мной всреднийили подписаться на мойблогбыть в курсе о них. Как всегда, я приветствую отзывы и конструктивную критику, и я могу найти их в Твиттере@mlwhiz

Кроме того, небольшой отказ от ответственности - в этом посте могут быть некоторые партнерские ссылки на соответствующие ресурсы, поскольку обмен знаниями никогда не является плохой идеей.

Оригинальная статья

Footer decor

© www.machinelearningmastery.ru | Ссылки на оригиналы и авторов сохранены. | map