2012-10-26

Fångens dilemma

En person jag följer på Google+ hade postat detta klipp och kände att jag var tvungen att dela med mig av det här. Finalen på detta tävlingsprogram är ett klassiskt exempel inom spelteori som kallas "fångens dilemma". Det intressanta är dock hur deltagaren till höger lyckas vända problemet så att motståndaren får en win-win situation. Vad han till höger än gör får han till vänster hälften pengarna om han väljer split ... så länge han kan lita på sin motståndare.

2012-10-23

Data kommer inte från en svart låda

Inte allt för länge sedan satt jag med i ett möte där man diskuterade olika lösningar för både DW och BI. Det var en del av ett stort DW/BI projekt som skulle innebära stora förändringar för hela organisationen. Projektet hade fortlöpt under ganska lång period innan detta möte och det var många personer inblandade. De allra flesta hade deltagit i ett antal workshops både internt och externt med leverantörer och konsulter för att arbeta fram lösningen. Mitt i detta möte ställer helt plötsligt ekonomichefen frågan: "Alltså en databas, vad är det för någonting egentligen? Är det ett program? En burk? Eller vad?". Svaret på frågan som han fick från leverantören var någonting i stil med "Man lagrar data i en databas och det kan både vara mjukvara och hårdvara". Då kände man verkligen klyftan mellan leverantören, IT-avdelningen och verksamheten. Jag förväntar mig verkligen inte att en ekonomichef skall förstå sig på underliggande teknologier i databaser, men tycker att det är ett misslyckande om hela företagets DW/BI lösning uppfattas som ett stort svart magisk hål som spottar ur sig rapporter och KPIer. Om varken IT eller leverantörer kan göra ett bättre jobb i att förmedla vad det är som leverar allt data ut till slutanvändaren, vem ska då kunna göra det?

Vi föreställer oss att jag har en receptsamling på 1000 recept i en låda. Vem som helst kan komma och fråga mig om recept och mitt jobb är att kunna ta fram rätt recept. De första frågorna som ställs är i stil med "Kan du ge mig receptet på kladdkaka?". Ganska snabbt inser jag att det vore nog klokt att sortera recepten i bokstavsordning, på så sätt kan jag mycket fortare hitta rätt recept.

Sen börjar frågorna förändras "Kan du ge mig alla recept som innehåller nötter?". Hur ska jag lösa dessa frågor på ett effektivt sätt? Alla recept innehåller flera ingredienser så det går inte att sortera på något vettigt sätt. Tre alternativ skulle kunna vara:
  1. Jag skaffar fler lådor, en låda per ingrediens. Sedan tar jag kopior av recepten och lägger en kopia i varje låda för varje ingrediens varje recept innehåller.
  2. Jag köper ett gäng Post-it index och färgkodar alla recept med olika färger beroende på vilka ingredienser de innehåller.
  3. Jag tar hjälp av fler personer.
Alternativ ett blir en grymt effektiv lösning. Ifall någon vill ha recept med nötter så tar jag bara alla recept i nötlådan. De går nästan inte att komma på en lösning som skulle gå snabbare. Nackdelarna är dock många och växer på sikt. Ju fler recept jag samlar på mig, dessto fler ingredienser kommer det att finnas och dessto fler lådor måste jag förvara någonstans. Potentiellt köpa nya hyllor. För varje nytt recept måste jag lägga tid på att kopiera receptet och sortera in det i rätt lådor. Ifall jag har skrivit fel någonstans, måste jag leta upp alla kopior och ändra på samtliga. Ifall jag missar att ändra på en av kopiorna kommer jag att ha olika recept för samma sak. Sen kommer det stora problemet. Frågor angående olika kombinationer börja ställas, "Kan du ge mig alla recept som innehåller nötter och grädde?". Shit, ska jag ha lådor och kopior för alla olika kombinationer av ingredienser!!! Den tekniska motsvarigheten till detta är att skapa silos (kuber, in-memory, materialiserade vyer, etc.) för att få prestanda.

