Какие модели используются для анализа событий, например Isolation Forest
Что проверяют
Вопрос про опыт: какие методы поиска аномалий вы применяли на событиях (логи, транзакции, метрики) и почему именно их. Интервьюер хочет услышать не определение Isolation Forest, а как вы выбирали модель без разметки и как проверяли, что она ловит нужное. Следом спрашивают про порог и ложные срабатывания.
Как отвечать
Постройте ответ вокруг своего проекта: какие события, какой объём, что считалось аномалией, чем закончилось. Цифры (сколько алертов в день, какую долю подтвердили) нужны ваши, а не из шаблона. Если такого проекта не было, так и скажите и разберите, как бы подошли к задаче.
Каркас по методам:
- статистика: z-score, скользящая медиана и MAD, сезонное разложение STL. Для одномерных метрик часто хватает, и бизнесу это объясняется за минуту;
- Isolation Forest: строит случайные деревья и меряет, за сколько разбиений точка изолируется. Аномалии изолируются быстрее. В scikit-learn это
IsolationForest, каждое дерево по умолчанию строится на подвыборке до 256 объектов, поэтому метод быстрый и почти линейный по объёму; - LOF: сравнивает локальную плотность точки с плотностью соседей, хорош при кластерах разной плотности. Для оценки новых данных нужен
novelty=True; - One-Class SVM: чувствителен к масштабу признаков и плохо растёт на сотнях тысяч объектов;
- автоэнкодеры: аномалией считают большую ошибку реконструкции, уместны на сложных многомерных данных и последовательностях.
Отдельно скажите про оценку: без меток берут top-k подозрительных, отдают на ручную проверку и считают precision@k.
Где спотыкаются
Оставляют contamination по умолчанию или ставят его наугад. Этот параметр прямо задаёт порог, то есть долю объектов, которые будут объявлены аномалиями.
Не масштабируют признаки для LOF и One-Class SVM. Деревьям это не нужно, методам на расстояниях критично.
Забывают про время. На событиях с сезонностью «аномалией» оказывается каждый понедельник, если не убрать тренд и суточный цикл или не добавить их признаками.