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

Предварительная обработка

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

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

  • Корреляция функций
  • Обработка выбросов
  • Кодирование функций
  • Как справиться с дисбалансом классов
  • Масштабирование
  • Уменьшение размеров

Обработка корреляций функций

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

Объекты со значениями корреляции 0,6 или выше следует серьезно рассматривать как удаление из набора данных.

Обработка выбросов

Выбросы - это значения признака, которые являются чрезвычайно высокими или чрезвычайно низкими по сравнению с большинством значений. Это просто крайние значения, которые лежат далеко от обычного диапазона значений. Выбросы могут быть фактическими значениями или результатами ошибочного измерения. Выбросы могут привести к смещению в нашей модели и должны быть удалены или заменены более приемлемыми значениями. Существует два наиболее широко используемых метода обработки выбросов, межквартильный размах (IQR) и z-оценка. Здесь мы исследуем первое.

Межквартильный диапазон (IQR) - это метод обработки выбросов, который работает путем определения диапазона допустимых значений из 1-го и 3-го квартилей. Вот как это работает.

  • Сначала рассчитываются 1-й (Q1) и 3-й (Q3) квартили.
  • Затем рассчитывается IQR по формуле Q3 - Q1.
  • Затем вычисляются верхний и нижний пределы допустимого диапазона по формуле

upper_limit = 3 квартал + 1,5 x IQR

lower_limit = Q1–1,5 x IQR

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

Кодирование категориальных признаков

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

Обработка дисбаланса класса

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

Моделирование

Перекрестная проверка

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

При работе с очень несбалансированными данными, если вы делаете нормальные рандомизированные группы с помощью простого K-Fold, вы можете в конечном итоге построить модели на очень небольшом (или даже никаком) из класса меньшинства. Если вы строите модель, обученную на данных, в которых так мало или вообще нет другого класса, как вы могли ожидать, что она будет эффективно предсказывать более редкую группу?

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

Алгоритмы

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

Метрики

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

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

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

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