Балансировка данных (Data Balancing)

Что такое Балансировка данных (Data Balancing)?

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

В задачах классификации нередко встречается ситуация, когда количество примеров в разных классах сильно различается. Например, в наборе данных для выявления мошеннических транзакций 99 % операций — легитимные, и лишь 1 % — мошеннические. Если обучить модель на таких данных без коррекции, она может «научиться» просто относить все транзакции к классу «легитимные», демонстрируя формально высокую точность (99 %), но будучи абсолютно бесполезной на практике. Балансировка призвана решить эту проблему.

Аналогия

Представьте магазин, где 99 % товаров — это яблоки, и лишь 1 % — экзотические фрукты. Если продавец будет ориентироваться только на общий поток покупок, он никогда не научится предлагать экзотику — все его рекомендации будут сводиться к яблокам. Чтобы исправить ситуацию, нужно искусственно увеличить представленность экзотических фруктов в «обучающей выборке» для продавца — например, чаще показывать ему эти товары или делать на них акцент. Именно это и делает балансировка данных для модели.

Исторический контекст

Проблема дисбаланса классов известна с ранних этапов развития машинного обучения. Уже в 1990–2000‑х годах исследователи обратили внимание на то, что стандартные алгоритмы (такие как деревья решений, логистическая регрессия) демонстрируют низкую эффективность на несбалансированных данных. В ответ на это были разработаны первые методы балансировки — например, oversampling (дополнение меньшинственного класса) и undersampling (сокращение доминирующего класса). В 2002 году Н. Чжоу и Ю. Лю предложили алгоритм SMOTE (Synthetic Minority Over-sampling Technique), который стал одним из самых популярных методов генерации синтетических примеров для меньшинственного класса.

Смежные понятия

  • Взвешивание классов — альтернативный подход, при котором модели присваиваются разные веса для ошибок на разных классах (вместо изменения данных).
  • Аугментация данных — расширение набора данных за счёт преобразований существующих примеров (например, поворот изображений). В контексте балансировки аугментация часто применяется именно к меньшинственному классу.
  • Метрики качества — для оценки моделей на несбалансированных данных используют не точность (accuracy), а F1‑меру, ROC‑AUC, precision, recall, так как они лучше отражают способность модели работать с редким классом.

Примеры использования

  • SMOTE — генерация синтетических примеров для меньшинственного класса на основе интерполяции между существующими точками.
  • Random oversampling/undersampling — случайное дублирование примеров меньшинственного класса или удаление примеров доминирующего класса.
  • Tomek links — удаление примеров из доминирующего класса, которые находятся «слишком близко» к примерам меньшинственного класса, чтобы уменьшить перекрытие классов.
  • Class weights в sklearn — параметр class_weight='balanced' в классификаторах scikit‑learn автоматически вычисляет веса классов обратно пропорционально их частоте.
  • Задачи: обнаружение мошенничества, диагностика редких заболеваний, выявление аномалий в промышленных данных, где положительный класс (мошенничество, болезнь, аномалия) встречается значительно реже отрицательного.

Авторизация