Балансировка данных (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 автоматически вычисляет веса классов обратно пропорционально их частоте. - Задачи: обнаружение мошенничества, диагностика редких заболеваний, выявление аномалий в промышленных данных, где положительный класс (мошенничество, болезнь, аномалия) встречается значительно реже отрицательного.
