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

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

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

Теперь давайте обсудим. В наборе данных с сильно несбалансированными классами отношение отрицательных значений к положительным составляет 9: 1, если классификатор всегда предсказывает наиболее распространенный класс без выполнения какого-либо анализа признаков, он все равно будет иметь высокую точность до 90%. Это явно вводит в заблуждение. Эффективный способ справиться с этим — использовать более разумные показатели, такие как показатель ROC-AUC или показатель F1. Если ваш набор данных несбалансирован, может быть очень сложно получить высокий показатель по этим показателям. В этом посте я расскажу о некоторых эффективных методах, которые можно использовать, чтобы справиться с такими задачами. Эти методы представляют собой различные методы выборки, которые можно использовать с такими данными, умно устанавливая некоторые гиперпараметры в некоторых алгоритмах и используя встроенные пакеты, которые содержат разные версии знакомых алгоритмов, которые сами прекрасно справляются с проблемой дисбаланса. В следующем посте я расскажу о методе ансамбля для решения подобной проблемы.

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

1. МЕТОДЫ ОТБОРА ПРОБ

Методы выборки могут быть двумя различными способами:

И. Недостаточная выборка:

Для метода недостаточной выборки можно случайным образом выбрать 4000 отрицательных образцов из 80 000 и все 4000 положительных образцов, что в сумме составляет 8000, которые используются для обучения и тестирования (валидации) вашей модели. Подразумевается, что это позволит вам использовать все алгоритмы классификации в вашем наборе данных обычным способом. Этот метод очень прост в реализации и не требует больших вычислительных затрат, поскольку позволяет алгоритмам классификации работать очень быстро. Есть один недостаток в использовании этого метода. Делая недостаточную выборку в своем наборе данных, вы потенциально отбрасываете имеющиеся у вас 76 000 отрицательных выборок (в нашем рабочем примере), что, очевидно, приводит к потере информации из вашего набора данных.

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

II. Излишняя выборка:

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

2. ИСПОЛЬЗОВАНИЕ ПАРАМЕТРА SCALE_POS_WEIGHT МОДЕЛИ, КАК XGBoost

Такие модели, как XGBoost и CatBoost, имеют встроенный гиперпараметр, который упрощает работу с несбалансированными наборами данных. Вы можете установить гиперпараметр scale_pos_weight алгоритма XGBoost и гиперпараметр class_weight алгоритма CatBoost, чтобы указать, что набор данных имеет определенное соотношение положительных и отрицательных классов, а алгоритмы будут обрабатывать все остальное. Теперь, в нашем рабочем примере с 80 000 отрицательных и 4000 положительных образцов, если мы хотим обучить наш набор данных с помощью классификатора XGBoost, мы должны установить значение гиперпараметра scale_pos_weight равным 80 000/4 000 = 20. На практике это хорошо зарекомендовало себя. . Однако есть недостаток, который ограничивает использование XGBoost и других подобных алгоритмов, таких как CatBoost, поскольку не все модели имеют такие настраиваемые гиперпараметры.

3. ИСПОЛЬЗОВАНИЕ БИБЛИОТЕКИ IMBALANCED-LEARN В PYTHON

Если вы знакомы с программированием на Python для задач обработки данных, существует полноценный пакет Python, разработанный специально для решения подобных несбалансированных проблем в задачах классификации. Эта библиотека является частью sklearn-contribution. Детали библиотеки слишком схематичны, и можно легко заблудиться, читая документацию о пакете. Одна вещь, которая лучше всего сработала для меня на практике, — это BalancedRandomForestClassifier. Популярная модель Random Forest в основном плохо работает с несбалансированным набором данных. Тем не менее, BalancedRandomForestClassifier, который также является частью пакета imblearn (Imbalanced-Learn), доказал свою эффективность. Его функция внутренне обрабатывает проблемы выборки. Вы также можете получить всю мощь обычного алгоритма Random Forest с помощью знакомого API sklearn. Эта библиотека также включает в себя другие функции, такие как встроенные передискретизаторы, недоразборщики, а также поддерживает их комбинацию. В этой библиотеке есть и другие специализированные алгоритмы для обработки сильно искаженных наборов данных. Вы можете поэкспериментировать с тем, что лучше всего подходит для вашего варианта использования.

Если вы работаете с набором данных, который сильно несбалансирован, эта запись в блоге может стать отправной точкой для эффективной работы с искаженными наборами данных. Я надеюсь, что вы найдете этот пост бенефициаром. Вы можете найти все методы, обсуждаемые в этом посте, в кодовой базе здесь, в моем репозитории GitHub: https://github.com/sowole-aims/Handling-Imbalanced-Dataset.git.. эм>

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