Автоматическое обнаружение и анализ экстремальных явлений в реальных данных

Анализируя данные, мы часто думаем о метриках высокого уровня — сколько прибыли мы получили вчера? Сколько пользователей запросили эту конечную точку API? Сколько раз был куплен этот товар?

Но иногда эти высокоуровневые показатели могут сильно искажаться из-за экстремальных событий.

Например, ошибка в обработке кода скидки может позволить покупателю оформить заказ с корзиной на 10 долларов. Это может остаться незамеченным какое-то время, что позволит поделиться кодом в Интернете. Теперь тысячи клиентов оформляют покупки с отрицательными корзинами, что влияет на ваши показатели дохода и прибыльности.

В других случаях такие события не влияют на метрики, но могут негативно сказаться на вашем бизнесе. Например, новый IP-адрес может начать генерировать 3% посещений вашего сайта, потому что конкурент копирует ваш сайт. Если его не обнаружить, конкурент может провести дни или недели с неограниченным доступом к вашему контенту.

Быть в курсе этих редких событий может быть сложной задачей в хранилище, содержащем сотни таблиц с тысячами столбцов и миллионами или миллиардами строк данных. Таким образом, автоматизированное решение имеет решающее значение.

Такие редкие события называются выбросами. А в оставшейся части этой статьи мы кратко расскажем о традиционных подходах к обнаружению выбросов и о том, почему они плохо работают в большинстве реальных случаев использования.

Затем мы объясним наше автоматизированное решение для обнаружения выбросов и покажем примеры с использованием общедоступных данных из отчетов об инцидентах в Нью-Йорке 311.

Существует множество алгоритмических подходов к обнаружению выбросов в выборках данных. Например, из научной документации по обучению у нас есть это сравнение методов на игрушечном наборе данных:

В приведенной выше визуализации каждый столбец представляет собой метод обнаружения выбросов. Каждая точка окрашена в синий цвет, если метод классифицировал ее как выброс, и в противном случае — в оранжевый.

В этом примере все эти методы кажутся разумными. Но такие «игрушечные» наборы данных не отражают сложности выявления выбросов для реального бизнеса, накапливающего огромные объемы данных.

Реальные приложения имеют десятки или сотни столбцов данных в широком диапазоне форматов, а не только два непрерывных значения. Данные также меняются со временем — то, что шесть месяцев назад было исключением, сегодня может стать обычным явлением.

В реальных наборах данных также есть много выбросов, которые просто не имеют значения. Пользователь, который купил 500 лимонов, может быть исключением, но бизнесу может не потребоваться ничего делать в ответ.

Наконец, такие подходы могут быть сложными для интерпретации, особенно при работе с большими наборами данных. Понимание того, почему конкретная точка данных является выбросом, имеет решающее значение для информирования о любых предпринятых действиях.

В Anomalo мы применили практический подход к идентификации выбросов с помощью нашей проверки Entity Outlier.

Во-первых, мы сужаем масштаб проблемы, требуя двух входных данных:

  1. Какой тип объекта мы хотим идентифицировать как выброс?
  2. Какие конкретные показатели мы хотим оценивать на предмет выбросов?

Например, если мы хотим определить, когда новые IP-адреса начинают очищать наш сайт, тогда IP-адрес будет объектом, а посещения сайта будут метрикой.

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

В качестве примера рассмотрим следующую конфигурацию для Данные запроса службы вызова 311 в Нью-Йорке:

Объект, который мы здесь отслеживаем, — это incident_address, то есть место в Нью-Йорке, где произошло сообщение об инциденте 311. И измеряемая нами метрика — это количество жалоб на адрес, рассчитанное с использованием count(1) фрагмента кода SQL.

Мы пытаемся ответить на вопрос: были ли адреса с исключительно большим количеством жалоб в последний день?

Проверка создает набор данных, который имеет следующую форму:

  • address: откуда поступил звонок
  • date: отчетная дата
  • complaints: количество жалоб с этого адреса на эту дату

Затем мы берем максимальное число complaints на date, создавая временной ряд с такой формой:

  • date: отчетная дата
  • max_complaints: максимальное количество жалоб, полученных одним address в эту дату.

Затем мы можем смоделировать это как временной ряд и определить, есть ли выброс на самую последнюю дату:

В большинстве дней максимальное количество жалоб составляет от 10 до 50, с регулярными всплесками до 500. Но на самую последнюю дату, 18 июля, был адрес с 2227 жалобами, что действительно является исключительным!

Затем мы можем автоматически увидеть, какие места были ответственны за этот массовый всплеск жалоб:

Затем мы автоматически профилируем все жалобы на этот адрес и сравниваем их с другими инцидентами, произошедшими в тот же день, чтобы определить, какие сегменты их характеризуют:

В частности, похоже, что 100 % жалоб в этом месте относились к описанию «Громкая музыка/вечеринка», по сравнению с 35 % всех других жалоб 18 июля.

Либо это была эпическая вечеринка, которая разозлила более 2000 человек. Или несколько человек снова и снова подавали жалобы из-за разочарования. (Обратите внимание, что в этом наборе данных нет информации о том, кто отправил жалобу, поэтому мы не можем сказать наверняка.)

Экстремальные события могут быть невероятно важными — по словам Нассима Николаса Талеба:

«Я знаю, что в истории будет доминировать невероятное событие, я просто не знаю, что это будет за событие». — Нассим Николас Талеб

Поиск экстремальных событий в современном облачном хранилище данных, заполненном терабайтами или петабайтами данных, может оказаться очень сложной задачей. Большинство выбросов бессмысленны.

Но, сосредоточившись на ключевых объектах и ​​показателях и используя надежные модели временных рядов и методы анализа первопричин, мы можем четко и автоматически определить и объяснить важные из них.

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

Чтобы начать работу с Anomalo и активно выявлять выбросы в ваших данных, обязательно запросите демонстрацию.