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

Огромное количество финансовых транзакций, с которыми ежедневно работают платежные системы, ошеломляет и только увеличивается: порядка 70 миллионов транзакций по кредитным картам в день в 2012 году, а убытки составят миллиарды долларов в 2017 году. Определение того, является ли транзакция законной или мошенничеством, является задачей исключительно компьютерной системы просто из-за объема. Традиционный подход машинного обучения заключается в создании классификатора, который помогает участнику цикла сократить количество транзакций, которые ему нужно просмотреть.

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

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

Даже синтетические наборы данных для финансового мошенничества искажены, см., Например, дисбаланс в этом наборе данных Kaggle для прогнозирования мошенничества в финансовых платежных сервисах:

Набор данных содержит более 6 миллионов транзакций и 11 функций:

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

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

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

В общем, так выглядит несбалансированный набор данных:

Существуют две общие стратегии устранения дисбаланса: уменьшение класса большинства (недостаточная выборка) или создание синтетических данных из класса меньшинства (избыточная выборка). Мы обсудим оба.

Стратегия 1. Недостаточная выборка для большинства

В этой стратегии идея состоит в том, чтобы уменьшить количество выборок класса большинства.

1.1 Случайная недостаточная выборка

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

1.2 Кластеризация недостаточной выборки

Другая стратегия - уменьшить большинство выборок до k выборок, которые соответствуют k центроидам класса большинства. Эти центроиды вычисляются неконтролируемым алгоритмом кластеризация k-средних. Количество центроидов обычно устанавливается равным количеству выборок в классе меньшинства, так что весь набор данных сбалансирован.

1.3 Ссылки Tomek

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

Стратегия 2. Превышение выборки класса меньшинства

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

2.1 Передискретизация путем случайного дублирования класса меньшинства

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

2.2 Передискретизация синтетического меньшинства (SMOTE)

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

Следующая анимация применяется к нашему предыдущему примеру для иллюстрации:

2.3 Адаптивный синтетический (ADASYN)

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

3. Передискретизация и недостаточная выборка (ссылки SMOTE + Tomek)

Наконец, комбинация передискретизации (например, через SMOTE) и недостаточной выборки (например, через ссылки Tomek), возможно, является идеальным путем для работы с несбалансированными данными. Алгоритм передискретизации создает новые экземпляры для соответствия балансу, а процедура недостаточной выборки удаляет точки из класса большинства, которые в противном случае вычитали бы вес драгоценным выборкам класса меньшинства. Пример такой стратегии можно увидеть на следующей анимации:

Резюме

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

К счастью, поэкспериментировать с производительностью этих методов несложно с помощью библиотеки Python imbalanced-learn.

Дальнейшее чтение:

Исходный код:

В этом репозитории https://github.com/gchavez2/code_machine_learning_algorithms вы можете найти код Python, который использовался для генерации экспериментов в этой статье, в виде записной книжки Jupyter:

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

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