Рекомендации по использованию одномерного API Детектора аномалий

API детектора аномалий — это служба обнаружения аномалий без отслеживания состояния. На точность и производительность ее результатов могут влиять следующие факторы.

  • Способ подготовки данных временных рядов.
  • Используемые параметры API Детектора аномалий.
  • Количество точек данных в запросе API.

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

Когда следует использовать пакетное (полное) обнаружение аномалий или обнаружение с новейшей (последней) точки

Конечная точка пакетного обнаружения API Детектора аномалий позволяет обнаруживать аномалии среди всех данных временных рядов. В этом режиме обнаружения создается одна статистическая модель, она применяется для каждой точки в наборе данных. Если временные ряды имеют следующие характеристики, рекомендуется использовать функцию пакетного обнаружения для предварительного просмотра данных в одном вызове API.

  • Сезонные временные ряды с редкими аномалиями.
  • В основном ровный временной ряд с редкими пиковыми нагрузками/провалами.

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

  • Пакетное обнаружение создает и применяет только одну модель, обнаружение для каждой точки выполняется в контексте всего ряда. Если данные временных рядов изменяются без сезонности, то некоторые точки изменения (провалы и пики в данных) могут быть упущены моделью. Аналогичным образом, некоторые точки изменения, которые менее важны, чем находящиеся позже в наборе данных, могут не считаться достаточно важными для включения в модель.

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

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

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

An image showing anomaly detection using the latest point

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

An image showing anomaly detection using the batch method

Подготовка данных

API Детектора аномалий принимает данные временных рядов, отформатированные в объект запроса JSON. Временные ряды могут быть любыми числовыми данными, записанными с течением времени в последовательном порядке. Вы можете отправить окна данных временных рядов в конечную точку API Детектора аномалий, чтобы повысить производительность API. Минимальное количество точек данных, которые вы можете отправить, равно 12, а максимальное — 8640. Степень детализации определяется как скорость выборки данных.

Точки данных, отправляемые в API Детектора аномалий, должны иметь допустимую отметку времени в формате UTC и числовое значение.

{
    "granularity": "daily",
    "series": [
      {
        "timestamp": "2018-03-01T00:00:00Z",
        "value": 32858923
      },
      {
        "timestamp": "2018-03-02T00:00:00Z",
        "value": 29615278
      },
    ]
}

Если данные выдаются в виде выборки за нестандартный интервал времени, его можно указать, добавив атрибут customInterval в запрос. Например, если выборка в ряде выполняется каждые 5 минут, в запрос JSON можно добавить следующее.

{
    "granularity" : "minutely", 
    "customInterval" : 5
}

Отсутствующие точки данных

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

Агрегирование распределенных данных

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

Обнаружение аномалий в данных с сезонными шаблонами

Если известно, что у данных временных рядов есть сезонный шаблон (возникающий через регулярные интервалы), то можно повысить точность и время ответа API.

Указание period при создании запроса JSON может снизить задержку обнаружения аномалий на 50 %. period — это целое число, которое указывает, сколько точек данных уходит у временного ряда на повторение шаблона. Например, временной ряд с одной точкой данных в день будет иметь значение period, равное 7, а временной ряд с одной точкой в час (с тем же еженедельным шаблоном) будет иметь значение period, равное 7*24. Если вы не уверены в шаблонах данных, этот параметр указывать не нужно.

Для получения наилучших результатов предоставьте точки данных за четыре period, а также один дополнительный. Например, ежечасные данные с еженедельным шаблоном, как описано выше, должны предоставлять 673 точки данных в тексте запроса (7 * 24 * 4 + 1).

Выборка данных для мониторинга в режиме реального времени

Если данные потоковой передачи выдаются через короткий интервал (например, секунды или минуты), отправка рекомендуемого количества точек данных может превысить максимально допустимое количество (8640 точек данных) API Детектора аномалий. Если в данных отображается устойчивый сезонный шаблон, рассмотрите возможность отправки образов данных временных рядов через более длительный интервал времени, например часы. Выборка данных таким образом также может заметно улучшить время ответа API.

Дальнейшие действия