Fra data til kunnskap

Data Mining eller datagruvedrift er et nytt fagfelt innen informatikk hvor målet er å oppdage ny kunnskap i store datamengder. Metodene som er utviklet kombinerer teknikker fra kunstig intelligens, databasesystemer og statistikk.

Torgeir Dingsøyr

De siste årene har det blitt stadig lettere og vanligere å lagre og håndtere store mengder data. Lagringsmedier som hard-disker og tape-stasjoner har fått større og større kapasitet, og det har kommet nye medier som C D-rom. Dette har gjort at prisen for å lagre data er lav. Å håndtere store datamengder har blitt enklere med ny databaseteknologi, og med språk for å søke i datamengder, som Structured Query Language (SQL). Å dig italisere data går fort med utstyr som scannere og samplere, for å overføre bilder og lyd.
Dette har ført til at offentlig forvaltning, bedrifter og organisasjoner sitter på store datamengder. Databaser for seismiske da ta fra oljesektoren kan inneholde flere milliarder bytes med data. I USA har supermarkedkjeden Wal-Mart en database hvor de registrerer 20 millioner transaksjoner per dag. NASAs Earth Observing System vil generere rundt 50 gigabyte med bildedata hver time når systemet kommer i drift rundt tusenårsskiftet. Internet inneholder ekstremt store mengder data, som er representert på en felles måte (språket Hypertext Markup Language, HTML).

Umulig å analysere for mennesker
Hva skal vi så med disse dataene? Tidligere ble dataene analysert for hånd -- eksperter i et felt kunne trekke ut informasjon ved å se mønstre i data, eller lage statistiske distribusjoner for å test hypoteser. Måten data hentes ut av databasene på er ved å gjøre spørringer, med enkle spørsmål, typisk i språket SQL. Da er det mulig å få svar på spørsmål som "hvor mye lønn betalte vi ut i juli" gjennom et språk som likner på engelsk. Men mennesker kan ikke tolke data når de har hundrevis eller tusenvis av dimensjoner. Statistikk-verktøy håndterer ofte ikke større datamengder enn du får plass til i minnet på en datamaskin. Du kan ikke formulere en spørring i SQL hvis du ikke vet hva du vil finne ut, eller hvordan du skal gå fram for å gjøre det. Hvis en bank vil vite om en transaksjon er gjort av kriminelle kan de ikke gjør det med et SQL-søk i en database.
Store datamengder er samlet opp uten at de egentlig blir brukt til å få innsikt i et problemområde, eller for å ta avgjørelser. For eksempel må du fylle ut et utall skjemaer, levere bilder og kopi av passet for å få oppholdstillatelse i Frankrike. Databasene som bygges i Frankrike er et eksempel på databaser som bare opererer i skrivemodus -- der dataene aldri eller sjeleden brukes til noe. Datakvaliteten kan også være lav, fordi lite blir kontrollsjekket, siden fokus bare er på data-innsamling.

Søk etter uventede sammenhenger
Data Mining er et forsøk på å aktivt bruke data som er samlet inn, og som ved å kombinere fagfeltene databasesystemer, kunstig intelligens og statistikk, søker i store datamender for å finne uventede mønstre, regler, klassifiseringer av data, eller se trender. En Data Mining algoritme kan finne "uvanlige mønstre" av transaksjoner i en bank, som kan være gjort av kriminelle. Et annet banalt eksempel kan bære å oppdage at det er en sammenheng mellom salg av øl, treningsdrakter og potetgull på Obs! ved å analysere kassa-lapper. Det kan du også oppdage ved å skrive et søk i SQL om "hvor mange som kjøper treningsdrakter kjøper også øl og potetgull", men da må du allerede ha en mistanke om at det kan være en sammenheng.
Selve algoritmene som brukes kalles Data Mining algoritmer, men hele prosessen som går på å oppdage kunnskap fra databaser, det vil si også å filtrere dataene, fjerne støy, kikke på dataene manuelt for å se etter uregelmessigheter, og å tolke kunnskapen som kommer fra Data Mining algoritmene, kalles Knowledge Discovery in Databases.

Klassifiering, gruppering, summering
Hva er det så vi gjør som får store datamengder til å bli summert opp som kunnskap? Det finnes mange forskjellige typer algoritmer for Data Mining. Metodene kan deles inn i fire grupper, som har forskjellig funksjon og resultat. For å beskrive metodene definerer vi en database som en matrise der kolonnene står for forskjellige variable, og radene er data som er samlet inn i en enhet, for eksempel data som er samlet inn for en person som i den fiktive databasen under:

