Автоматическое определение порога для обнаружения аномалий

9

Я работаю с временным рядом оценок аномалий (фон - обнаружение аномалий в компьютерных сетях). Каждую минуту я получаю оценку аномалии которая говорит мне, насколько «неожиданным» или ненормальным является текущее состояние сети. Чем выше оценка, тем ненормальнее текущее состояние. Результаты, близкие к 5, теоретически возможны, но встречаются практически никогда.ИксT[0,5]

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

Распределение частот ниже является примером для временного ряда аномалий за 1 день. Однако, это не безопасно предположить , что каждый раз , когда ряд аномалий будет выглядеть. В этом особом примере, порог аномалии, такой как квантиль .99, будет иметь смысл, так как несколько баллов справа могут рассматриваться как аномалии.

введите описание изображения здесь

И то же распределение частот, что и во временном ряду (оно колеблется от 0 до 1, так как во временных рядах нет более высоких оценок аномалий):

временная последовательность

К сожалению, распределение частот может иметь форму, где квантиль .99 бесполезен . Пример ниже. Правый хвост очень низкий, поэтому, если квантиль .99 используется в качестве порога, это может привести к множеству ложных срабатываний. Такое распределение частот , по-видимому, не содержит аномалий, поэтому пороговое значение должно лежать вне распределения в пределах 0,25.

введите описание изображения здесь

Подводя итог, можно сказать, что разница между этими двумя примерами заключается в том, что в первом случае наблюдаются аномалии, а во втором - нет.

С моей наивной точки зрения алгоритм должен учитывать следующие два случая:

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

/ edit: также не существует основополагающей истины, то есть доступны маркированные наборы данных. Таким образом, алгоритм является «слепым» по отношению к природе оценок аномалий.

Теперь я не уверен, как эти наблюдения могут быть выражены в терминах алгоритма или формулы. У кого-нибудь есть предложения как решить эту проблему? Я надеюсь, что мои объяснения достаточны, так как мой статистический фон очень ограничен.

Спасибо за вашу помощь!

cryptron
источник
Просто заметка, первый график не выглядит для меня чем-то нормальным.
mpiktas
1
@ криптрон, ключевой вопрос в том, что такое звуковой порог. Например, если каждая активированная тревога и невызванная тревога несут определенные затраты, пороговое значение можно выбрать таким, чтобы минимизировать общие затраты. Для этого нам нужны данные о затратах. Без точного определения звука невозможно измерить, как оценить метод, выбранный для выбора порога.
mpiktas
@mpiktas: Я должен признать, что слово «звук» было неудачным в этом контексте, потому что у меня нет способа строго оценить порог (следовательно, я его отредактировал). По сути, пороговое значение должно сводить к минимуму ложные срабатывания, поскольку они намного дороже, чем ложные отрицания при обнаружении сетевых аномалий.
Криптрон
@cryptron, у вас есть какие-либо данные о ложном срабатывании?
mpiktas
1
{ИксT}0<ИксT50<ИксT0,5

Ответы:

2

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

Основная идея заключается в том, что у вас есть модель переключения, в которой некоторые наблюдения / последовательности наблюдений относятся к ненормальным состояниям сети, а остальные считаются нормальными. Подобная смесь может объяснить длинный правый хвост в вашем первом сюжете. Динамическая модель также может предупреждать вас о ненормальных скачках, например, в 8:00 и 4:00 в режиме реального времени, назначая высокую вероятность новым наблюдениям, относящимся к состоянию проблемы. Это также может быть легко расширено, чтобы включить такие вещи, как предикторы, периодические компоненты (возможно, ваш счет увеличивается / падает с активностью) и тому подобное.

Изменить: я должен также добавить, что этот тип модели "без присмотра" в том смысле, что аномалии обнаруживаются либо показывая большой средний сдвиг или увеличение дисперсии. Когда вы собираете данные, вы можете улучшить модель с помощью более информативных предыдущих рассылок. Но, возможно, когда у вас будет достаточно данных (и с трудом завоеванных примеров обучения по решению проблем с сетью!), Вы сможете разработать некоторые простые правила мониторинга (пороги и т. Д.)

JMS
источник
1

Есть ли у вас «помеченные» примеры того, что представляет собой аномалию? т.е. значения, связанные с отказом сети, или что-то подобное?

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

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

Zach
источник
1
К сожалению, у меня нет помеченных наборов данных. Существует только предположение, что длинные хвосты или выбросы указывают на аномалии в наборе данных.
Криптрон
@ Криптрон, я вижу. Так что вам нужен способ динамического выявления выбросов.
Зак
Это решило бы часть проблемы, да.
Криптрон
1

