Поиск аномалий во временных рядах нужен при мониторинге серверов, оборудования и технологических процессов. Простейшие методы опираются на статистику самого ряда: точка считается аномальной, если она сильно отличается от типичных значений. Известны правило N сигм и критерий Тьюки на квартилях, на котором построен «ящик с усами» [1, 2]. В реальном ряду среднее и разброс меняются со временем, поэтому статистики считают в скользящем окне [3]. Размер окна и порог на практике часто берут по умолчанию (три сигмы и 1,5 межквартильных размаха) и не проверяют. Цель работы состоит в том, чтобы оценить, как размер окна и порог влияют на качество поиска аномалий двумя методами, когда положение аномалий известно.
Для точки y ( t ) по предыдущим W отсчётам вычисляются среднее μ и стандартное отклонение σ, сама точка в окно не входит. По правилу z-score точка аномальна, если | y ( t ) − μ| > k σ. По правилу IQR находят первый и третий квартили Q 1 и Q 3 и размах IQR = Q 3 − Q 1 , аномальным считается значение вне интервала [ Q 1 − m ·IQR; Q 3 + m ·IQR]. Для нормального распределения граница при m = 1,5 лежит примерно в 2,7σ от среднего, а при m = 2,5 примерно в 4,05σ. Пороги k и m поэтому сопоставимы, но не совпадают.
Синтетический ряд содержит 2000 отсчётов: синусоида с амплитудой 5 и периодом 500 отсчётов (имитирует суточный цикл нагрузки) и гауссов шум с σ = 1. В отсчёты с 250-го по 2000-й случайно добавлено 30 аномалий величиной от 4 до 8 со случайным знаком. Метки аномалий известны, поэтому рассчитывались точность (доля верных среди найденных), полнота (доля найденных среди всех имеющихся) и F1-мера. Эксперимент выполнен на Python с библиотекой numpy на 50 реализациях ряда с разными начальными значениями генератора (от 0 до 49), результаты усреднены. Перебирались окна 10, 20, 30, 50, 100 и 200 отсчётов, значения k от 2 до 4 и m от 1 до 3.
Зависимость F1 от размера окна показана на рисунке 1а. Для z-score при k = 3 значение F1 растёт от 0,61 при W = 10 до 0,77 при W = 50 и падает до 0,51 при W = 200. Для IQR при m = 1,5 картина похожая: от 0,32 до 0,53 и затем 0,28. Подробные значения при k = 3 и m = 1,5 приведены в таблице 1.
Рис. 1. Зависимость F1 от размера окна (а) и от порога (б)
Таблица 1
Качество обнаружения аномалий при стандартных порогах
|
Окно W |
z-score: точность |
z-score: полнота |
z-score: F1 |
IQR: точность |
IQR: полнота |
IQR: F1 |
|
10 |
0,47 |
0,87 |
0,61 |
0,19 |
0,97 |
0,32 |
|
30 |
0,70 |
0,85 |
0,76 |
0,33 |
0,95 |
0,49 |
|
50 |
0,75 |
0,80 |
0,77 |
0,37 |
0,91 |
0,53 |
|
200 |
0,63 |
0,43 |
0,51 |
0,21 |
0,42 |
0,28 |
Причины видны из устройства методов. В окне из 10 отсчётов оценки σ и квартилей неустойчивы, поэтому растёт число ложных срабатываний: точность z-score равна 0,47. В окне из 200 отсчётов, то есть при 40 % периода синусоиды, среднее запаздывает за трендом, а в окно чаще попадают прежние аномалии. Оценка разброса завышается, и полнота падает до 0,43. Стандартный порог IQR (1,5) близок к 2,7σ, поэтому при W = 50 он находит 91 % аномалий, но точность составляет лишь 0,37: больше половины сигналов оказываются ложными.
Лучшие сочетания параметров по F1 найдены при W = 30 для обоих методов: z-score с k = 3,5 (точность 0,89, полнота 0,77) и IQR с m = 2,5 (точность 0,83, полнота 0,82). F1 в обоих случаях равна 0,82. Правило z-score даёт чуть более высокую точность, IQR чуть более высокую полноту. Зависимость от порога показана на рисунке 1б для W = 50.
Подбор порога меняет картину (рисунок 1б). При W = 50 для z-score значение F1 растёт от 0,33 при k = 2 до 0,79 при k = 3,5, а затем снижается до 0,73 при k = 4: полнота падает до 0,58, и рост точности (до 0,98) этого не компенсирует. Для IQR максимум 0,81 достигается при m = 2,5, а при m = 1 точность равна всего 0,13. Стандартные значения k = 3 и m = 1,5 теряют 0,02 и 0,28 по F1 относительно лучших порогов для этого окна, то есть ошибка в выборе порога обходится дороже, чем неточный выбор окна.
Если для каждого окна брать лучший порог, различия между окнами сокращаются. Максимальная F1 для z-score равна 0,75, 0,80, 0,82, 0,79, 0,72, 0,51 при окнах 10, 20, 30, 50, 100, 200 отсчётов соответственно, а для IQR 0,62, 0,80, 0,82, 0,81, 0,69, 0,34. Окна от 20 до 50 отсчётов дают близкий результат, окно в 200 отсчётов плохо подходит обоим методам. IQR заметно уступает z-score при самом малом и самом большом окне: 0,62 против 0,75 при W = 10 и 0,34 против 0,51 при W = 200. Вероятно, это связано с тем, что квартили по десяти точкам оцениваются грубо, а в длинном окне размах включает изменение самого тренда.
Результаты позволяют сформулировать три практических вывода. Во-первых, при выборе окна нужно ориентироваться на форму ряда: окно должно быть заметно короче периода колебаний, но содержать достаточно точек для оценки разброса, в данном ряду это от 30 до 50 отсчётов. Во-вторых, порог по умолчанию не универсален и его стоит подбирать на размеченном фрагменте данных. В-третьих, при подобранных порогах разница между z-score и IQR невелика. Ограничения эксперимента: один тип ряда, крупные точечные аномалии, независимый шум и отсутствие исключения найденных аномалий из окна. На реальных рядах значения могут отличаться, поэтому полученные числа следует рассматривать как иллюстрацию поведения методов.
Литература:
- Чепулис М. А., Шевляков Г. Л. Об обнаружении выбросов с помощью неравенства Чебышева // Журнал Белорусского государственного университета. Математика. Информатика. 2020. № 3. С. 28–35.
- Андреа К., Шевляков Г. Л. Обнаружение выбросов с помощью боксплотов, основанных на новых высокоэффективных робастных оценках масштаба // Научно-технические ведомости СПбГПУ. Информатика. Телекоммуникации. Управление. 2013. № 5 (181). С. 39–45.
- Сергеев Д. Открытый курс машинного обучения. Тема 9. Анализ временных рядов с помощью Python // Хабр. 2017. 24 апр. URL: https://habr.com/en/companies/ods/articles/327242/ (дата обращения: 14.10.2026).

