Виявлення аномалій з нейронною мережею


12

У мене є великий багатомірний набір даних, який генерується щодня.

Який би був хороший підхід для виявлення будь-якої «аномалії» порівняно з попередніми днями? Це підходяща проблема, яку можна було б вирішити через нейронні мережі?

Будь-які пропозиції вдячні.

додаткова інформація: прикладів не існує, тому метод повинен виявити самі аномалії

Відповіді:


12

З формулювання питання я припускаю, що "прикладів" аномалій (тобто міток) взагалі немає. З цим припущенням, можливим підходом було б використовувати автокодери : нейронні мережі, які отримують як вхід ваші дані та навчаються виводити ці самі дані. Ідея полягає в тому, що навчання дозволило мережі вивчити уявлення розподілу вхідних даних у вигляді прихованих змінних.

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

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

Ключовим тут є те, яке визначення суттєвої різниці ви виберете. Ви можете обчислити евклідову відстань і припустити, що якщо вона перевищує певний довільний поріг, у вас є аномалія. Ще одним важливим фактором є вид корупції, який ви вводите; вони повинні бути максимально наближені до розумних відхилень.

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


4

Я думаю, що сильно залежить від характеру ваших даних (категоричний / безперервний). Я б почав спочатку з простих методів. Мені приходять в голову:

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

Якщо жодне з них не підходить, то існує ціла галузь статистики / моделей ML, спеціалізованих для виявлення аномалії. SVM, t-SNE, Ізоляція лісів, Аналіз групових аналізів , Аналіз точок зламу , Часовий ряд (де ви шукаєте людей, що не відповідають тенденціям).

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


0

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


0

Простий спосіб зробити це за допомогою Autoencoders (без "позначати автоенкодери", які потребують навчання "пошкодженими даними") - це підготувати автокодер, а потім перевірити RMSE рядків із входу, який не був добре розшифрований (ті що автокодер був важко реконструйований). За певним визначенням, дані будуть представляти аномалію (безумовно, це стосується таких речей, як стрибки у трафіку).

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