onsdag 15. februar 2017

Datavitenskap - hvordan gjør de det? Del 3

"Datavitenskap - hvordan gjør de det?* (del 3)
Gartners Hype Cycle sier at Data Science (datavitenskap) vil være på den såkalte "Plateau of productivity" ... NÅ. Selskaper som har ambisjon om å forme framtiden er allerede i gang.

I denne bloggserien "Datavitenskap - hvordan gjør de det?" gjennomgår jeg et utvalg av teknikker/algoritmer vi bruker for å skape kunnskap av data. Dette er inlegg #3. 

Min målgruppe er forretningsfolk - ikke dataeksperter. Jeg prøver å bruke begreper som de fleste kan forholde seg til og ofrer presisjonsnivå til fordel for lettere tilgjengelighet.
Inne i mellom kommer jeg ikke utenom å bruke begreper som kan være fremmede. Blant annet kan navngiving av algoritmer skape distanse slik som her i denne bloggen.

I dette innlegget tar jeg for meg to nye algoritmer: 
  1. Support Vector Machine og
  2. Nevrale nettverk.
Support Vector Machine
Support Vector Machines (SVM) er en kraftig og meget nyttig algoritme. SVM separerer data i klasser.
Algoritmen trenger historiske data med forhåndsdefinerte klasser å lære av. 

La oss for eksempel anta at de blå sirklene i figuren under representerer tidligere kjøpere og de røde sirklene representerer tidligere ikke-kjøpere.
Linjen mellom de klassifiserte kundene viser den beregnete avgrensningen mellom disse to klassene. Dette ser bra ut? Begge klasser er 100 % korrekt avgrenset og ingen sirkler har havnet i feil klasse.

Ved nærmere øyesyn ser vi imidlertid at linjen er veldig nær både den øverste blå sirkelen og den røde sirkelen lengst ned, mot midten.
La oss så gjennomføre en markedskampanje.  Vi kan da ende opp med noe som likner denne figuren:
Fremdeles veldig bra, men vi klassifiserte en ikke-kjøper feil. Selv om vi klassifiserte kunden som kjøper, så kjøpte ikke kunden. 
Som bruker av algoritmen er sluttresultatet det viktigste. Resultatet av SVM-algoritmens beregninger er at linjen justeres slik at den maksimerer marginen/rommet mellom gruppen. Dette rommet er vist med den gule fargen.
Bare ved et kjapt blikk på figuren ser vi at det var en god idé.
Nå har treffsikkerheten økt markant! 

Dette eksemplet viste prinsippet for to dimensjoner (for eksempel inntekt og alder) og med en lineær (rettlinjet) sammenheng.

I figuren under illustrerer vi i mer detaljer hva som egentlig foregår i et mer generelt og komplisert tilfelle. 
Som oftest vil vi ha mange egenskaper (ofte flere hundre) og avgrensningene mellom egenskapene trenger ikke være rettlinjete,  men kurvete. 
La oss holde oss til 2 dimensjoner (ett plan) hvor klassifiseringen ikke er lineær med hensyn på de to egenskapene. For eksempel kan økende alder gi flere kjøpere og økende inntekt også det samme, men bare inntil en viss alder. Når alderen passerer 70 så minker sjansen for kjøp igjen.  
Kanskje også produktet har en slik karakter at det er middelklassen med stadig økende inntekter som ønsker produktet, mens rikere kunder ikke er interessert?

Under ser vi hvordan vi kan oversette en modell som ikke er lineær (avgrensningslinjen er en kurve) til en dimensjon høyere (fra to til tre dimensjoner) med lineæritet. Vi "løfter" de blå sirklene opp fra de røde. Vi kan da legge et lineært plan (tenk at du stikker et rett ark) mellom de blå og røde sirklene. Dette planet legger vi slik at avstanden blir størst mulig, tilsvarende som beskrevet over. 
Teknisk sett er SVM spennende matematisk lineær algebra. Detaljene i dette bryr vi oss ikke om her. Vi bare konstaterer den snedige tilnærmingen og at algoritmen virker - og ofte virker den veldig godt.
Begrensninger
SVM er ressurskrevende. Det er tunge beregninger som skal til. Men med stadig raskere datamaskiner blir denne ulempen stadig mindre.
Algoritmen kan være vanskelig å tune og det er også vanskelig å tolke resultatet av algoritmen når mange ikke-lineære sammenhenger inngår.