Alternativ två är inte lika effektivt. För att hitta alla nötrecept måste jag plocka fram t.ex. alla blåa recept, men det går betydligt fortare än att läsa igenom alla recept och leta efter nötter. Fördelen är dock att jag har fortfarande bara en kopia av receptet. Det går lite fortare att klistra på mina Post-it index lappar än att göra kopior och sortera dem. Jag kan på ett lättare sätt hantera kombinationer då recept med nötter och grädde skulle innebära t.ex. blåa och röda recpet. Det blir dock lite jobbigare ifall jag bestämmer mig för att grädde inte längre ska vara röd utan gul. Då måste jag gå igenom alla röda och byta till gult index. Det börjar bli ännu jobbigare att få plats med alla möjliga färgkodningar för alla möjliga kombinationer rent fysiskt på receptet. Den tekniska motsvarigheten till detta alternativ är att försöka ha en generell modell i sitt DW och arbeta med inbyggd funktionalitet (index, hashmaps, projektioner, etc.) för att snabba upp sökningarna och hitta rätt.

Alternativ tre kan bli riktigt effektivt. Dessto fler personer som hjälper till dessto fortare går det att hitta rätt recept. Det är lätt att hantera ökade antal recept då det bara är att ta hjälp av fler. Spontant känns det som en väldigt dyr lösning att betala löner till alla som hjälper till, men när det kommer till de tekniska lösningarna finns det både dyra och billiga alternativ. Den tekniska motsvarigheten är att parallellisera och/eller distribuera beräkningarna (MPP, Hadoop, etc.) för att snabba upp sökningarna.

Exemplet är så klart väldigt förenklat, men ett sätt att illustrera att en databas är ingen svart låda. Man kan lagra allt data i en viss ordning på hårddisken och ha olika sätt för att sedan hitta delmängder baserat på vissa villkor men mycket mer än så kan man inte göra. Rent krasst kan man säga att blir lösningen snabb på en sak, blir den långsam på en annan. Poängen med detta exempel är att jag anser att det är viktigt att alla inblandade i ett DW/BI projekt bör ha en insikt på denna nivån. Alla måste förstå att oavsett vad någon säger eller lovar så finns det ingen silver bullet. Alla lösningar har begränsningar och det gäller att välja en lösning vars begränsningar får så liten inverkan som möjligt.

2012-09-27

Trail and Error

Rätt så ofta springer man på personer som är rätt så väl bevandrade inom BI och DW och som har läst en del om predektiv analys och data mining. De har ganska bra koll på begreppen och uttrycker sig i ord som om de vet precis vad det handlar om. Om de aldrig har suttit med ett riktigt data mining problem saknar de dock insikten i vad som faktiskt krävs för att nå framgång i ett data mining projekt.

Först och främst kommer arbetet med att förbereda data för uppgiften som skall lösas. Har man bara läst lite data mining literatur så har man ganska snabbt insett att det inte hjälper mycket att ha en gedigen ETL process som modellerat datat i sitt DW i en stjärnmodell eller liknande. Mer än halva data mining processen består ändå i att förbereda data för att kunna bygga modeller. Här kommer första insikten som är svår att få utan att ha praktisk erfarenhet. Det är otroligt svårt att veta i förväg vilka variabler som är bra prediktorer för sin målvariabel. Ofta "vet" man det i förväg, men när man börjar ställa motfrågor visar sig dock snabbt motsatsen.

Gällande målvariabeln kan det vara lika svårt att veta hur den ska representeras. Låt säga att uppgiften är att ta fram en modell som predikterar vinsten. Det är lätt att tro att målvariabeln är "given" i uppgiften, men det kan visa sig att det är lättare att prediktera logaritmen av vinsten, eller vinsten i förhållande till omsättningen, eller att transformera om vinsten till en nominell variabel. Ett annat exempel kan vara att använda en overlay variabel om man t.ex. vet att man kommer att öka utbudet med 20% nästa år. Att använda en stegfunktion som går från 1 till 1.2 för att få in den informationen i modellen, tillför ofta inte mycket. Ofta är det bättre att t.ex. multiplicera den med någon annan variabel för att uppnå önskat resultat.

Slutsatsen jag vill komma till är att den största insikten är nog att det enda sättet att hitta en bra representation är att testa sig fram, och det tar tid. Det är lätt att framställa data mining som en svart låda där man slänger in lite siffror och får ut svar, men det är inte konstigare än trail-and-error i många fall. Med lite erfarenhet hittar man så klart rätt fortare, men det är fortfarande en stor del av mining processen.

2012-05-21

Maskininlärnings- och data mining kurs

