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

Важно!

Поддержка Студии машинного обучения (классической) будет прекращена 31 августа 2024 г. До этой даты рекомендуется перейти на Машинное обучение Azure.

Начиная с 1 декабря 2021 года вы не сможете создавать новые ресурсы Студии машинного обучения (классической). Существующие ресурсы Студии машинного обучения (классическая версия) можно будет использовать до 31 августа 2024 г.

Поддержка документации по ML Studio (классической) прекращается, а сама документация может не обновляться в будущем.

Обнаруживает аномалии во входных данных временных рядов.

Категория: временные ряды

Примечание

Область применения: только Машинное обучение Studio (классическая версия)

Подобные модули перетаскивания доступны в конструкторе машинного обучения Azure.

Обзор модуля

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

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

Методы обнаружения аномалий

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

Однако такие простые подходы не легко адаптированы к данным временных рядов:

  • Создаются большое количество ложных аномалий

  • Методы неприменимы к изменению значений данных

  • Невозможно легко масштабировать до больших временных рядов

Этот модуль предоставляет два дополнительных метода оценки дисперсии от тенденции временных рядов:

  • Измерение величины изменений вверх и вниз

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

  • Измерение направления и длительности тенденций: положительные и отрицательные изменения

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

Примеры аномальных шаблонов в временных рядах

Изменения на уровне вверх и вниз

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

upward and downward level changes

Изменения положительных или отрицательных тенденций

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

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

positive or negative trend change

Ресурсы

Дополнительные сведения об исследованиях, лежащих в основе этого подхода, см. в следующих статьях:

Настройка обнаружения аномалий временных рядов

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

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

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

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

  3. Столбец времени: выберите один столбец в наборе данных, который содержит связанное значение временных рядов.

    Столбец должен содержать допустимые значения даты и времени, то есть все даты должны находиться в диапазоне дат, поддерживаемых платформа .NET Framework.

    Столбец Time должен использовать тип данных DateTime. Если даты находятся в строковом формате, их можно привести с помощью модуля "Применить SQL преобразования" или преобразовать их с помощью модуля "Выполнение скрипта R". Если даты представлены как целые числа, необходимо также использовать соответствующую функцию преобразования даты и времени для представления значений с использованием допустимого формата datetime.

    Например, следующая инструкция SQL изменяет значение последовательной даты Excel в формат datetime:

     SELECT CAST([SerialDate]  AS SmallDateTime) as [NewValidDate] from t1;  
    

    После того как значения даты имеют правильный формат, используйте модуль "Изменить метаданные", чтобы задать для типа столбца значение DateTime.

  4. Martingale Type: Выберите функцию Мартингале для использования.

    • PowerAvg. Этот вариант является маргинализованной реализацией власти мартингале.

      Значение по умолчанию — PowerAvg без дополнительных параметров. Этот вариант дает более стабильный детектор аномалий и должен быть подходящим для большинства потребностей.

    • Власть. Не маргинализованная реализация власти мартингале.

      Параметр Power предоставляет пользователям возможность предоставить значение от 0 до 1 для параметра Epsilon для управления конфиденциальности детектора. Как правило, более высокое значение epsilon означает более высокую чувствительность к аномалиям, но меньше уверенности.

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

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

    • RangePercentile.

      Это значение по умолчанию и в основном используется для обнаружения изменений уровня.

    • SlowPosTrend. Выберите этот параметр, чтобы обнаружить положительные изменения тренда.

    • SlowNegTrend. Выберите этот параметр, чтобы обнаружить негативные изменения тренда.

  6. Длина значений Martingale и Странности: укажите размер окна журнала, который используется для вычисления значений мартингала по сравнению с журналом оглядки назад.

    Значение по умолчанию — 500, но можно указать любое целое число от 0 до 5000. Для больших временных рядов значение по умолчанию должно работать хорошо. Для небольших временных рядов можно попытаться оценить значение ожидаемой длины аномального поведения.

    Рекомендуется, как правило, задать для этих двух параметров одно и то же значение.

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

    Значение по умолчанию — 500, но можно указать любое целое число от 0 до 5000.

    Этот параметр имеет те же ограничения, что и Длина Мартингале. То есть необходимо задать для значения предполагаемое количество точек данных, необходимых для изучения "нормального" поведения.

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

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

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

    Рекомендуется, как правило, задать для этих двух параметров одно и то же значение.

  8. Порог оповещений: укажите значение, над которым оценка аномалий создает оповещение.

    Значение по умолчанию — 3,25, то есть для каждой строки, содержащей оценку 3,25 или более. Да

    Можно указать любое число с плавающей запятой от 0 до 100. Однако существует компромисс между чувствительностью и уверенностью в выборе порогового значения:

    • Более низкий порог делает детектор более чувствительным к аномалиям и создает больше оповещений.

    • Более низкое пороговое значение может привести к неправильной классификации нормальных изменений как аномалий.

  9. Запустите эксперимент.

    Обратите внимание, что вам не нужно обучать эту модель отдельно; алгоритм изучает шаблон на основе данных, предоставленных в качестве входных данных в этом модуле.