График «оригинальной серии» не обязательно должен иметь заранее заданную структуру. Важно то, что график «остатков из подходящего модельного ряда» должен иметь гауссову структуру. Эта «гауссова структура» обычно может быть получена путем включения одного или нескольких из следующих «преобразований» 1. МОДЕЛЬ аримы 2. Корректировки для локальных сдвигов уровня или трендов местного времени, сезонных импульсов или обычных импульсов 3. Взвешенный анализ, использующий доказанную неоднородность дисперсии 4. возможное преобразование мощности (журналы и т. Д.), Чтобы справиться с определенной неоднородностью дисперсии. 5. обнаружение моментов времени, когда модель / параметры могли измениться.

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

IrishStat
источник
0

В ответ OP на мой предыдущий ответ он разместил свои данные в Интернете. 60 чтений в час в течение 24 часов в течение 6 дней . Поскольку это инструменты сечения временных рядов, такие как DBSCAN, имеют ограниченную актуальность, поскольку данные имеют временную зависимость. С такими данными обычно выглядит внутричасовая и внутридневная структура. В дополнение к этим типам структуры можно проводить обнаружение аномалий, которые могут быть либо однократными (импульсные), либо систематическими по природе (сдвиг уровня), используя методы, которые хорошо документированы (см. Литературу Tsay, Tiao, Chen et. al.) Эти процедуры привели к следующим «аномалиям». Отметим, что сдвиг уровня по существу наводит на мысль об отдельных «кластерах». выявленные аномалии

                                HOUR/MINUTE     TIME
IrishStat
источник
-1

После того, как мой друг указал мне направление кластеризации , я наткнулся на DBSCAN, который строит кластеры в n-мерном пространстве в соответствии с двумя предопределенными параметрами. Основная идея - кластеризация на основе плотности, т.е. плотные области образуют кластеры. Выбросы возвращаются отдельно алгоритмом. Таким образом, при применении к моей одномерной гистограмме DBSCAN может сказать мне, имеют ли мои оценки аномалии какие-либо выбросы. Примечание. В DBSCAN выброс - это просто точка, которая не принадлежит ни одному кластеру. Я ожидаю, что во время нормальной работы алгоритм выдаст только один кластер (и не будет выбросов).

ε0,1

После того, как можно определить выбросы, обнаружение порога сводится к простым правилам, таким как:

  • Если в наборе присутствуют выбросы, установите порог между кластером «нормальный» и «выброс», чтобы максимально увеличить оба поля.
  • Если в наборе отсутствуют какие-либо выбросы, установите порог на одно стандартное отклонение от крайней правой точки.

В любом случае, спасибо за все полезные ответы!

cryptron
источник
@crypton Как DBSCAN работает с автокоррелированными сериями. Например, временной ряд 1,9,1,9,1,9,5 будет иметь внутреннее / необычное значение. Связано ли это со сдвигами уровней в серии или рядом возможных тенденций? Как это относится к сезонным авторегрессионным данным, когда, кроме, скажем, июня каждого месяца, серия является «регулярной», а каждый июнь - «большой». Выявляются ли «большие значения июня» как выбросы? Просто любопытно !
IrishStat
2
@IrishStat По сути, кластеры DBSCAN указывают в n-мерном пространстве. Поэтому его пригодность для анализа временных рядов очень ограничена. Это работает для моего особого случая, так как я ожидаю только один кластер в моей (одномерной) гистограмме. Чтобы ответить на ваши вопросы: При использовании соответствующих параметров значение 5 вашего примера будет определено как выброс. Я предполагаю, что это может иметь дело с тенденциями, но во временных рядах «1, 2, 3, 4, 5, 6, 7, 2» значение 2 не будет считаться выбросом! Я надеюсь, что это дает приблизительное представление о возможностях и ограничениях DBSCAN.
Криптрон
1
@crypton Спасибо за информацию. Мне кажется, что когда вы ссылаетесь на 1 кластер, вы имеете в виду 1 и только 1 среднее. Даже если нет средней автокорреляции в ваших данных, это делает их «временными рядами», что говорит о том, что DBSCAN может быть не так полезен, как вы думаете, для отделения сигнала от шума, что приводит к эффективной идентификации анамольных данных.
IrishStat
1
@crypton Мне кажется, что один кластер подразумевает 1 среднее по сравнению с временным рядом, в котором, скажем, 1,1,1,1,2,2,2,2 с некоторыми небольшими отклонениями вокруг этих значений.
IrishStat
2
@crpton Я думаю, что вы используете инструмент поперечного сечения для проблемы временных рядов.
Опубликуйте