NAVN ALDER VEKT BLODTRYKK HØYDE KJØNN KREFT
Heidi 26 68 140 184 KVINNE NEI
Ole 28 80 130 176 MANN NEI
Line 40 73 135 166 KVINNE JA
Jens 35 63 140 170 MANN NEI
Algoritmene vil operere på disse dataene og prøve å trekke slutninger etter forskjellige metoder, som: Klassifisering -- å lære en funksjon fra data, som grupperer data inn i en eller flere grupper som er definert på forhånd. Det kan være å generere en funksjon som sier om en person har høy eller lav risiko for å få kreft, for å kunne si om vedkommende bør ta en tur til legen eller ikke. I eksempelet over kan funksjonen være "sannsynligheten for å få kreft er alder pluss vekt delt på 1000".
En annen metode er å gruppere data som er rimelig like i grupper. Det kan være interessant å se hvilke grupper av befolkningen som har høy risiko for å få kreft. Blir menn gruppert i en gruppe og kvinner i en annen? Har alder mye å si for hvilken gruppe folk havner i?
Kanskje vi kan si noe om årsaken til at de får kreft, eller hva som gjør at de har en høyere sannsynlighet for kreft, dersom vi finner hvilke faktorer som gjør at dataene blir gruppert sammen. En tredje metode er å lage summeringer -- kompakte beskrivelser av data. Et enkelt eksempel kan være å finne gjennomsnittlige vekt for kvinner, og et mål på hvor mye vekten varierer. Det kan også innebære å visualisere data og å oppdage avhengigheter mellom variabler. En siste metode er å prøve å finne forandringer i data fra tidligere målte verdier, eller fra noen normerte eller forventede verdier. I eksempelet kan det være å finne "unormale" mennesker ved å se på forskjellene mellom høyden og vekten til personene og "normale" verdier.
De forskjellige metodene kan brukes i kombinasjon, men det er i øyeblikket svært få kommersielle verktøy som håndterer alle steg i prosessen med å oppdage ny kunnskap. De fleste programmer er på forskningsstadiet, og krever mye mennesklig vurdering for å behandle dataene før og etter Data Mining-delen.
Skulle vi bruke språket SQL for å analysere dataene over, ville det begrense seg til å spørre om enkle ting, som "hvor mange kvinner over førti får kreft", eller "hva er gjennomsnittlig vekt til de som får kreft".

De fleste koner er kvinner
Det er viktig å kontrollere kunnskapen vi får av en Data Mining algoritme. Resultatene kan komme på grunn av støy i dataene, eller på grunn av at dataene rett og slett ikke måler prosessen du ønsker å vite noe om. I eksempelet over er det lite trolig at du kan finne om en person har høy risiko for å få kreft bare utfra målingene av alder, kjønn, vekt, høyde og blodtrykk.
Resultatene kan også være helt trivielle, det er for eksempel liten vits i å oppdage at "de fleste koner er kvinner".
Bruk av metodene reiser også en del etiske spørsmål om bruk av data. Ved hjelp av Data Mining er det mulig for et firma å finne ut hvilke kundegrupper som med størst sannsynlighet vil kjøpe et produkt. Hvis disse dataene kobles med kjøpsmønsteret til enkeltkunder vil for eksempel salg per telefon kunne bli svært effektivt. Men det er neppe en utvikling som folk vil sette pris på. Å avlytte et stort antall telefoner vil være mye lettere ved hjelp av tenkikkene over -- spesielt når teknologien for å overføre mennesklig tale til tekst blir moden om noen år. Det vil da være mulig å finne folk som har "uvanlige" telefonsamtaler, eller prater om spesiele emner, som for eksempel myndighetene ikke liker. Datasystemet til Schengen -- Schengen Information System vil lagre en rekke opplysninger om personer, som navn, kjønn, statsborgerskap, og om en person ansees for å være voldelig eller ikke. Schengen-landene vil trolig aktivt bruke metodene over for å oppdage og avverge "trusler" som kan komme.
For å kontrollere flyten av data internasjonalt har OECD definert en del prinsipper for bruk av data og flyt av databaser, som gjelder kontroll av innsamling av persondata, datakvalitet, og at datainnsamling bør h a en spesifikk hensikt.
Det er ganske sikkert at metodene som er beskrevet over kommer til å være i bruk hos de fleste bedrifter, organisasjoner, og offentlige etater som sitter på store datamengder innen noen års tid. Men fagf eltet er ennå ganske umodent, og det kreves stor forskningsinnsats for å håndtere store nok datamengder, kunne gjøre analyser fort nok, og kunne få resultatene ut i en form som er forståelig for mennesker. Forhåp entligvis vil utvikingen i fagfeltet føre til at databasene får data av høyere kvalitet, som gir grunnlag for bedre analyser. I et miljø der maskinene gjør tallknusing og forarbeid, og mennesker vurderer, kontrollerer og bruker resultatene.


Torgeir Dingsøyr skriver for tiden diplomoppgave innen kunstig intelligens ved Universite Dauphine i Paris. Han har e-post adresse: dingsoyr@ceremade.dauphine.fr