Результаты

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

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

  • Оповещение. Этот столбец содержит флаг со значением 0 или 1, где 1 означает, что обнаружена аномалия. Пороговое значение для создания оповещения можно задать на основе столбца оценки, но задать параметр порогового значения оповещения .

Примеры

В следующих примерах показано, как задать функцию martingale для обнаружения аномалий и интерпретации результатов.

Обнаружение изменений на уровне

Чтобы проиллюстрировать влияние различных параметров, пример набора данных, используемого в этом примере, состоит из 8870 точек данных с тремя изменениями уровня. На основе этих данных мы создали две модели, используя следующие параметры.

  • Тип Мартингале: PowerAvg

  • Тип функции Странности: RangePercentile

  • Длина Мартингале = 50

  • Длина значений странности = 50

Модель была обучена на входящих данных, но другое значение было применено для порогового значения оповещения. Результаты прогнозирования отображаются на следующих изображениях для модели 1 и модели 2. На этих графиках синие линии представляют значения данных, а красные линии представляют оповещения , возникающие для аномалии.

Пороговое значение оповещения 0,9

level change with alert of 0.9

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

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

Пороговое значение оповещения 3.25

level change with alert of 3.25

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

Обнаружение положительных изменений наклона

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

Опять же, мы создали две модели с использованием параметров, которые были идентичными, за исключением порогового значения оповещения.

  • Тип Мартингале: PowerAvg

  • Тип функции Странности: SlowPosTrend

  • Длина Мартингале = 50

  • Длина значений странности = 50

На этих графиках синие линии представляют значения данных, а красные линии представляют оповещения, возникающие для аномалии.

Пороговое значение оповещения 4.25

positive trend with alert of 4.25

Пороговое значение оповещения 6.0

positive trend with alert threshold of 6.0

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

Ожидаемые входные данные

Имя Тип Описание
Входные данные, содержащие метки времени и значения Таблица данных Входные данные, содержащие метки даты и времени и значения.

Параметры модуля

Имя Type Диапазон Необязательно Значение по умолчанию Описание
Столбец значений Выбор столбцов Обязательно Выберите столбец, содержащий временные ряды для отслеживания
Размер окна Целое число Обязательно Укажите значение, определяющее размер окна анализа.
Пороговое значение Float Необязательно Укажите значение, определяющее пороговое значение оценки для идентификации аномалии.

Выходные данные

Имя Тип Описание
Заметки временных рядов с оценками аномалий Таблица данных Набор данных с интервалами аномалий.

См. также раздел

обнаружение аномалий;
Одноклассовый метод опорных векторов
Обнаружение аномалий на основе анализа первичных компонентов