Det är svårt att hitta utbildningar inom data mining om man vill utbilda sig parallellt med sitt arbete. De flesta utbildningar inom data mining är vanliga universitetskurser som löper under en hel termin med föreläsningar dagtid och är för de allra flesta väldigt svåra att närvara på. Köpenhamns universitet bryter dock den trenden till hösten då de kommer att erbjuda en 5-dagars intensiv kurs i tillämpning av maskininlärning, mönsteringenkänning och data mining. Kursen kommer kräver förkunskaper i C++ då de kommer att använda Shark för alla praktiska övningar. Kursen verkar förvisso vara en introduktionskurs till området, men med detta upplägg kan man i alla fall locka alla som arbetar 9 till 5 och vill lära sig mer om data mining. Läs mer på kursens hemsida.

2012-05-18

Weka 3.7.6

Förra veckan släpptes Weka 3.7.6. Det är inga stora förändringar utan mest bugg fixar och förbättringar av befintliga algoritmer och funktioner. Mark Hall skrev ett inlägg på Pentaho's wiki som listar nyheterna.

2012-05-17

DFS Beslutsstöd

Dataföreningen har startat ett nätverk inom beslutsstöd och affärsanalys med syftet att
...lyfta fram bra användning av alla de möjligheter som beslutsstöd ger. De flesta har stött på områden som BI, datalager, integrerad verksamhetsuppföljning, data mining, etc. Tillsammans skapar vi bättre förståelse och användning av detta. T.ex. att inte bara jaga kostnader utan också lyfta verksamheters intäktssida. Självklart vill vi också följa metod- och teknikutvecklingen, t.ex.arkitektur och begreppssamordning.
Det är uppstartsmöte den 24 maj där man ska diskutera mål och arbetssätt för nätverket. Det blir avgörande för vilken inriktning nätverket får, men det finns en uttryckt önskan om fokus på verksamhetsaspekterna och mindre av det tekniska. Läs mer på nätverkets hemsida.

2012-04-06

Data Science Hackathon

Min gode vän Mr. Moritz kommer att delta i Data Science Hackathon i London i slutet på april. På 24 timmar ska man i grupp skapa en analytisk modell på ett stort dataset med hjälp av ett antal analysverktyg för att lösa ett givet problem. Finns fortfarande 7 platser kvar för de som är intresserade. Jag håller tummarna för Mr. Moritz =)

2012-03-26

Data Mining med R

Det blåser starka vindar för R inom analysvärlden. När jag pluggade på universitet så var det Matlab och Octave (open source alternativet till Matlab) som gällde. Samma sak hittills i mitt yrkesliv, Matlab genomgående. De senaste åren har dock R tagit mer och mer mark och just nu känns det som R är det enda som gäller, i alla fall inom BI och Data Mining. Proffessor Andrew Ng på Stanford valde att undervisa sin webbaserade Maskininlärningskurs i Octave, men förutom det så är det sällan jag springer på Matlab numera. Sen om det beror på att jag har hamnat i någon R filterbubbla på Google eller ifall omvärlden faktiskt ser ut så, det återstår att se.

Många "applikationskramare" vägrar släppa "sin" programvara utan fortsätter att förespåka sitt val in i döden. Jag skulle alltså kunna fortsätta köra Matlab, men jag tycker det är kul när man får tillfälle att på ett naturligt sätt för lära sig nya språk/system i sitt dagliga arbete. Då slipper man känna att man borde hinna med att läsa sig även detta utöver alla måste. Det man vill lägga tid på blir ett måste som man enklare kan prioritera.

Nu gäller det bara att friska upp minnet med R syntax samt komma in i arbetsflödet att köra Data Mining i R. Luis Torgos bok "Data Mining with R" har länge varit en storsäljare på Amazon så jag tänkte ge den en chans. Utöver den kommer jag nog att använda denna MATLAB/R Reference guiden ganska flitigt innan jag vant mig med syntaxen.

2012-02-20

Target upptäckte tonårsgraviditet före pappan

