Автоматично откриване и разбиране на екстремни събития в данните от реалния свят

Когато анализираме данни, често мислим за показатели на високо ниво - колко приходи сме генерирали вчера? Колко потребители направиха заявка за тази крайна точка на API? Колко пъти е закупен този продукт?

Но понякога тези показатели на високо ниво могат да станат силно изкривени от екстремни събития.

Например грешка при обработката на код за отстъпка може да позволи на клиент да плати с пазарска количка от -$10. Това може да остане незабелязано за известно време, позволявайки споделянето на кода онлайн. Сега хиляди клиенти плащат с отрицателни пазарски колички, което се отразява на вашите приходи и показатели за рентабилност.

В други случаи такива събития не влияят на показателите, но все пак могат да повлияят отрицателно на вашия бизнес. Например, нов IP адрес може да започне да генерира 3% от посещенията на вашия сайт, защото конкурент изтрива вашия сайт. Ако не бъде открит, конкурентът може да прекара дни или седмици с неограничен достъп до вашето съдържание.

Оставането на върха на тези редки събития може да бъде трудна задача в склад, съдържащ 100 таблици с 1000 колони и милиони или милиарди редове с данни. Като такова, автоматизираното решение е от решаващо значение.

Такива редки събития се наричат ​​външни стойности. И в останалата част от тази статия ще разгледаме накратко традиционните подходи за откриване на извънредни стойности и защо те не работят добре за повечето случаи на употреба в реалния свят.

След това ще обясним нашето автоматизирано решение за откриване на извънредни стойности и ще покажем примери, използвайки публични данни от доклади за инциденти на New York 311.

Има много алгоритмични подходи за откриване на отклонения в извадки от данни. Например от документацията за обучение на sci-kit имаме това сравнение на техники в набор от данни за играчка:

В горната визуализация всяка колона е метод за откриване на отклонения. Всяка точка е оцветена в синьо, ако подходът я е класифицирал като отклонение, и оранжево в противен случай.

В този пример всички тези методи изглеждат разумни. Но такива набори от данни „играчки“ не успяват да уловят сложността на идентифицирането на извънредни стойности за реален бизнес, натрупващ огромни обеми от данни.

Приложенията от реалния свят имат десетки или стотици колони с данни в широк диапазон от формати, а не само две непрекъснати стойности. Данните също се променят с времето - това, което беше отклонение преди шест месеца, днес може да се е превърнало в редовно събитие.

Има и много извънредни стойности в масивите от данни в реалния свят, които просто са без значение. Потребителят, който е купил 500 лимона, може да е извънредно положение, но бизнесът може да не трябва да прави нищо в отговор.

И накрая, такива подходи могат да бъдат предизвикателство за тълкуване, особено когато се работи с големи набори от данни. Разбирането защо конкретна точка от данни е отклонение е от решаващо значение за информиране на всяко предприето действие.

В Anomalo сме възприели практичен подход към идентифицирането на извънредни стойности с нашата проверка на извънредни стойности на обекта.

Първо, стесняваме обхвата на проблема, като изискваме две входни данни:

  1. Какъв тип субект искаме да идентифицираме като отклонение?
  2. Какъв конкретен показател искаме да оценим за отклонения?

Например, ако искаме да открием кога нови IP адреси започват да копират нашия сайт, тогава IP адресът ще бъде субектът, а посещенията на сайта ще бъдат метрика.

След това прилагаме техники за откриване на аномалии във времеви серии и анализ на първопричината, за да осигурим много надеждно, ясно и уместно откриване на отклонения.

Като пример, разгледайте следната конфигурация за данни за заявка за услуга за повикване на Ню Йорк 311:

Субектът, който наблюдаваме тук, е incident_address, което е местоположението в Ню Йорк, където е настъпил докладът за инцидент 311. И показателят, който оценяваме, е броят оплаквания на адрес, изчислен с помощта на count(1) SQL фрагмента.

Опитваме се да отговорим на въпроса: имаше ли адреси с изключително голям брой оплаквания към последната дата?

Проверката създава набор от данни със следната форма:

  • address: откъде е отчетено обаждането
  • date: дата на отчитане
  • complaints: броят на оплакванията от този адрес на тази дата

След това вземаме максималния брой от complaints на date, създавайки времева серия с тази форма:

  • date: дата на отчитане
  • max_complaints: максималният брой жалби, получени от едно address на тази дата

Тогава можем да моделираме това като времева серия и да открием дали има отклонение на най-новата дата:

През повечето дни максималният брой жалби е между 10 и 50, с редовни пикове над 500. Но на последната дата, 18 юли, имаше адрес с 2227 жалби, което е наистина изключително!

След това можем автоматично да видим кои местоположения са отговорни за този огромен скок на оплакванията:

След това автоматично профилираме всички оплаквания за този адрес и ги сравняваме с други инциденти, възникнали в същия ден, за да идентифицираме кои сегменти ги характеризират:

По-конкретно, изглежда, че 100% от оплакванията на това място са били от описанието „Силна музика/парти“, в сравнение със само 35% от всички други оплаквания на 18 юли.

Или това беше епично парти, което раздразни повече от 2000 души. Или няколко души подават жалби отново и отново от разочарование. (Имайте предвид, че в този набор от данни няма информация за кой е подал жалбата, така че не можем да кажем със сигурност.)

Екстремните събития могат да бъдат невероятно важни - по думите на Насим Николас Талеб:

„Знам, че историята ще бъде доминирана от невероятно събитие, просто не знам какво ще бъде това събитие.“ — Насим Никълъс Талеб

Намирането на екстремни събития в модерен облачен склад за данни, пълен с терабайти или петабайти данни, може да бъде много трудна задача. Повечето отклонения са безсмислени.

Но чрез тясно фокусиране върху ключови обекти и показатели и използване на надеждни модели на времеви редове и техники за анализ на първопричината, можем ясно и автоматично да идентифицираме и обясним важните.

Работейки с нашите клиенти, Anomalo разработи целенасочен подход за откриване на извънредни стойности, който е лесен за конфигуриране, добре калибриран и предоставя богат и приложим контекст за потребителите.

За да започнете с Anomalo и да започнете да идентифицирате отклоненията проактивно във вашите данни, не забравяйте да заявите демонстрация.