SVM er presis og lærer hurtig fra nye data.

Nevrale nettverk
De enkleste variantene av nevrale nettverk er gamle. Men det er først i det seneste tiåret at nevrale nettverk virkelig har blitt brukt med gode og, inne i mellom, oppsiktsvekkende resultater. Dette takket være en  eksponensiell økning i kapasitet på datamaskinene og tilsvarene reduksjon i kostnader. 

Nevrale nettverk tar data - egenskaper - som input. Hver egenskap har sin tilhørende input-node (nevron). Se på egenskapene som variable i en funksjon og nodene som plassholdere for hver variabel i funksjonen (y = f(egenskap1, egenskap2, ... egenskapN). Vi lager ett eller flere skjulte lag med mange noder. Disse er koplet sammen lag for lag. Til slutt er det siste laget koplet til en eller flere output-noder avhengig av om resultatet skal gi én verdi eller flere verdier.  
Ved å justere på vektene på koplingene basert på beregning av hvor treffsikker outputnoden(e) er i sitt resultat kommer man, etter mange treningsrunder på mye data,  fram til en likevekt på vektene. Disse vektene representerer den iboende kunnskapen lært av alle treningseksemplene. 

I et nevralt nettverk kan det være ekstremt mange slike vekter, gjerne mange millioner.
Inputverdiene (paramtetrene i funksjonen) multipliseres med vektene. I hver node summeres disse multipliserte verdiene fra hver kopling fra forrige lag. Noden tar stilling til hvordan denne summen skal sendes videre til neste lag i nettverket.

Bildegjenkjenning, gjenkjenning av håndskrift som du finner på mobiltelefonen din, prediksjon av aksjemarkedet og  prediksjon av framtidig omsetning er bare noen av mange anvendelsesområder for nevrale nettverk. Nevrale nettverk virker best - og ofte fasinerende godt - der det er mye tilgjengelig data og hvor sammenhengene er komplekse.
Eksempel på nevralt nettverk med 4 inputnoder, to skjulte lag og to outputnoder.
Begrensinger
Nevrale nettverk er ikke lett å tolke. De virker best med mye data og kan være tunge å regne på. Det kan også være krevende å bygge den riktige nettverksarkitekturen for problemet man skal løse, samt å tune parametrene som skal til for at algoritmen skal fungere mest mulig optimalt.

Deep Learning

Deep Learning er det siste og trendsettende temaet innen nevrale nettverk. Enklest beskrevet er det nevrale nettverk  med flere skjulte lag og økende kompleksitet i nettverksarkitekturen.
Også andre algoritmer som i realiteten er summen av enklere læringsalgoritmer faller inn i denne kategorien. Jeg kommer tilbake til det senere i en annen blogg.
Deep learning-algoritmer har vært i stand til å lese nye bilder på nettet og beskrive innholdet i bildet skriftlig på engelsk. Dette har vært mulig etter å ha lært av millioner av bilder med tilhørende tekster som vi alle legger ut på Google, Facebook og andre nettsteder.

Dette er jo unektelig litt skummelt, men samtidig først og fremst veldig inspirerende!
Et annet eksempel: Google utviklet et nevralt nettverk over 16.000 cpu'er som så på Youtube-videoer i 3 dager. Systemet fikk ingen veiledning med hensyn på hvilke videoer systemet skulle analysere. Systemet lærte likevel å gjenkjenne katter.  Mye katter på Youtube åpenbart.
Algoritmen klarte, uten å bli fortalt hva den skulle lete etter, å gjenkjenne mønstre fra noe så komplekst som Youtube videoer tross alt er. Å gjenkjenne mønstre gjennom våre sanser er et av menneskets sterkeste fortrinn. Deep learning-algoritmer haler nå innpå.  Det er nå eksempler på at algoritmer klarer å gjenkjenne håndskrift, skilter og stemmer bedre enn mennesker.
Begrensninger
Kompleksitteten i beregningene er høye og det er behov for mye data.

Muligheter
Stadig mer data, forbedring av algoritmene, og at algoritmene er klargjort på vanlige server og pc-plattformer alle kan ha råd til gjør algoritmene stadig mer aktuelle.


Neste blogg

I del 4 vil jeg skrive om beslutningstrær og bruk av disse i såkalte "ensemble".
Det har vist seg at relativt enkle og svake algoritmer kan gi oppsiktsvekkende resultater når de settes sammen og bidrar til resultater i fellesskap. Maskinlæringens svar på gode teambeslutninger. 

*Innlegget er en blanding av fritt oversatt og omarbeidet innlegg av deler av Alex Jones artikkel om Bigdataalgoritmer og egne bidrag.


Espen Remman
Rådgiver/Partner
Chronos AS
tlf. 97557021

espen.remman(at)chronosit.no
twitter: EspenRemman
linkedin: espenremman

fredag 10. februar 2017

Kunstig intelligens i ekstrem utvikling


Kunstig intelligens i ekstrem utvikling

Året 2016 var gjennombruddet for bruk av kunstig intelligens i Norge. Stadig flere tester nå ut mulighetene.

Selskaper som Google, IBM, NVIDIA, Facebook, Amazon og andre kommer løpende med nye og oppsiktsvekkende resultater.  
Vi går her gjennom noen eksempler på brukstilfeller hvor utviklingen har skutt fart og hvor Chronos leverer konsulenttjenester og løsninger.

Språkoversettelse 
Google Translate har nå byttet til en helt ny og banebrytende algoritme*. Denne algoritmen er basert på nevrale nettverk. Algoritmen oversetter fra alle språk til en indre representasjon. Slik trenger ikke Google lenger å trene opp algoritmer for hver eneste kombinasjon av alle språk.

Faktisk har Googles med denne nye opplærte algoritmen oppfunnet et nytt universelt språk! 

[*Sequence-Sequence learning]
Bilde: Automatisk oversettelse mellom språk

Anbefalingsmotorer
[Anbefalingsmotorer predikerer hvilke varer som har høye sannsynlighet for å bli kjøpt av kunden i framtiden.]
Google har laget en ny anbefalingsmotor** for Youtube som er vesentlig mer treffsikker en tidligere løsning. Denne løsningen er bygget med Googles frigitte maskinlæringsplattform Google TensorFlow#. Algoritmen leser hvor lenge brukerne har sett på en video, alder, kjønn og andre demografiske data, samt hvor lenge siden og hvor ofte brukerne har sett på videoer. Algoritmen trenes over millioner av videoer. Til forskjell fra mange tidligere algoritmer tar den hensyn til rekkefølgen videoene er konsumert, visningstiden, samt søk og visningshistorikk. 

[**Recsys 16. September 2016]
[#Chronos bruker denne plattformen]
Bilde: Anbefalinger: Fra linkedIn

Klassifisering av bilder
Treninger over millioner av bilder på nettet har gjort det mulig å klassifisere innholdet i bilder innenfor mer enn tusen klasser. I dag kan man bruke ferdiglærte modeller som startgrunnlag, blant annet levert av Clarifai, for tilpassete klassifiseringer av bilder spesifikt for din virksomhet. For eksempel kan et bildebyrå automatisk arkivere bildene sine og et forsikringsselskap kan automatisk klassifisere bilder tatt av skader. 
Bilde: Fra clarifai demo

Klassifisering av tekst
Avanserte algoritmer leser gjennom tekstene dine (eposter, dokumenter, websider, sosiale medier etc.) og klassifiserer tekstene i emner du selv har definert, eller som algoritmen selv foreslår. Emneklassifiseringen kan for eksempel brukes til
  • avanserte søk,
  • etablering av automatiske arkivnøkler og avansert arkivering, samt
  • automatisk distribusjon av eposter eller henvendelser til relevante deler av organisasjonen (f. eks. dispatch på kundesenter).
Bilde: For analytikerne - Visualisering av emneklassifiseringsalgoritmens resultater

OCR-lesing av skannete tekst
Nøyaktigheten i gjenkjenning av tegn og ord basert på maskinlæring basert på eksempler er blitt vesentlig bedre de siste årene. Algoritmer klarer nå også å gjenkjenne håndskrift. Avanserte metoder forstår forskjellige tegnsett og kan også fjerne støy i det scannete dokumentet som kommer fra skygger, bretter, rifter, kaffeflekker, smuss eller liknende.
Bilde:  Gjenkjenning av tegn

Dette var noen få eksempler på hva som er mulig å få til med kunstig intelligens nå om dagen.  Du finner listet opp noen flere brukstilfeller på Chronos' hjemmeside.

PS. Den norske Dataforening har etablert en egen faggruppe for Kunstig Intelligens og Robotikk hvor Chronos deltar.
Faggruppen har eget spor på Software 2017. Sees vi der?

hilsen
Espen Remman
Bilde: Et nevralt nettverk gjenskaper en katt etter å ha blitt lært opp av van Goghs malerier først.

tirsdag 21. juni 2016

Datavitenskap - hvordan gjør de det? del 2

Innledning
Gartners Hype Cycle sier at Data Science (datavitenskap) vil være på den såkalte "Plateu of productivity" ... NÅ. Selskaper som har ambisjon om å forme den datadrevne framtiden er godt i gang.

I denne bloggserien "Datavitenskap (DataScience/Bigdata) - hvordan gjør de det?" gjennomgår jeg et utvalg av teknikker vi kan bruke for å skape kunnskap av data*. 

I innlegg #2 tar jeg for meg tre nye familier av teknikker: 
  1. klassifisering,
  2. anbefalingsmotorer (samhandlingsfiltrering - Amazon, Spotify etc.) og
  3. klyngeteknikker (clustering)
Klassifisering
I klassifiseringgruppen av algoritmer prøver vi å plassere nye objekter (f. eks. en kunde) i forhåndsdefinerte klasser. Det finnes en rekke klassifiseringsteknikker (informatikere kaller det "algoritmer"). Én mye brukt klassifiseringalgoritme plasserer objektet vi skal klassifisere i et en-, to-, tre- eller flerdimensjonalt koordinatsystem(#). 
Algoritmen leter etter de objektene som er nærmest objektet vi skal klassifisere. De nærmeste objektene kaller vi naboer
Tenk deg at naboene allerede er klassifisert og plassert ut i koordinatsystemet. Hver av aksene i det flerdimensjonale koordinatsystemet (eller "rommet") representerer en bestemt egenskap. Vi plasserer det nye objekt i dette koordinatsystemet  basert på verdiene for de respektive egenskapene og beregner avstanden til naboene, på samme måte som vi beregner avstanden i vår virkelige tre-dimensjonale tilværelse. 
Vi bestemmer selv hvor mange naboer vi skal ta med i beregningen. Algoritmen kalles k-nærmeste naboer. K'en indikerer at vi har friheten til å definere hvor mange naboer vi skal vurdere i klassifiseringen.

Eksempel

La oss si vi har en kundedatabase med informasjon om hvem som kjøper et produkt (kjøpere) og hvem som ikke kjøper et produkt (ikke-kjøpere). For alle disse har vi informasjon om alderkjønn og inntekt, altså 3 egenskaper. Hver av disse 3 egenskapene er representert ved hver sin akse i et koordinat-system.Tenk deg et x, y, og z koordinatsystem med alder langs x-aksen, kjønn langs y-aksen og inntekt langs z-aksen. I tillegg har vi en liste av potensielle nye kjøpere med den samme informasjonen (alder, kjønn og inntekt), men ikke om de er kjøpere eller ikke-kjøpere. Det siste er det vi skal finne ut. Algoritmen finner fram til hvilke av de potensielle kjøperne som har størst sjanse for å kjøpe. Vi klassifiserer de potensielle kjøperne i den nye listen basert på naboenes allerede historisk bestemte klassifisering i kunderegisteret vårt.
I diagrammet under har vi merket kjøpere med blå kvadrater og ikke-kjøpere med røde triangler. En potensiell kjøper er representert ved en grønn sirkel. Vil dette prospektet bli en kjøper? Hva vil algoritmen svare? Vel, det kommer an på...
Klassifisering


Vi bestemmer selv hvor mange naboer vi vil ta med i beregningen. La oss bruke 3 naboer. Vi ser på punktene på innsiden av den hele sirkelen. Der er det to røde ikke-kjøpere og én blå kjøper. Vi spår derfor at den potensielle kjøperen ikke er en kjøper.











Hvis vi ser på de fem nærmeste naboene, innenfor den prikkete sirkelen, finner vi tre blå kunder og to 
røde ikke-kjøpere. Her spår vi at vedkommende er en sannsynlig kjøper. Resultatet blir forskjellig.

Hva kan vi gjøre her? Vi kan for eksempel vekte med hensyn på distansen. Punktene nærmest kan telle mer en punktene lenger unna. Med det som utgangspunkt blir det enda vanskeligere i dette eksemplet å lande på om det er en sannsynlig kjøper eller ikke. Husk da at dét i seg selv også er viktig informasjon. 
Algoritmen gir en sannsynlighet for om et prospekt kan komme til å kjøpe eller ikke. I dette tilfellet er det vanskelig å spå.
I eksemplet ovenfor er det veldig lite data. Normalt vil det være store mengder data. Presisjonen vil derfor i praksis være mye bedre.

Begrensinger
En av utfordringene med k-nærmeste nabo-algoritmen er at den er ressurskrevende. Algoritmen beregner avstanden mellom hvert eneste prospekt og mot alle historiske kjøpere og ikke-kjøpere. I et stort datagrunnlag blir det mange beregninger. 
Anbefalingsmotorer (Samhandlingsfiltrering)

Anbefalingsmotorer kan blant annet brukes til å promotere nye tilbud av produkter til deg som det er stor sannsynlighet for at du finner interessante.
Våre preferanser oppleves som individuelle, men som oftest befinner vi oss i grupper med liknende preferanser. 
Analyser av preferanser til mange individer finner sammenfallende mønstre i smak og behag. 
Liker jeg filmen Matrix er det større sjanse for at jeg også liker Minority report. Liker jeg Carpe Diem så er sjansen større for at jeg liker Madcon. Liker jeg ballett så liker jeg kanskje opera. 
Vi liker like ting og vi liker også det individer som likner oss liker.  

Anbefalingsmotorer beregner hva du sannsynligvis også liker og misliker basert på din og andres historiske adferd. 
Anbefalingsmotorer lager en liste av anbefalinger på to måter:

  • samhandlingsfilter og 
  • innholdsbasert filter.

Samhandlingsfiltrering bygger en modell fra kundens tidligere adferd. Denne modellen settes opp i en tabell (se under for et eksempel). Kundens adferd koples sammen med andre kunders adferd som også er lagt inn i den samme tabellen. Adferden kan bli registrert på webshoper, crm-systemer, sosiale medier etc.. 
Motoren finner sammenliknbare kunder og foreslår produkter andre sammenliknbare kunder har kjøpt.
I tabellen under ser vi at kundene har en rating per produkt. Rød er topp rating og blå er laveste rating.  Vi finner de kundene som har likest rating over produktene og vi foreslår nye produkter som andre liknende kunder har gitt en høy rating. 


Samhandlingsfiltrering - ratingtabell
Innholdsbasert filtrering ser på egenskapene på produktene. Poenget er å tilby produkter med liknende egenskaper som du tidligere har kjøpt eller gitt høy rating.
Forskjellen mellom samhandlingsfiltrering og innholdsbasert filtrering er best beskrevet gjennom et eksempel:  
Musikkanalene, Last.fm og Pandora Radio benytter hver sin teknikk. 
Pandora bruker egenskapene til sangen eller artisten hentet ut fra musikkens "dna" (400 forskjellige egenskaper ved musikken). Musikkstasjonen finner liknende musikk. Brukerens tilbakemelding raffinerer resultatet og nedtoner eller uthever egenskaper blant de 400 egenskapene. Dette er innholds-basert filtrering
Last.fm setter opp en musikkstasjon med anbefalte sanger basert på observasjoner av band, artister og individuelle sanger brukeren har lyttet til. Denne adferden sammenliknes med andre brukeres adferd. Last.fm spiller spor som ikke opptrer i brukerens bibliotek, men som ofte er spilt av andre brukere med liknende interesse. Her utnyttes andres adferd. Teknikken kalles derfor samhandlingsfiltrering.

Begrensinger

En ulempe med samhandlingsfiltrering er at algoritmen krever mye innsamlet data. Den gir liten verdi i starten. Innholdsfiltrering virker med en gang, men er mer begrenset. Algoritmen finner kun liknende musikk, og det er jo litt kjedelig i lengden. Samhandlingsfiltrering utvider horisonten basert på andres adferd.


Klyngeteknikker (Clustering)

Klyngealgoritmene likner på k-nærmeste nabo-algoritmen, med den fundamentale forskjellen at vi ikke har forhåndsdefinerte klasser å plassere objektene i. Vi kan derfor bare se på hvordan objekter grupperer seg og ikke hvilken klasse objekter tilhører. Algoritmene brukes blant annet ofte til å plassere kunder i kundesegmenter. Nå vi har segmentert kundene kan vi finne ut av hva som kjennetegner disse segmentene for deretter å iverksette tiltak skreddersydd for den enkelte gruppering.
Under ser vi et diagram som visualiserer en håndfull av de mest brukte klyngealgoritmene. Diagrammet viser forskjellige måter å klynge forskjellige datasett. Eksemplene viser hvordan forskjellige teknikker egner seg for forskjellige type datasett. En viktig analyseøvelse er å forstå dataene. Forståelse av disse er avgjørende for  velge riktig algoritme. 
Klyngeteknikker
Avhengig av hvilken algoritme som brukes kan det være utfordrende å tolke resultatene. 
Videre analyser som bidrar til å forstå segmentene er viktig. En oppgave er ofte å prøve å forenkle. Hvilke egenskaper er de som virkelig utgjør en forskjell for å besvare våre spørsmål? Det er et eget tema for en senere blogg.

Hva kjennetegner egentlig de forskjellige segmentene?

Hvordan kan jeg best yte service til de forskjellige kundesegmentene?

Hvilke produkter er mest interessante?

Hva slags type klær bruker dette segmentet?

Hvor bor kundene?

Er kundesegmenter lojale eller ikke?

Tjener vi penger på dem?















I  det tredje innlegget tar jeg for meg to nye familier av algoritmer: 

  • Support Vector Machines og
  • Nevrale nettverk.
Support Vector Machines brukes til å trekke grenser mellom klasser av objekter. Algoritmen er et hakk opp i kompleksitet og kommer med en snedig egenskap. 
Grensene mellom klassene trekkes slik at den totale avstanden mellom klassene blir størst mulig. 
Nevrale nettverk er et vanskelig, men veldig spennende(!) tema. Nevrale nettverk har revolusjonert datavitenskapen de siste årene. 
Resultatene som kommer ut av nevrale nettverk kan oppleves som magi, riktignok med den store forskjellen at algoritmen gir ekte anvendbare resultater.
Mer om dette i neste innlegg.


PS. Kommentér gjerne bloggen. Er det ting du lurer på, uklarheter i teksten, skrivefeil eller nær sagt hva som helst annet så er du mer enn velkommen til å ta kontakt.

# Faktisk bruker veldig mange av datavitenskaps-teknikkene et slikt koordinatsystem.

*Innlegget er en mix av egne erfaringer, fritt omarbeidet del av Alex Jones artikkel om Bigdatateknikker og fra boken som Data Science for Business av Provost og  Fawcett.


Espen Remman
Rådgiver/Partner
Chronos AS
tlf. +47 97 55 70 21
espen.remman(at)chronosit.no
twitter: EspenRemman
linkedin: espenremman