Автоматичне визначення порогу для виявлення аномалії


9

Я працюю з тимчасовим рядом балів аномалій (фон - виявлення аномалії в комп'ютерних мережах). Щохвилини я отримую оцінку аномалії яка говорить про те, наскільки "несподіваним" чи ненормальним є поточний стан мережі. Чим вище оцінка, тим більше ненормальним є поточний стан. Теоретично можливі оцінки, близькі до 5, але майже ніколи не трапляються.xt[0,5]

Тепер я хочу створити алгоритм або формулу, яка автоматично визначає поріг для цього часового ряду аномалій. Як тільки оцінка аномалії перевищує цей поріг, спрацьовує тривога.

Розподіл частот нижче є прикладом часового ряду аномалій протягом 1 дня. Однак не можна припустити, що кожен часовий ряд аномалій буде виглядати так. У цьому спеціальному прикладі поріг аномалії, такий як квадратик .99, має сенс, оскільки декілька балів у правій частині можуть розглядатися як аномалії.

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

І такий же розподіл частоти, як часовий ряд (він становить лише від 0 до 1, оскільки немає більш високих показників аномалії у часовому ряду):

часовий ряд

На жаль, розподіл частоти може мати форму, де 0,9-квантиль не корисний . Приклад наведено нижче. Правий хвіст дуже низький, тому, якщо в якості порогового значення використовується 99-квантильний показник, це може призвести до багатьох помилкових позитивних результатів. Схоже, цей розподіл частоти не містить аномалій, тому поріг повинен лежати поза розподілом приблизно в 0,25.

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

Підсумовуючи, різниця між цими двома прикладами полягає в тому, що перший, здається, має аномалії, тоді як другий - ні.

З моєї наївної точки зору, алгоритм повинен розглянути ці два випадки:

  • Якщо розподіл частоти має великий правий хвіст (тобто пара аномальних балів), то коефіцієнт .99 може бути хорошим порогом.
  • Якщо розподіл частоти має дуже короткий правий хвіст (тобто немає аномальних балів), поріг повинен лежати поза розподілом.

/ редагувати: Не існує також основної істини, тобто наявних наборів даних із міткою. Таким чином, алгоритм є «сліпим» від природи оцінок аномалії.

Зараз я не впевнений, як ці спостереження можна висловити за допомогою алгоритму чи формули. Хтось має пропозицію, як можна вирішити цю проблему? Я сподіваюся, що мої пояснення є достатніми, оскільки мій статистичний досвід дуже обмежений.

Спасибі за вашу допомогу!


Тільки зауважте, перший графік не схожий на щось нормальне для мене.
mpiktas

1
@cryptron, ключове питання - що таке звуковий поріг. Наприклад, якщо кожен підвищений сигнал тривоги та непіднятий сигнал триває певні витрати, поріг може бути обраний таким, що мінімізує загальні витрати. Для цього нам потрібні дані про витрати. Без точного визначення звуку неможливо виміряти, як оцінити метод, обраний для вибору порогу.
mpiktas

@mpiktas: Маю визнати, слово "звук" було невдалим у цьому контексті, оскільки я не маю можливості суворо оцінити поріг (отже, я його відредагував). В основному, поріг повинен мінімізувати помилкові позитиви, оскільки вони виявляються набагато дорожчими, ніж помилкові негативи при виявленні мережевої аномалії.
криптрон

@cryptron, чи є у вас дані про те, що є помилковим позитивом?
mpiktas

1
Мене бентежать ваші сюжети. Це універсальний часовий ряд приймаючи значення у ? Або він повинен бути ? (з огляду на вісь x у першому сюжеті). Слідом також було б корисніше. Наприклад, чи отримуєте ви високі бали протягом тривалого періоду часу або в коротких сплесках (або в обох)? Якщо обоє, чи є один більш занепокоєний, ніж інший? Якщо ви можете скласти обґрунтовану модель для даних, ви можете використовувати теоретичні кванти з пристосованого розподілу, які вирішили б проблему, яку ви ототожнили з квантовими вибірками. {xt}0<xt50<xt0.5
JMS

Відповіді:


2

Ви можете знайти цей документ, що цікавить. Дивіться також більш детальну презентацію подібних моделей у West & Harrison . Є й інші приклади подібного моніторингу, багато з яких є більш пізніми, але це не зовсім моя руля :). Безперечно, є відповідні реалізації цих моделей, але я не знаю, що вони можуть бути бездоганними ...

