Er maskinlæring noe for deg?

Denne teksten er en ikke-teknisk introduksjon til hva maskinlæring er, og ble først publisert nå sonat.no. I denne versjonen har jeg lagt til noen fotnoter og lenker.


Maskinlæring er et uttrykk som blir mye brukt og kan høres imponerende ut, men hva er det egentlig? Og hva er verdien av maskinlæring? I denne artikkelen ønsker jeg å sette maskinlæring i sammenheng sammen med noen andre lignende teknikker, fortelle noen historier fra virkeligheten, og advare mot noen fallgruver.

Hva er maskinlæring?

I boka “Machine Learning” definerte Tom M. Mitchell maskinlæring som et dataprogram som blir bedre til å utføre en oppgave etter hvert som programmet får mer data. For at definisjonen skal bli konkret må vi presisere hva det vil si å bli bedre, hvilken oppgave som skal utføres, og hvilke data som skal brukes.

Det enkleste eksempelet jeg kan tenke meg er et dataprogram som skal forutsi salgsprisen til en bolig. Anta at vi har salgspriser fra tidligere solgte boliger i samme nabolag tilgjengelig, men ingen annen informasjon om boligene. Da kan vi bruke gjennomsnittet av de tidligere salgsprisene i et forsøk på å forutsi hva boligen vil selges for.1 Programmet som tar gjennomsnitt gjør maskinlæring. Med andre ord trenger ikke maskinlæring å være så komplisert.

Virkeligheten er derimot ikke alltid like enkel. I eksempelet med boligpriser har vi kanskje også informasjon om boligenes størrelse, generelle tilstand, beliggenhet, etasje, parkeringsplass, og så videre. Alle disse faktorene kan gjøre oss i stand til å predikere med høyere sikkerhet hva én spesifikk bolig vil selges for, og moderne algoritmer håndterer slik informasjon godt. Problemet blir litt mer utfordrende om man ønsker å forstå i hvilken grad de ulike faktorene påvirker estimatet, eller om man vil vite hvor sikker algoritmen er i sitt estimat. Bruker man algoritmen til å selv sette priser, risikerer man en feedback-loop. Algoritmens prediksjoner påvirker fremtidige data, som videre påvirker fremtidige prediksjoner.

Matematikken bak de beste valgene

Om vi bruker maskinlæring kan vi trene en algoritme til å finne sammenhenger i data. Hvis en butikk har solgt \(46\), \(56\), \(43\), \(52\), \(41\), \(57\) og \(48\) varer de siste syv dagene, kan vi regne ut at snittet er \(49\) varer per dag. Gjør vi en liten antagelse om dataene, kan vi være \(90\, \%\) sikker på at antall varer som blir solgt i morgen vil ligge mellom \(38\) og \(61\).2 Men å vite dette har liten verdi i seg selv. Det er hvordan informasjonen brukes videre som er avgjørende.

La oss anta at varen er nybakte brød, og at forretningsspørsmålet er hvor mange brød butikken bør bake hver dag. Butikken kan da gjøre to typer feil: å bake for lite brød slik at noen kunder snur i døra, eller å bake for mye brød slik at noe må kastes eller gis bort. Dersom kostnaden av begge typer feil er identiske, er det optimale svaret å bake \(49\) brød. Hvis kostnaden av en type feil er større enn den andre, må dette tas med i beregningen og gjennomsnittet er ikke lenger det riktige svaret.3

Matematisk optimering handler om å ta best mulig valg. Det er en teknikk som kan brukes alene, eller sammen med maskinlæring. Ofte ønsker vi å maksimere økonomisk overskudd. Kjente bruksområder for matematisk optimering inkluderer å planlegge flyruter, utnytte dyre maskiner (f.eks. turbiner), sette opp vaktlister på sykehus, planlegge ruter for budbiler og få kabalen med forelesningssaler, fag og professorer til å gå opp på universiteter.

I Boston i USA har rutene for skolebusser historisk sett blitt satt opp manuelt, men når en optimeringsalgoritme gjorde jobben klarte de seg med \(120\) færre busser. Reisetiden til elevene var den samme. Du kan lese mer om dette i artikkelen “Optimizing schools’ start time and bus routes” av Bertsimas og andre.

