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

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

Сбалансированные данные

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

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

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

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

Проблемы с несбалансированными данными.

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

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

Хорошо, чтобы быть правдой

Когда дело доходит до несбалансированных наборов данных, мы должны быть очень осторожны в выборе и интерпретации метрик. Например, предположим, что у нас есть набор данных с 90 экземплярами, принадлежащими одному классу и 10 — другому. Если у нас есть классификатор, который всегда имеет один и тот же результат, скажем, класс большинства, мы получим точность 90%, что многие могут подумать, что это что-то отличное, но реальность показывает, что модель не может различить два класса. , основная задача любого классификатора.



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

Пороги и классификаторы.

Когда мы смотрим на вывод классификаторов, мы обычно видим дискретный вывод. однако многие классификаторы вместо этого способны отображать вероятности. Например, в scikit-learn этот метод обычно называется predict_proba, он позволяет нам получить вероятности всех классов.

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

Использование диаграмм для сравнения моделей.

Мы уже говорили о важности выбора правильного порога для каждой проблемы, для этого обычно используются некоторые диаграммы, в этом случае я собираюсь пройтись по двум из них, кривой точного отзыва (PR) и рабочей характеристике приемника. (РПЦ) Кривая.

Кривая ROC показывает изменение частоты истинно положительных и ложноположительных результатов для различных пороговых значений. Мы можем использовать этот график для сравнения различных моделей. Давайте посмотрим на следующий пример.

На приведенной выше диаграмме показана кривая ROC для двух разных моделей. По оси x показан процент ложных положительных результатов, а по оси Y показан показатель истинно положительных результатов. В этом случае мы видим, что DecisionTreeClassifier кажется немного лучше, чем GradienBoostingClassifier, поскольку показатель истинного положительного результата выше, чем полученный показатель истинного положительного результата. от GradientBoostingClassifier. Однако в этом случае оба алгоритма достаточно хороши, и из этого графика можно извлечь не так уж много информации.

Кривая точного отзыва

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

Кривая PR показывает изменение полноты и точности при различных пороговых значениях. На приведенной выше диаграмме показана кривая PR для двух классификаторов. В данном случае мы рассматриваем значения точности и полноты, что позволяет нам провести более точное сравнение. Мы можем заметить, что кривая PR остается одинаковой для обоих классификаторов для большинства порогов, и сразу после значения полноты 0,8 обе кривые внезапно падают до минимума точности 0,825.

Контекст имеет значение.

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

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

Несбалансированные данные и определение проблемы

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

Однако есть один важный момент, который следует учитывать при определении положительного класса. Метрики, которые мы прошли, основаны на определении положительного класса и отрицательного класса. Давайте еще раз пройдемся по этому классическому примеру. Давайте представим эксперимент, в котором у нас есть 100 образцов, и допустим, что 90 образцов соответствуют классу доброкачественных и 10 образцов злокачественных. Есть воображаемый классификатор, и в этом случае допустим, что наш положительный класс — это доброкачественные опухоли. После обучения классификатора мы получаем что-то вроде этого.

TP = 80, TN=0, FP=15, FN=5

Напомним = 0,94

Точность = 0,84

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

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

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

Ссылки