2012-01-05

MicroStrategy Data Mining Datasets

När man ska använda sig av data mining funktionaliteten i MicroStrategy krävs det en del arbete med att förbereda datat. Datat ska ha en väldigt "simpel" struktur som MicroStrategy nämner i dokumentationen men detta innebär att man måste skapa en massa mått innan man kan sätta igång. Man kan nämligen inte använda attribut för att gruppera mått som används i data mining rapporter utan man måste skapa filtrerade mått för varje grupp. Låt säga att man till exempel vill analysera sina kunder och ha med variabler för hur mycket pengar varje kund spenderar i respektive produktgrupp och man har 40 produktgrupper. Då kräver detta att man skall skapa 40 filtrerade mått ... många mått blir det! Det gör det väldigt opraktiskt att utveckla och testa olika representationer av datat för att se vad som ger bäst resultat. När man däremot har kommit fram till en modell som man har tänkt använda i produktion är det mer rimiligt att mappa upp alla dessa mått en gång för alla, såvida man inte har en modell som kräver hundratals eller tusentals mått i MicroStrategy. Då bör man nog se efter andra alternativ eller enklare representation av datat. Det man vill uppnå är i alla fall ett dataset som har endast ett attribut, ett antal mått som är oberoende variabler som skall prediktera ett sista mått som är den beroende variabeln (vid regression och klassifiering).


Mer information och detaljer kring detta finns i MicroStrategys dokumentation "AdvancedReporting.pdf" under kapitel 13 "Data Mining Services". 

2012-01-04

PMML 4.1

DMG (Data Mining Group) har släppt version 4.1 av PMML standarden. Läs mer på DMGs hemsida:

Netflix och MicroStrategy

Har arbetat mycket med Netflix dataset tidigare, men hade faktiskt ingen aning vad Netflix själva använder för programvara. Enligt denna artikel består deras BI-stack av Hive med Hadoop, HDFS och MapReduced som snurrar på totalt 50 stycken Amazon S3 noder. Ovanpå det använder de MicroStrategy för rapporteringen.

2012-01-03

Weka 3.7.5

I den senaste releasen av Weka som släpptes i slutet av 2011 fanns det två paket som var extra intressanta.
  • Weka Server
    Den gamla RMI baserade server miljön är övergiven och i och med 3.7.5 presenterades ett nytt servlet baserat serverpaket.
  • Tidsserier
    Tidsserieanalyspaketet introducerades 3.7.3 och i och med tilläget i 3.7.5 med stöd för "hål" i tidsserierna känns det mer komplett.

2011-12-29

Pentaho Data Mining

Pentaho köpte en licens för Weka 2006, men hur ser integrationen mellan de två ut idag och hur fungerar det? Pentaho har valt att fokusera integrationen på PDI, d.v.s. deras ETL verktyg. I dagsläget finns det transformationssteg och vyer för PDI som kopplar ihop Weka och Pentaho.

PDI transformationssteg 

  • ARFF Output
    Det här tranformationssteget kan användas för att serialisera ut en ARFF fil som är Weka egna filformat. Denna fil kan dock endast användas till utveckling, då det inte finns något "ARFF Input" steg att läsa in datat i PDI igen.
  • Weka Knowledge Flow
    Det här transformationssteget i kombination med Wekas kfKettle paket kan man via PDI hämta data från valfria datakällor och skicka det vidare till ett Weka Knowledge Flow som körs och bygger en modell som sedan sparas som ett Javaobjekt med hjälp av "Serialized ModelSaver". Den sparade modellen används sedan i transformationsstegen "Weka Scoring" eller "Weka Forecasting".
  • Weka Scoring
    Weka Scoring är ett transformationssteg som använder en redan tränad modell för att prediktera eller klassificera inkommande data. Resultatet kan vara en predikterad klass (klassifiering/klustring), ett uppskattat reellt tal (regression) eller en sannolikhetsfördelning (klassifiering/klustring), beroende på vilken modell som används. Resultatet skrivs tillbaka till en databas och kan sedan användas oberoende av programvara för visualisering. 
  • Weka Forecasting
    Weka Forecasing används tillsammans med timeserieForecasting paketet i Weka och fungerar analogt med Weka Scoring, med skillnaden att den använder en tidseriemodell för att göra en prognos för framtiden. 

PDI vyer

  • Knowledge Flow Editor
    Det här är en plugin där Pentaho har lyft in Wekas Knowledge Flow gränssnitt rakt av in i PDI. Det går dock endast att skapa ett helt nytt Knowledge Flow och inte öppna och editera befintliga.
  • Forecasting
    Även detta är en plugin där Pentaho har lyft in Wekas Forecasting gränssnitt rakt av i PDI, men de har dock lagt till ytterligare funktionalitet. Man kan skicka in data i tidsserie analysen direkt från ett "Table output" eller "Table input" steg. Om man högerklickar på någon av dessa och väljer "Forecast" laddas datat från databasen till Forecasting gränssnittet. 
Utöver detta finns det också ett transformationssteg som egentligen inte har någonting med Weka att göra, men som med fördel kan användas tillsammans med Weka och det är "Reservoir Sampling". Den genererar träningexempel från en inkommande dataström där antalet inte är känt i förväg. Den kan användas för att generera ett träningsdataset av lämplig storlek till Weka.

Vad vinner man då på att köra Weka tillsammans med PDI? Det som är smidigt är att man relativt enkelt kan schemalägga och produktionssätta träning av modeller som används i den dagliga analysen med hjälp av transformationsstegen i PDI. Men med det nya wekaServer paketet som släpptes i höstas är det nästan lika enkelt att göra det direkt i Weka. De har övergett det gamla RMI interfacet och istället implementerat en servlet baserad Weka Server som körs på en Jetty web server. Om man redan har PDI i sin miljö eller behöver ett ETL verktyg, absolut kör via PDI. Annars, tveksamt...

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(xj,μj,σ2j). 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.

2011-12-12

Pentaho Metadata Custom

Hittade en funktionalitet som introducerades i Pentaho Report Designer 3.8 som helt förbigått mig. Det går numera dynamiskt att bygga upp MQL frågan som ställs mot Pentahos metadata modell istället för att använda den inbyggda metadata editorn i Report Designer. Det är dock fortfarande en experimentell funktionallitet som måste aktiveras genom att gå in på "Edit -> Preferences... -> General" och klicka i "Enable (unsupported) experimental features.". När detta är gjort går det att lägga till en ny typ av datakälla som är "Metadata (Custom)". På Pentahos wiki finns det en artikel som går igenom ett enkelt exempel på hur man kan använda denna datakälla för att med hjälp av Report Designers formel editor bygga upp MQL frågan. Detta ger en mycket större flexibilitet i användandet av metadata modellen vilket gör att man kan unvika att skriva rapportspecifik SQL och därmed också minska risken för inkonsistens mellan rapporter i de olika komponenterna i Pentaho BI suite.