Jakten etter gode problemer

Når bør maskinlæring, optimering eller andre former for matematisk modellering brukes? Det viktigste er å begynne med problemet og ikke løsningen. Det er nyttig å vite hva maskinlæring og optimering er, for da kan man lettere gjenkjenne problemer når de dukker opp. Å bestemme seg for å bruke maskinlæring, for så å lete etter et bruksområde, er derimot neppe den beste fremgangsmåten.

Maskinlæring og statistiske modeller brukes når man ønsker å predikere noe, og man har data tilgjengelig. I mitt arbeid har jeg brukt maskinlæring til å forutsi antall salg i fremtiden, beregne sannsynligheten for at kunder sier opp et abonnement, predikere sannsynligheten for at bankkunder misligholder lån og sannsynligheten for at bedrifter ønsker å kjøpe et produkt.

Matematisk optimering brukes når man skal utnytte eller fordele en mengde ressurser. Jeg har brukt optimering til å sette opp vaktlister for hundrevis av ansatte i butikker, slik at antall mennesker på jobb treffer godt på antall kunder i butikkene og de ansattes stillingsprosent respekteres. En annen oppgave gikk ut på å fordele mennesker på arbeidsoppgaver, slik at så mange som mulig fikk jobbe med det de ønsket. Logistikk er et annet relevant bruksområde, og her har jeg jobbet med algoritmer for å fordele varer til butikker på en optimal måte.

Hvis noen i din bedrift planlegger ressursutnyttelse manuelt eller forsøker å ta gode valg under usikre omstendigheter, så kan sannsynligvis optimering og maskinlæring være til hjelp. Moderne algoritmer kan finne beste løsning blant milliarder av muligheter, kvantifisere usikkerhet presist, og utnytte tusenvis av faktorer i et datasett for å predikere mer nøyaktig enn hva et menneske vil klare. På tross av dette fanger en modell sjeldent opp hele virkeligheten. Derfor er en vinnende kombinasjon ofte en algoritme som kommer med forslag, og et menneske som godkjenner eller justerer løsningene i etterkant.

Forutsetninger og realisme

Den viktigste forutsetningen for å lykkes er å ha en klar idé om hvilket problem man ønsker å løse. Det høres kanskje trivielt ut, men av og til snakkes det om at man ønsker innsikt i data, å ta datadrevne valg, eller å bruke maskinlæring—uten at det er tydelig hva man vil oppnå. At både forretningsprosesser og data er ryddige er også viktig. Dårlig datakvalitet er et større problem enn dårlige algoritmer.

Er maskinlæring noe for deg? Svaret er ja hvis du har data og ønsker å predikere noe. Mer generelt: vil en mer matematisk tilnærming være nyttig i din bedrift eller bransje? Jeg kan ikke se for meg at svaret er nei, men selv leter jeg etter matematiske problemer og prosesser som kan forbedres hele tiden. Nå som du vet litt mer om hva maskinlæring er, håper jeg at du vil gjøre det samme.


  1. Gjennomsnittet er ikke neste mulighet, men gjennomsnittet er riktig dersom vi antar at de tidligere salgsprisene er normalfordelte og at vi er ute etter forventningsverdien. 

  2. Dataene \(46, 56, 43, 52, 41, 57, 48\) er syv tilfeldige trekk fra \(\operatorname{Poisson}(\lambda = 50)\). Intervallet \([38, 61]\) ble beregnet ved å først finne posteriori-fordelingen til \(\lambda\), gitt datapunktene og en svak prior på \(\lambda\). Deretter integrerte jeg over usikkerheten i posteriori-fordelingen. 

  3. For å løse det generelle problemet, anta at vi baker \(b\) brød. Kostnaden av å bake \(b\) brød, gitt at \(x\) kunder vil kjøpe brød, er en funksjon \(K(b, x)\). Vi må velge en verdi \(b^\star\) som minimerer forventet kostnad \(\sum_i p(x_i) K(b, x_i)\)