Виявлення аномалії: який алгоритм використовувати?


10

Контекст: Я розробляю систему, яка аналізує клінічні дані, щоб відфільтрувати неправдоподібні дані, які можуть бути помилковими.

Що я робив до цього часу:

Для кількісної оцінки правдоподібності моєю спробою поки що була нормалізація даних, а потім обчислення значення правдоподібності для точки p на основі її відстані до відомих точок даних у наборі D (= навчальний набір):

plausibility(p)=qDGauss(distance(p,q))

За допомогою цього кількісного визначення я можу вибрати поріг, який відокремлює правдоподібні дані від неправдоподібних даних. Я використовую python / numpy.

Мої проблеми:

  1. Цей алгоритм не може виявити незалежні розміри. В ідеалі я міг би вкласти в алгоритм все, що я знаю про запис, і дозволити йому з’ясувати, що розмірність X не впливає на правдоподібність запису.
  2. Алгоритм насправді не працює для дискретних значень, таких як булеві або вибрані входи. Вони можуть бути відображені на безперервних значеннях, але контр-інтуїтивно зрозуміло, що Select 1 ближче до Select 2, ніж Select 3.

Питання:

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

Будь-яка порада високо цінується.

[Редагувати] Приклад:

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

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


Будь ласка, дивіться мою відповідь на stats.stackexchange.com/questions/97946/changepoints-in-r, коли вона ставиться до цього неприємного (на деякі!) Питання.
IrishStat

Чи стане stats.stackexchange.com/questions/213 тим, що ви шукаєте?
whuber

Сумніваюсь, ви можете зробити цю роботу для булів.
Аксакал

@whuber Я не впевнений, він, схоже, не висвітлює, як ігнорувати нерелевантні розміри.
Георг

1
До речі, я також намагаюся знайти формалізацію описаного мною підходу. Якби я знав формальний термін, це також допомогло б мені в дослідженні. Можливо, цей алгоритм є варіантом, який вирішує щонайменше питання незалежного / нерелевантного виміру.
Георг

Відповіді:


7

Типовим формулюванням виявлення аномалії є пошук середнього та дисперсії для кожної з ознак неаномальних даних, і якщо - вектор тих ознак, що мають компоненти то визначають ймовірність комбінації ознак якx x i p ( x )mxxip(x)

p(x)=i=1mp(xi;μi,σi2)

де кожен розподілений :x iN ( μ i , σ 2 i )xixiN(μi,σi2)

аномалія виникає щоразу, колиp(x)<ϵ

Розподіл кожного насправді не повинен бути нормальним, але краще, якщо він буде хоча б нормальним. Але використовувані функції довільні; вони можуть бути взяті безпосередньо з необроблених даних або обчислені, тому, наприклад, якщо ви вважаєте, що функцію краще моделювати за допомогою то встановіть функцію для а не .xixiloglog(xi)xi

Це здається дуже схожим на те, що ви вже робите, якщо ви приймаєте .q=μ

Визначенняϵ

Алгоритм підходить до негативних прикладів (неаномалії). Але визначається з набору перехресних перевірок і зазвичай вибирається як значення, що забезпечує найкращу оцінкуϵF1

F1=2PrecisionRecallPrecision+Recall

Але для обчислення F1 потрібно знати, що аномально, а що ні; це правда, коли система прогнозує аномалію, а вона насправді є аномалією, помилкові позитиви прогнозуються аномаліями, яких насправді немає тощо. Тож якщо у вас цього немає, то, можливо, вам доведеться відмовитися від здогадок.

Проблема співвіднесених ознак

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

p(x)=1(2π)m2(detΣ)1/2e12(xμ)TΣ1(xμ)

Те ж саме стосується пошуку і цей підхід також має недолік, тобто ви повинні обчислити зворотну частину . Таким чином, повинно бути як мінімум стільки зразків, скільки функцій, і якщо кількість функцій велике, процес буде обчислювально інтенсивним, і ви повинні охороняти лінійно залежні функції. Пам'ятайте про ці застереження, але, здається, для вас це не буде проблемою.ϵΣ


Я вже спробував такий підхід, включаючи багатоваріантний гауссовий розподіл. Дійсно, не пов'язані між собою особливості такого підходу. Я виявив, що такий підхід не підходить для складних моделей. Наприклад, якщо у мене був 2D набір даних з особливостями F1, F2, коли це трапляється так, що приблизно F2 = F1 ^ 3, багатоваріантний гауссовий розподіл буде лише малювати еліпс навколо даних і моделювати дані дуже приблизно. Ось чому я пішов на підхід, описаний у питанні (де не одна q, а багато q).
Георг

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

@Georg Hmm Цікаво, чи ваша проблема не проблема складних моделей, а складних даних і занадто спрощених моделей. Або іншими словами недостатньо підходить. У наведеному вище випадку, що станеться, якщо замість ви використовуєте ? Особливості можна взяти з даних або обчислити. (F1,F2)(F1,F21/3)
waTeim

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

Ось приклад: На двох графіках відображаються дані про висоту (вісь x) та вагу (вісь y) (Вибачте за німецькі підписи;)). Перший сюжет показує результат багатоваріантного гауссового підходу, другий із підходу, описаного у питанні. В обох випадках поріг був обраний таким, що 97% даних резюме вважаються правдоподібними. Другий підхід здатний краще зафіксувати складність даних. 1: dl.dropboxusercontent.com/u/26034024/anomaly/gauss.png 2: dl.dropboxusercontent.com/u/26034024/anomaly/distance.png
Георг

3

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

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

Незалежні особливості

Незалежні особливості можна відфільтрувати, вимірявши його коефіцієнт кореляції . Я порівнював усі функції парами і вимірював співвідношення. Потім я взяв максимальний абсолютний коефіцієнт кореляції кожної ознаки як коефіцієнт масштабування. Таким чином, характеристики, які не співвідносяться ні з якими іншими, множать на значення, близьке до 0, і таким чином їх вплив на евклідову відстань(aka ) незначна.||x1x2||distance(x1,x2)

Будьте попереджені: коефіцієнт кореляції може вимірювати лише лінійні кореляції. Детальну інформацію див. На пов'язаній сторінці вікі. Якщо співвідношення даних можна наблизити лінійно, це працює добре. Якщо ні, то слід ознайомитись з останньою сторінкою цього документу і побачити, чи можна використовувати їх вимірювання кореляції, щоб визначити коефіцієнт масштабування.

Дискретні значення

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

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.