Framtidens Business Intelligence – del 2 – Machine Learning

By | september 2, 2014

Detta är del 2 i min miniserie om Framtidens Business Intelligence. Övriga delar finns här.

Kan maskiner göra det som vi (tänkande människor) kan göra? Kan maskiner lära sig av erfarenhet? Kan maskiner ha intuition?

Machine Learning är ett kunskapsområde som befinner sig i gränslandet mellan Computer Science (datavetenskap), Artificiell Intelligence och Matematisk Statistik.

Machine Learning definition

Klicka på bilden ovan för en förstoring.

Användningsområdena är typiskt sett följande.

  • Regressionsanalys, d v s att uppskatta ett numeriskt mått. Exempelvis kreditrisken för en kund.
  • Klassifikation, d v s att klassificera data enligt vissa givna alternativ. Man tränar först upp ”maskinen” på övningsdata som man har klassificerat i förväg. Därefter fortsätter maskinen att klassificera enligt samma mönster.
  • Klustring, d v s att gruppera ihop data. Används typiskt sett av e-handelsföretag på nätet för ”de som köpte denna bok köpte även”.

Det finns många likheter med Data Mining men Machine Learning skiljer sig från Data Mining på så sätt att Machine Learning är mer inriktat på förutsägelser (”prediktion”) medan Data Mining är mer inriktat på upptäckter (”Discovery”).

Microsoft har nyligen lanserat Azure Machine Learning, som är gratis att prova för tillfället (medan produkten fortfarande är i preview).

Grunden för Azure Machine Learning är att man bygger en modell. Typiskt sett jobbar man i följande steg.

Machine Learning steps

Klicka på bilden ovan för att förstora.

Data hämtas antingen från filer eller från någon datakälla på internet. Enklast och smidigast tycker jag själv är att använda en Windows Azure SQL databas. Den är billig och den är enkelt att exportera/importera samt anpassa data i den. Kostnaden är från ett par dollar per månad.

Viss förbehandling av data kan också behövas. Azure Machine Learning har möjligheter till enklare transformationer, men skulle man behöva mer avancerade förbehandlingar rekommenderar jag att använda ett riktigt ETL-verktyg som SSIS eller använda T-SQL kod. Till sist måste man dock tillföra metadata

  • Features (eller variables som det också kan heta i andra Machine Learning produkter) är de kolumner som använda som ”inparametrar”, d v s de kolumner som man ser som relevanta för maskinens beslut
  • Labels är de kolumner som motsvarar ”utparametrar” eller utfall. Det är dessa som skall förutsägas eller uppskattas av maskinen. Under lärandet skickar man dock in värden för labels.

Sedan väljer man en algorithm och ställer in parametrar för den. I Azure Machine Learning finns algorithmer såsom neurala nätverk (simulerar hur vår hjärna fungerar) och decision forests / decision jungles (olika varianter på beslutsträd). Hur alla dessa algorithmer fungerar är en vetenskap i sig och skulle kräva flera bloggartiklar. Man kan i alla fall väldigt enkelt prova olika algorithmer i Azure Machine Learning. Det finns komponenter för träning och cross-validering av algorithmerna.

Till sist när man är nöjd så kan man publicera sin modell som en Web Service. Den kan därefter enkelt användas ifrån andra system som man bygger själv eller kopplar ihop.

Exempel – textanalys

Kan man med hjälp av Azure Machine Learning bygga en lösning som kan avgöra vilken författare som har skrivit en viss text? Jag bestämde mig för att göra ett test.

Först tankade jag ned ett större antal texter i en Windows Azure SQL databas. I databasen har jag följande fält:

  • Author
  • Title
  • Text

Jag delade också in i två tabeller – en för träningsdata och en för att provköra på.

I Azure Machine Learning skapade jag ett ”Experiment” som det heter där enligt bilden nedan.

Azure Machine Learning experiment

  • Jag har två stycken Readers – en för varje tabell.
  • Med hjälp av Metadata Editor så anger jag vilka kolumner som är Features och Labels.
  • Med hjälp av Feature Hashing-komponenterna så görs texterna om till numeriska kolumner enligt ”Vowpal Wabbit murmurhash v3”.
  • Med hjälp av ytterligare Metadata Editors så tar jag bort Text och Title som features. Kvar som features är endast resultatet från ”Feature Hashing”-komponenten.
  • Jag har testat lite olika algorithmer. Till slut valde jag Multiclass Neural Network. Där kan man sedan experimentera med olika antal noder, vikter och learning rate. Jag testade mig senare fram till bra resultat.
  • Med Train Model-komponenten så använder jag den ena tabellen för att träna mitt neurala nätverk.
  • Med Score Model-komponenten så appliceras det neurala nätverket på min provkörningsdata. Resultatet kommer ut som en kolumn ”Scored_Label” som anger vilken författare mitt neurala nätverk gissar på.
  • Med hjälp av en sista Project Columns så plockar jag bort alla kolumnerna från Feature Hashing så det blir ett mer rimligt antal kolumner.

Utresultatet ser ut så här.

Machine Learning author results

Till sist har jag testat att publicera som en Web Service och provkört. Det fungerar!

Azure Machine Learning Web Service

Mer info

Detta var bara ett exempel på användningsområde för Azure Machine Learning. Det finns massor av andra potentiella användningsområden såsom

  • Bedömning av kreditrisk
  • Förutsägelser av tågförseningar
  • Rekommendation av produkter till kunder
  • Förutsäga vilka personer som är i riskzonen för vissa sjukdomar
  • Identifiera misstänkta kreditkortsbedragare
  • Mäta antal positiva och negativa texter om en produkt på sociala medier

Vill du lära dig mer om Azure Machine Learning så rekommenderar jag de här länkarna