Target i USA har insett att blivande föräldrar är en intressant målgrupp att få till lojala kunder så tidigt som möjligt. Med hjälp av data mining har de identifierat mönster i hur deras befintliga kvinnliga kunder förändrar sitt köpbeteende i samband med att de blir gravida. Totalt handlar det om 25 artklar som ska avslöja en gradivitet. I den här artikeln berättar de en anekdot som nästan är för bra för att vara sann där de har identifierat att en tonårstjej är gravid och skickat hem riktad reklam med barnartiklar varpå tjejens pappa blir upprörd över att de uppmuntrar hennes dotter att bli gravid, när hon i själva verket redan var det. Det vara bara pappan som inte kände till det ännu. Vidare handlar artikeln om hur viktigt det är att inte avslöja för kunder hur mycket man faktiskt vet om dem utan att försöka smyga in riktad reklam så att det verkar slumpmässigt. Undra hur länge det kommer att dröja innan gemene man genomskådar denna typ av maskering? Kommer konsumenterna acceptera att våra vanor avslöjar mer om oss än vi tror och se värdet i det istället för att skrämmas? Eller kommer konsumenterna vilja bli mer anonyma för att inte kunna bli spårade? Hur som helst så är den här anekdoten så pass bra att den säkert kommer att bli en klassiker precis som Walmarts gamla blöjor och öl exempel.

2012-02-15

Hadoop World 2011 presentationer

Har börjat se några av presentationerna från Hadoop World som gick av stapeln i slutet av 2011. Alla presentationer är filmade och finns tillgängliga här. En riktigt intressant presentation är Abhishek Gupta och Adil Aijaz från LinkedIn som presenterar hur de använder Hadoop som en byggsten i deras rekommendationssystem. Efter att ha forskat inom detta område och varit med och utvecklat ett rekommendationssystem själv inser man vilket ofantligt arbete som ligger bakom deras plattform. Imponerande och mycket intressant!

2012-02-14

2012 BI Platform Magic Quadrant

Gartner har släppt sin senast rapport av "Magic Quadrant for Business Intelligence Platforms". Det är inte mycket som har förändrats sen 2011, men det är värt att notera att Pentaho debuterar efter att ifjol fallit på mållinjen då de missade kravet på $15 miljoner i intäkter.

Läs mer på Gartners site.

2012-01-20

BizIntels officiella blogg

I veckan lanserade vi BizIntels officiella blogg där
"Vi kommer att blogga generellt om branschen och rådande trender, men även ge handfasta tips kring produkter och metoder som vi använder oss av i vårt dagliga arbete."
Detta innebär att jag kommer att posta inlägg rörande Pentaho och MicroStrategy på BizIntels blogg istället för här och fokusera denna på mer generella BI inlägg samt data mining och maskininlärning.

2012-01-16

ML demonstration

Maskininlärningsstudenter på Carnegie Mellon som demonstrerar på G20 mötet i Pittsburg 2009. Foto: Arthur Gretton

2012-01-11

Search, plus Your World

Igår lanserade Google sin nya söktjänst "Search, plus Your World" där de inte längre bara rangordnar sidor på innehållet utan lyfter fram Google+ innehåll från ditt personliga nätverk. De har tidigare lanserat Social Search som söker efter innehåll i ditt personliga nätverk. Dessa tjänster är ännu inte integrerade med varandra, men som de själva säger i deras blogginlägg så är detta bara början. Potentialen är oändlig med allt data som Google sitter på och det blir spännande att se hur detta spår utvecklas. Den nya söktjänsten kommer endast att fungera om man är inloggad på Google och söker på engelska på https://www.google.com. Det fungerar ännu inte för mig, men förhoppningsvis blir det tillgängligt inom några dagar så man får testa.

2012-01-07

Mer av Stanford 2012

Stanford University har utökat antalet online kurser som ges gratis under våren 2012. Kursstart varierar beroende på vilken kurs man är intresserad av, men allt kör igång under januari och februari. Nedan är de kurser som ges inom datavetenskap. Intressant att notera är att av de tre kurser som gavs under hösten är det endast maskininlärningskursen som ges igen. Kul med stort intresse för just det området...

2012-01-05

Pentaho Metadata Scripting

Jag bloggade tidigare om hur man kan använda en Metadata (Custom) datakälla för att skapa en MQL fråga dynamiskt. I Report Designer 3.9.0, som kommer att ingå i 4.5 suiten, kommer det inte längre vara nödvändigt att gå den omvägen. Det kommer nämnligen att finnas stöd för detta i den vanliga Metadata datakällan. Thomas Morgner beskriver det mer i detalj här.

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.