Можно ли использовать автоэнкодер для поиска аномалий при дисбалансе классов
Что проверяют
Понимаете ли вы, почему автоэнкодер вообще работает на редких аномалиях и как из ошибки реконструкции получить решение «аномалия или нет». Следом спрашивают, как выбрать порог и какой метрикой мерить качество, когда положительных примеров доли процента.
Как отвечать
Да, это один из стандартных подходов, и дисбаланс здесь скорее условие применимости, чем помеха. Задача переформулируется: вместо классификатора модель учится восстанавливать только нормальные объекты.
- обучение: автоэнкодер обучается на данных без аномалий или с минимальной их долей. Узкое горло (bottleneck) заставляет его сжать типичную структуру данных;
- скор: ошибка реконструкции, обычно MSE по объекту. Нормальные объекты восстанавливаются хорошо, нетипичные хуже;
- порог: подбирается на валидации с немногими размеченными аномалиями, под целевой recall или по максимуму F1. Без разметки берут перцентиль ошибки на нормальных данных, например 99-й, и принимают это как ожидаемую долю ложных срабатываний;
- метрики: PR-AUC и precision/recall при выбранном пороге. ROC-AUC при сильном дисбалансе выглядит оптимистично: огромное число верных отрицательных держит FPR низким;
- варианты: denoising и sparse автоэнкодеры, VAE, LSTM-автоэнкодер для временных рядов.
Сильный ответ называет базовые линии: Isolation Forest, Local Outlier Factor, One-Class SVM, всё это есть в scikit-learn и в PyOD. На табличных данных они часто не хуже нейросети, и сравнивать надо с ними. А если размеченных аномалий сотни, градиентный бустинг с весами классов нередко обыгрывает любой подход без учителя.
Где спотыкаются
Не масштабируют признаки. Ошибка реконструкции суммируется по колонкам, и признак в рублях с разбросом в миллионы заглушает остальные.
Делают модель слишком ёмкой. Автоэнкодер без достаточного сжатия и регуляризации учится копировать вход, так же хорошо восстанавливает аномалии, и разница в ошибке пропадает.
Обучают на данных, где аномалии не вычищены. Если их несколько процентов, модель выучивает и их, а порог уезжает. Помогает предварительная чистка, например тем же Isolation Forest.