Что такое сбалансированный класс в машинном обучении

«Что такое сбалансированный класс в машинном обучении» — вопрос из категории Машинное обучение, который задают на 33% собеседований Аналитик Данных. Ниже — развёрнутый ответ с разбором ключевых моментов.

Ответ

Сбалансированный класс — это когда распределение целевой переменной в данных примерно равное (например, 50% положительных и 50% отрицательных примеров). В несбалансированных данных один класс значительно преобладает (например, 95% одного класса и 5% другого), что может ухудшить качество модели.

Пример несбалансированных данных:

from sklearn.datasets import make_classification
X, y = make_classification(n_samples=1000, weights=[0.9, 0.1])
print(sum(y == 0), sum(y == 1))  # Пример вывода: 900, 100

Методы борьбы с дисбалансом:

  • Взвешивание классов (class_weight в sklearn)
  • Оверсэмплинг (SMOTE, RandomOverSampler)
  • Андерсэмплинг (RandomUnderSampler)
  • Использование метрик (F1, ROC-AUC вместо accuracy)