2011-12-28

Univariat avvikelsemodellering med PDI

I data mining sammanhang pratar man oftast om "Anomaly detection" eller "Outlier detection". Förutsättningen är att man har en större mängd data där man vill hitta avvikande beteenden. Det första man måste göra är att definiera nyckeltal eller mått där man söker avvikelse. Låt oss ta ett exempel där vi ska hitta avvikande beteende bland anställdas användning av mobiltelefon. Det finns massor av intressant aspekter att analysera, men låt oss ta utlandssamtal som ett exempel. Hur hittar man då avvikande beteende för utlandssamtal. Generellt så är det bra att sätta det i förhållandet till någonting. Hur många utlandssamtal ringer man i förhållande till totala antal samtal? Hur många utlandssamtal ringer man utanför kontorstid i förhållande till på kontorstid? Dessa typer av mått är ofta de som är intressanta att titta på under en tidsperiod som är lång nog för att få statistisk relevans för respektive mått.

När man har definierat de mått man anser vara representativa för det som man söker så är det dags att börja leta avvikelser i datat. Den första ansatsen är ofta univariat analys, d.v.s. man söker efter avvikelser ett mått i taget. Det vanligaste är då att man gör antagandet om normalfördelning och tittar på standardavvikelser och konfidensintervall. En vanlig definition för uteliggare är om abs(x-mean)>3*σ så är x en uteliggare. Problemet med standardavvikelser är att de är känsliga för extrema uteliggare, och i vissa fall när man söker efter avvikelser så finns det just extrema uteliggare. Alternativet är då att istället att titta på percentiler och uteliggare baserat på dessa. Då definierar man ofta uteliggare som x-Q75>1,5*IQR och Q25-x>1,5*IQR där IQR är Q75-Q25.

Om man vill använda Pentaho Data Integration för att skapa ett data mart med mått som standard avvikelser och percentiler ska man kolla in pluginen "Univariate Statistics". I den anger man ett fält som input och kan räkna ut "N, Mean, Std dev, Min, Max, Median, Percentile". I fältet "percentile" anger man vilken percentil man vill räkna ut och man kan lägga till flera i samma transformationssteg. Tyvärr finns det dock inget enkelt sätt att visualisera modellen som man bygger upp. Det hade varit snyggt med t.ex. ett lådagram (box-plot) eller normalfördelningsdiagram i Report Designer för att komplettera rapporterna som använder den underliggande modellen.

Nästa steg är multivariat analys, d.v.s. att hitta avvikelser för flera mått samtidigt. Ifall man arbetar med normalfördelningar är en vanlig algoritm att multiplicera normalfördelningens täthetsfunktion för varje variabel med varandra p(x)=Π p(xjj2j). En uteliggare definieras då som p(x)<ε, d.v.s. ifall produkten av täthetsfunktionerna är mindre än ett gränsvärde ε. Ifall man istället tittar på percentiler kan man även kombinera dessa, men det är inte lika trivialt utan kräver lite mer handpåläggning, men mer om multivariat avvikelsemodellering vid ett annat tillfälle.

Inga kommentarer:

Skicka en kommentar