Основна ідея полягає в тому, що у вас є модель комутації, де деякі спостереження / послідовність спостережень відносять до аномальних станів мережі, а інші вважаються нормальними. Така суміш може пояснити довгий правий хвіст у вашому першому сюжеті. Динамічна модель також може попередити вас про ненормальні стрибки, як о 8:00 та 4:00 у режимі реального часу, призначивши високу ймовірність новим спостереженням, що належать до проблемного стану. Це також може бути легко розширено, щоб включити такі речі, як прогнози, періодичні компоненти (можливо, ваш показник трохи піднімається / падає з активністю) та подібні речі.

Редагувати: Я також повинен додати, що така модель є "без нагляду" в тому сенсі, що аномалії потрапляють або шляхом показу великого середнього зсуву, або збільшення дисперсії. Під час збору даних ви можете вдосконалити модель за допомогою більш інформативних попередніх розподілів. Але, можливо, коли у вас буде достатньо даних (і важких прикладів навчання, вирішуючи проблеми з мережею!), Ви зможете розробити кілька простих правил моніторингу (пороги тощо)


1

Чи є у вас якісь "мічені" приклади того, що являє собою аномалію? тобто значення, пов'язані з відмовою в мережі, чи щось подібне?

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

Звичайно, щоб використовувати криву ROC, потрібно якось позначити свої дані.


1
На жаль, у мене немає мічених наборів даних. Існує лише припущення, що довгі хвости або перекиди вказують на аномалії в наборі даних.
криптрон

@cryptron Я бачу. Отже, що вам потрібно - це спосіб динамічно ідентифікувати людей, що вижили.
Зак

Це вирішило б частину проблеми, так.
криптрон

1

Графік "оригінальної серії" не повинен містити жодної заздалегідь визначеної структури. Найважливішим є те, що на графіку "залишків із відповідної модельної серії" потрібно демонструвати або гауссову структуру. Цю "гауссову структуру" зазвичай можна отримати, включивши одну або декілька з наступних "перетворень" 1. АРІМА МОДЕЛЬ 2. Коригування змін місцевого рівня або місцевих тенденцій часу або сезонних імпульсів або звичайних імпульсів 4. можливе перетворення потужності (журнали тощо) для вирішення конкретної дисперсійної неоднорідності 5. виявлення моментів часу, коли модель / параметри можуть змінитися.

Виявлення втручання дасть твердження про статистичну значимість останньої події, що говорить про нормальність чи аномалію


0

У відповіді ОП на мою попередню відповідь він опублікував свої дані в Інтернеті. 60 показань на годину протягом 24 годин протягом 6 днів . Оскільки це інструменти поперечного перерізу часового ряду, такі як DBSCAN, мають обмежене значення, оскільки дані мають часову залежність. Такі дані зазвичай шукають внутрішньогодинну та внутрішньоденну структуру. На додаток до таких типів структури можна проводити виявлення аномалій, які можуть мати або одноразовий (пульсовий), або систематичний характер (зсув рівня), використовуючи добре задокументовані методи (див. Літературу Цей, Тяо, Чен та ін.) ін.) Ці процедури дали наступні "аномалії". Зауважте, що зсув рівня по суті говорить про окремі "кластери". зверху виявлені аномалії

                                HOUR/MINUTE     TIME

-1

Після того, як мій друг вказав мені на алгоритми кластеризації , я наткнувся на DBSCAN, який будує кластери в n-мірному просторі за двома заздалегідь заданими параметрами. Основна ідея - це кластеризація на основі щільності, тобто щільні регіони утворюють кластери. Витрати повертаються окремо за алгоритмом. Тож, застосувавши до моєї одновимірної гістограми, DBSCAN може сказати мені, чи мають мої показники аномалії будь-які вилучення. Примітка. У DBSCAN аутлієр - це лише точка, яка не належить до жодного кластеру. Під час звичайних операцій я очікую, що алгоритм може отримати лише один кластер (і не матиме outliers).

Після деяких експериментів я виявив, що параметри добре працюють. Це означає, що точки повинні демонструвати відстань щонайменше 0,1 до "звичайного" кластера, щоб їх можна було сприймати як випереджаючі.ϵ0.1

Після того, як змогли визначити людей, що не переживають людей, пошук порогу зводиться до простих правил, таких як:

  • Якщо набір демонструє видатки, встановіть поріг між кластером "нормальний" і "зовнішній" так, щоб межа до обох була максимальною.
  • Якщо набір не демонструє ніяких залишків, встановіть поріг на одне стандартне відхилення від самої правої точки.

У будь-якому випадку, дякую за всі корисні відповіді!


@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 Я думаю, що ви використовуєте інструмент поперечного перерізу для проблеми часових рядів. Опублікуйте фактичні дані, і я спробую продемонструвати вам виявлення аномалії за допомогою аналізу часових рядів
IrishStat
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.