Ответ
Для работы с несбалансированными выборками применяют следующие методы:
- Взвешивание классов — присвоение больших весов ошибкам для меньшего класса в функции потерь.
Пример в sklearn:
model = LogisticRegression(class_weight='balanced')
-
Сэмплирование:
- Oversampling (SMOTE) — увеличение меньшего класса через синтетические примеры.
from imblearn.over_sampling import SMOTE
smote = SMOTE()
X_res, y_res = smote.fit_resample(X, y)
* **Undersampling** — уменьшение большего класса (может потерять информацию).
-
Ансамбли (например, BalancedRandomForest) — алгоритмы со встроенной балансировкой.
-
Метрики вместо accuracy — F1, Precision-Recall, ROC-AUC, чтобы избежать misleading accuracy.
Выбор метода зависит от данных и задачи. SMOTE + ансамбли часто дают лучший результат.