Аномалия - это отклонение показателя от нормы. Но как определить, что нормально?

За последние несколько недель я показал демонстрацию нашего продукта нескольким друзьям и знакомым. Эти люди варьируются от инженеров до менеджеров по продукции, от аналитиков до нетехнических бизнес-людей. Одним из ключевых выводов этих разговоров было то, что большинство людей приравнивали аномалии к основанным на правилах предупреждениям - предупреждению, которое срабатывает, когда показатель выходит за пределы указанного диапазона. Например, предупреждать, когда загрузка ЦП превышает 90%.

Если вы выполните Поиск аномалий в Google, вы получите следующий результат из его словаря:

то, что отличается от стандартного, нормального или ожидаемого.

Как вы определяете, что является нормальным или ожидаемым?

Давайте проведем небольшой тест и посмотрим, сможем ли мы визуально определить отклонения или аномалии в данных.

На приведенной ниже диаграмме показаны почасовые данные для реальной метрики за 30 дней. Визуально похоже, что есть две аномалии - одна 24 февраля, а другая 3 марта.

Давайте посмотрим на ту же метрику с детализацией как за день, а не за час. Глядя на этот снимок, 24 февраля не кажется аномалией. Похоже, 3 марта произошла всего одна аномалия.

Теперь давайте изменим продолжительность данных с 30 дней на 180 дней. Каждые несколько дней бывают всплески. Это нормально для метрики? Могут быть скачки показателей в начале каждого месяца. Но кажется, что шипы расположены неравномерно. 3 марта все еще аномалия?

Теперь давайте посмотрим на эти 180-дневные данные на еженедельной основе. Неделя 3 марта - аномалия? Не похоже.

Мы только что увидели, что для метрики нет нормальных показателей. Что нормально, зависит как минимум от двух факторов:

  1. Детализация данных (ежечасно, ежедневно, еженедельно и т. д.)
  2. Количество исторических данных

Кроме того, с каждым изменением базовых данных изменяется и обычный режим. То, что сегодня является аномалией, могло и не считаться аномалией 6 месяцев назад.