Вступление

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

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

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

Как модели делают прогнозы

Давайте построим простую модель двоичной классификации для некоторых выборочных данных. Для этого я буду использовать все встроенные инструменты scikit-learn.

Приведенный выше код создает следующую матрицу путаницы.

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

Логистическая функция берет наш вектор признаков x и наши веса beta и выводит значение от 0 до 1, а не только 0 или просто 1, любое непрерывное значение в интервале [0 , 1]. Как логистическая регрессия отображает это непрерывное значение логистической функции на твердое предсказание 0 или 1?

Способ преобразования непрерывного вывода в жесткое прогнозирование состоит в том, чтобы установить пороговое значение, которое будет использоваться для разделения прогнозов на две части, значения прогноза ниже порога классифицируются как класс 0, а значения прогноза выше порога классифицируются как 1. Мы можем визуализировать порог в виде горизонтальной линии на графике ниже.

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

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

Почти каждая доступная модель делает непрерывное приближение, прежде чем сопоставить его с твердым прогнозом. Обычно в моделях scikit-learn доступ к этим непрерывным выходным данным можно получить с помощью метода pred_proba, хотя эти значения лежат в интервале [0, 1], а не в каждой модели. делает оценку вероятности. Так обстоит дело с логистической регрессией, но с настраиваемыми различными функциями потерь модель может оценивать другие величины, которые оказываются непрерывными и нормализованными в интервале [0, 1].

Построение метрик

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

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

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

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

tp означает истинно положительное , fp - ложное срабатывание и fn - ложно отрицательное . Для этих величин, если мы возьмем наш наивный классификатор, который угадывает наиболее частый класс для всех прогнозов, это приведет к высоким значениям либо ложноположительным, либо ложноотрицательным значениям. Хотя эти новые величины могут уловить странное поведение, все сводится к созданию матрицы путаницы.

Чтобы сгенерировать матрицу путаницы, мы должны выбрать порог, но нет никаких причин выбирать конкретное пороговое значение. Несбалансированные наборы данных создают вероятности прогнозов, основанные на коэффициенте дисбаланса, поэтому выбор значения 0,5 или 0,7 ничего не значит для любого классификатора в целом, поведение по умолчанию метода прогноз из scikit-learn линейные модели должны брать класс с наивысшим непрерывным прогнозом, который соответствует порогу 0,5 для задачи с двумя классами, но это ничего не значит для любого набора данных, который имеет несбалансированные классы. Для преодоления порога выбора выбираем все.

Независимые от пороговых значений метрики

Когда мы решаем не выбирать конкретный порог, мы начинаем строить независимые от порога метрики, такие как Кривая ROC и Кривая точности-отзыва, но как эти метрики строятся?

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

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

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

Чтобы превратить это в метрику, мы просто возьмем площадь под кривой. При этом у нас есть число, чем выше площадь, тем выше производительность модели. Это связано с тем, что на каждом пороге мы всегда ожидаем низкий уровень ложных срабатываний и высокий уровень истинных срабатываний. Идеальный классификатор создавал бы кривую, которая представляет собой прямую линию от (0, 0) до (0,1), чем прямую линию от (0, 1) до (1, 1).

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

Заключение

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