метрика mae что это
Метрики в задачах машинного обучения
В задачах машинного обучения для оценки качества моделей и сравнения различных алгоритмов используются метрики, а их выбор и анализ — непременная часть работы датасатаниста.
В этой статье мы рассмотрим некоторые критерии качества в задачах классификации, обсудим, что является важным при выборе метрики и что может пойти не так.
Метрики в задачах классификации
Для демонстрации полезных функций sklearn и наглядного представления метрик мы будем использовать датасет по оттоку клиентов телеком-оператора.
Accuracy, precision и recall
Перед переходом к самим метрикам необходимо ввести важную концепцию для описания этих метрик в терминах ошибок классификации — confusion matrix (матрица ошибок).
Допустим, что у нас есть два класса и алгоритм, предсказывающий принадлежность каждого объекта одному из классов, тогда матрица ошибок классификации будет выглядеть следующим образом:
True Positive (TP) | False Positive (FP) | |
False Negative (FN) | True Negative (TN) |
Здесь — это ответ алгоритма на объекте, а
— истинная метка класса на этом объекте.
Таким образом, ошибки классификации бывают двух видов: False Negative (FN) и False Positive (FP).
Accuracy
Интуитивно понятной, очевидной и почти неиспользуемой метрикой является accuracy — доля правильных ответов алгоритма:
Эта метрика бесполезна в задачах с неравными классами, и это легко показать на примере.
Допустим, мы хотим оценить работу спам-фильтра почты. У нас есть 100 не-спам писем, 90 из которых наш классификатор определил верно (True Negative = 90, False Positive = 10), и 10 спам-писем, 5 из которых классификатор также определил верно (True Positive = 5, False Negative = 5).
Тогда accuracy:
Однако если мы просто будем предсказывать все письма как не-спам, то получим более высокую accuracy:
При этом, наша модель совершенно не обладает никакой предсказательной силой, так как изначально мы хотели определять письма со спамом. Преодолеть это нам поможет переход с общей для всех классов метрики к отдельным показателям качества классов.
Precision, recall и F-мера
Для оценки качества работы алгоритма на каждом из классов по отдельности введем метрики precision (точность) и recall (полнота).
Precision можно интерпретировать как долю объектов, названных классификатором положительными и при этом действительно являющимися положительными, а recall показывает, какую долю объектов положительного класса из всех объектов положительного класса нашел алгоритм.
Именно введение precision не позволяет нам записывать все объекты в один класс, так как в этом случае мы получаем рост уровня False Positive. Recall демонстрирует способность алгоритма обнаруживать данный класс вообще, а precision — способность отличать этот класс от других классов.
Как мы отмечали ранее, ошибки классификации бывают двух видов: False Positive и False Negative. В статистике первый вид ошибок называют ошибкой I-го рода, а второй — ошибкой II-го рода. В нашей задаче по определению оттока абонентов, ошибкой первого рода будет принятие лояльного абонента за уходящего, так как наша нулевая гипотеза состоит в том, что никто из абонентов не уходит, а мы эту гипотезу отвергаем. Соответственно, ошибкой второго рода будет являться «пропуск» уходящего абонента и ошибочное принятие нулевой гипотезы.
Precision и recall не зависят, в отличие от accuracy, от соотношения классов и потому применимы в условиях несбалансированных выборок.
Часто в реальной практике стоит задача найти оптимальный (для заказчика) баланс между этими двумя метриками. Классическим примером является задача определения оттока клиентов.
Очевидно, что мы не можем находить всех уходящих в отток клиентов и только их. Но, определив стратегию и ресурс для удержания клиентов, мы можем подобрать нужные пороги по precision и recall. Например, можно сосредоточиться на удержании только высокодоходных клиентов или тех, кто уйдет с большей вероятностью, так как мы ограничены в ресурсах колл-центра.
Обычно при оптимизации гиперпараметров алгоритма (например, в случае перебора по сетке GridSearchCV ) используется одна метрика, улучшение которой мы и ожидаем увидеть на тестовой выборке.
Существует несколько различных способов объединить precision и recall в агрегированный критерий качества. F-мера (в общем случае ) — среднее гармоническое precision и recall :
в данном случае определяет вес точности в метрике, и при
это среднее гармоническое (с множителем 2, чтобы в случае precision = 1 и recall = 1 иметь
)
F-мера достигает максимума при полноте и точности, равными единице, и близка к нулю, если один из аргументов близок к нулю.
В sklearn есть удобная функция _metrics.classificationreport, возвращающая recall, precision и F-меру для каждого из классов, а также количество экземпляров каждого класса.
class | precision | recall | f1-score | support |
---|---|---|---|---|
Non-churned | 0.88 | 0.97 | 0.93 | 941 |
Churned | 0.60 | 0.25 | 0.35 | 159 |
avg / total | 0.84 | 0.87 | 0.84 | 1100 |
Здесь необходимо отметить, что в случае задач с несбалансированными классами, которые превалируют в реальной практике, часто приходится прибегать к техникам искусственной модификации датасета для выравнивания соотношения классов. Их существует много, и мы не будем их касаться, здесь можно посмотреть некоторые методы и выбрать подходящий для вашей задачи.
AUC-ROC и AUC-PR
При конвертации вещественного ответа алгоритма (как правило, вероятности принадлежности к классу, отдельно см. SVM) в бинарную метку, мы должны выбрать какой-либо порог, при котором 0 становится 1. Естественным и близким кажется порог, равный 0.5, но он не всегда оказывается оптимальным, например, при вышеупомянутом отсутствии баланса классов.
Одним из способов оценить модель в целом, не привязываясь к конкретному порогу, является AUC-ROC (или ROC AUC) — площадь (Area Under Curve) под кривой ошибок (Receiver Operating Characteristic curve ). Данная кривая представляет из себя линию от (0,0) до (1,1) в координатах True Positive Rate (TPR) и False Positive Rate (FPR):
TPR нам уже известна, это полнота, а FPR показывает, какую долю из объектов negative класса алгоритм предсказал неверно. В идеальном случае, когда классификатор не делает ошибок (FPR = 0, TPR = 1) мы получим площадь под кривой, равную единице; в противном случае, когда классификатор случайно выдает вероятности классов, AUC-ROC будет стремиться к 0.5, так как классификатор будет выдавать одинаковое количество TP и FP.
Каждая точка на графике соответствует выбору некоторого порога. Площадь под кривой в данном случае показывает качество алгоритма (больше — лучше), кроме этого, важной является крутизна самой кривой — мы хотим максимизировать TPR, минимизируя FPR, а значит, наша кривая в идеале должна стремиться к точке (0,1).
Критерий AUC-ROC устойчив к несбалансированным классам (спойлер: увы, не всё так однозначно) и может быть интерпретирован как вероятность того, что случайно выбранный positive объект будет проранжирован классификатором выше (будет иметь более высокую вероятность быть positive), чем случайно выбранный negative объект.
Рассмотрим следующую задачу: нам необходимо выбрать 100 релевантных документов из 1 миллиона документов. Мы намашинлернили два алгоритма:
Скорее всего, мы бы выбрали первый алгоритм, который выдает очень мало False Positive на фоне своего конкурента. Но разница в False Positive Rate между этими двумя алгоритмами крайне мала — всего 0.0019. Это является следствием того, что AUC-ROC измеряет долю False Positive относительно True Negative и в задачах, где нам не так важен второй (больший) класс, может давать не совсем адекватную картину при сравнении алгоритмов.
Для того чтобы поправить положение, вернемся к полноте и точности :
Здесь уже заметна существенная разница между двумя алгоритмами — 0.855 в точности!
Precision и recall также используют для построения кривой и, аналогично AUC-ROC, находят площадь под ней.
Здесь можно отметить, что на маленьких датасетах площадь под PR-кривой может быть чересчур оптимистична, потому как вычисляется по методу трапеций, но обычно в таких задачах данных достаточно. За подробностями о взаимоотношениях AUC-ROC и AUC-PR можно обратиться сюда.
Logistic Loss
Особняком стоит логистическая функция потерь, определяемая как:
здесь — это ответ алгоритма на
-ом объекте,
— истинная метка класса на
-ом объекте, а
размер выборки.
Подробно про математическую интерпретацию логистической функции потерь уже написано в рамках поста про линейные модели.
Данная метрика нечасто выступает в бизнес-требованиях, но часто — в задачах на kaggle.
Интуитивно можно представить минимизацию logloss как задачу максимизации accuracy путем штрафа за неверные предсказания. Однако необходимо отметить, что logloss крайне сильно штрафует за уверенность классификатора в неверном ответе.
Отметим, как драматически выросла logloss при неверном ответе и уверенной классификации!
Следовательно, ошибка на одном объекте может дать существенное ухудшение общей ошибки на выборке. Такие объекты часто бывают выбросами, которые нужно не забывать фильтровать или рассматривать отдельно.
Всё становится на свои места, если нарисовать график logloss:
Видно, что чем ближе к нулю ответ алгоритма при ground truth = 1, тем выше значение ошибки и круче растёт кривая.
Подытожим:
Полезные ссылки
Благодарности
Спасибо mephistopheies и madrugado за помощь в подготовке статьи.
Метрики оценивания моделей с sklearn
Добрый день, уважаемые читатели. Порой перед инженерами моделей машинного обучения встаёт проблема: как правильно оценить, какую модель выбрать. В этом нам помогут метрики оценивания — способы оценить способность модели предсказывать результат.
Accuracy
Первая метрика для классификации — accuracy (точность). Я предоставлю две формулы: нормализированную и ненормализированую версию.
Нормализированная версия представляет собой соотношение кол-ва корректных предсказаний и общего кол-ва меток.
Ненормализированная версия представляет собой просто кол-во верных предсказаний. Разберём небольшой пример:
Данный пример показывает нам, что из 4-ех меток мы правильно «предсказали» 3. Ну и соответственно точность предсказания — 75%.
Precision & Recall
Далее рассмотрим такие две метрики, так precision и recall, которые очень похожи. Конкретнее речь будет идти о их вариации для бинарной классификации.
Рассмотрим практический пример использования этих метрик оценивания с помощью sklearn.metrics :
F1 score
Опять же разберём реализацию F1-score в sklearn для бинарной классификатора:
Далее мы приступим к разбору метрик оценивания регрессионных моделей.
Mean Absolute Error
MAE (Mean Absolute Error, Средняя Абсолютная Ошибка (рус.)) — мера схожести предсказаний и правильных значений для каких-либо наблюдений. Имеет следующую формулу:
Здесь — предсказанные значения,
— правильные значения для
наблюдений. Использование MAE в sklearn выглядит следующим образом:
Стоит помнить, что значение функции ошибки точно не говорит нам о точности модели, т. к. мы не знаем, какое значение дисперсии является для нас критическим. Если принять за единицу тысячу долларов при условии, что мы предсказываем цену на товар, то 100 долларов — это довольно серьезная погрешность. Однако если же мы предсказываем индекс благополучия, то 0.1 — не есть столь великой потерей (пример условный).
Mean Squared Error
MSE (Mean Squared Error, Средняя Квадратическая Ошибка (рус.)) использует похожий принцип сравнения. Эта метрика имеет следующую формулу:
Использовать её с помощью sklearn также просто, как и MAE:
Root Mean Squared Deviation
RMSD напрямую связана с MSE — значение этой меры равно корню квадратному из значения MSE для заданных наборов:
R2 score
score — последняя мера оценки регрессионных моделей в этой статье, которая от перечисленных выше двух отличается тем, что может принимать отрицательное значение при плохой обобщающей способности модели.
Чем ближе к 1, тем лучше обобщающая способность модели.
Заключение
В этой статье мы разобрали метрики оценивания для классификаторов и регрессоров, ограничившись в основном бинарной классификацией для классификации.
Чтобы ещё лучше запомнить себе материал, приведенный в этой статье, можете сохранить и изменить на своё усмотрение этот документ.
А также подписывайтесь на группу ВКонтакте, Telegram и YouTube-канал. Там еще больше полезного и интересного для программистов.
Метрики для оценки алгоритмов машинного обучения в Python
Дата публикации 2016-05-25
Метрики, которые вы выбираете для оценки ваших алгоритмов машинного обучения, очень важны.
Выбор метрик влияет на то, как измеряется и сравнивается производительность алгоритмов машинного обучения. Они влияют на то, как вы оцениваете важность различных характеристик в результатах и ваш окончательный выбор того, какой алгоритм выбрать.
В этом посте вы узнаете, как выбирать и использовать различные метрики производительности машинного обучения в Python с помощью scikit-learn.
О рецептах
Различные метрики оценки машинного обучения демонстрируются в этом посте с использованием небольших рецептов кода на Python и scikit-learn.
Каждый рецепт разработан так, чтобы быть автономным, чтобы вы могли скопировать и вставить его в свой проект и сразу использовать.
Метрики демонстрируются для задач машинного обучения как по классификации, так и по типу регрессии.
В каждом рецепте набор данных загружается непосредственно изUCI хранилище машинного обучения,
Все рецепты оценивают одинаковые алгоритмы, логистическую регрессию для классификации и линейную регрессию для задач регрессии. Для демонстрации каждой метрики используется 10-кратный тестовый набор для перекрестной проверки, поскольку это наиболее вероятный сценарий, в котором вы будете использовать разные метрики оценки алгоритма.
Предостережение в этих рецептахcross_val_scoreФункция, используемая для отчета о производительности в каждом рецепте. Она позволяет использовать различные метрики оценки, которые будут обсуждаться, но все оценки представляются таким образом, чтобы их можно было сортировать в порядке возрастания (наибольшая оценка является лучшей).
Вы можете узнать больше о метриках производительности алгоритма машинного обучения, поддерживаемых scikit-learn, на страницеМодель оценки: количественная оценка качества прогнозов,
Давайте продолжим с оценочными показателями.
Метрики классификации
Проблемы классификации, возможно, являются наиболее распространенным типом проблем машинного обучения, и поэтому существует множество метрик, которые можно использовать для оценки прогнозов этих проблем.
В этом разделе мы рассмотрим, как использовать следующие метрики:
1. Точность классификации
Это наиболее распространенная метрика оценки для задач классификации, и она также используется не по назначению. Это действительно подходит только тогда, когда в каждом классе имеется равное количество наблюдений (что бывает редко), и что все предсказания и ошибки предсказания одинаково важны, что часто не так.
Ниже приведен пример расчета точности классификации.
Вы можете видеть, что соотношение сообщается. Это может быть преобразовано в процент путем умножения значения на 100, что дает оценку точности приблизительно на 77%.
2. Логарифмическая потеря
Логарифмическая потеря (или logloss) является метрикой производительности для оценки предсказаний вероятностей принадлежности к данному классу.
Скалярная вероятность от 0 до 1 может рассматриваться как мера достоверности для прогноза алгоритмом. Предсказания, которые являются правильными или неправильными, вознаграждаются или наказываются пропорционально достоверности прогноза.
Ниже приведен пример расчета logloss для прогнозов логистической регрессии на начало данных о диабете у индейцев пима.
Меньшая logloss лучше с 0, представляющим идеальную logloss. Как упоминалось выше, мера инвертируется, чтобы быть восходящей при использованииcross_val_score ()функция.
3. Площадь под кривой ROC
Область под кривой ROC (или AUC для краткости) является метрикой производительности для задач двоичной классификации.
AUC представляет способность модели различать положительные и отрицательные классы. Площадь 1 0 представляет модель, которая сделала все прогнозы идеально. Площадь 0,5 представляет модель, как случайную.Узнайте больше о РПЦ здесь,
Приведенный ниже пример демонстрирует расчет AUC.
Вы можете видеть, что AUC относительно близок к 1 и больше 0,5, что говорит о некотором умении предсказывать.
4. Матрица путаницы
Например, алгоритм машинного обучения может предсказывать 0 или 1, и каждое предсказание могло фактически быть 0 или 1. Прогнозы для 0, которые были фактически 0, появляются в ячейке для предсказания = 0 и фактического = 0, тогда как предсказания для 0, которые были фактически 1 появляется в ячейке для прогнозирования = 0 и фактического = 1. И так далее.
Ниже приведен пример вычисления путаницы для набора прогнозов по модели на тестовом наборе.
Хотя массив печатается без заголовков, вы можете видеть, что большинство предсказаний приходится на диагональную линию матрицы (которые являются правильными предсказаниями).
5. Классификационный отчет
Scikit-learn действительно предоставляет удобный отчет при работе над задачами классификации, чтобы дать вам быстрое представление о точности модели с использованием ряда мер.
classification_report ()Функция отображает точность, отзыв, f1-балл и поддержку для каждого класса.
Пример ниже демонстрирует отчет о проблеме двоичной классификации.
Вы можете увидеть хороший прогноз и отзыв для алгоритма.
Метрики регрессии
В этом разделе будут рассмотрены 3 наиболее распространенных показателя для оценки прогнозов проблем регрессионного машинного обучения:
1. Средняя абсолютная ошибка
Средняя абсолютная ошибка (или MAE) представляет собой сумму абсолютных различий между прогнозами и фактическими значениями. Это дает представление о том, насколько неправильными были прогнозы.
Мера дает представление о величине ошибки, но не дает представление о направлении (например, сверх или при прогнозировании).
В приведенном ниже примере показано вычисление средней абсолютной ошибки по набору цен на жилье в Бостоне.
Значение 0 указывает на отсутствие ошибок или точных прогнозов. Как logloss, эта метрика инвертируетсяcross_val_score ()функция.
2. Средняя квадратическая ошибка
Средняя квадратическая ошибка (или MSE) очень похожа на среднюю абсолютную ошибку в том, что она дает общее представление о величине ошибки.
Взятие квадратного корня из среднеквадратичной ошибки преобразует единицы обратно в исходные единицы выходной переменной и может иметь смысл для описания и представления. Это называется среднеквадратической ошибкой (или RMSE).
Приведенный ниже пример демонстрирует расчет среднего квадрата ошибки.
Эта метрика тоже инвертирована, так что результаты растут. Не забудьте взять абсолютное значение перед получением квадратного корня, если вы заинтересованы в расчете RMSE.
3. R ^ 2 Метрика
Метрика R ^ 2 (или R Squared) указывает на достоверность соответствия набора прогнозов фактическим значениям. В статистической литературе эта мера называется коэффициентом детерминации.
Это значение между 0 и 1 для неподходящего и идеального соответствия соответственно.
Приведенный ниже пример демонстрирует вычисление среднего значения R ^ 2 для набора прогнозов.
Вы можете видеть, что прогнозы плохо соответствуют фактическим значениям со значением, близким к нулю и меньшим, чем 0,5.
Резюме
В этом посте вы обнаружили метрики, которые можно использовать для оценки ваших алгоритмов машинного обучения.
Вы узнали о 3 метриках классификации:
Также 2 удобных метода для классификации результатов прогнозирования:
И 3 показателя регрессии:
Есть ли у вас какие-либо вопросы о метриках для оценки алгоритмов машинного обучения или этот пост? Задайте свой вопрос в комментариях, и я сделаю все возможное, чтобы ответить на него.