HØit Nr. 2-96
Previous article Next article TOC: Nr. 2, 1996 Previous Issue Next Issue About HØit

Selvorganiserende Nevrale Nettverk i Data Mining
-The Golden Retriever


Harald Holone

Data Mining

Etter hvert som mengdene med data i databaser rundt i verden øker voldsomt i størrelse ønsker brukerne å kunne finne mulige sammenhenger i dataene som ikke er kjent fra før. Slike sammenhenger kan brukes som støtte for avgjørelser i f.eks markedsføring. Dette er interessant f.eks i salgsavdelinger i store bedrifter, der man kan se på kunders vaner og dra nytte av disse for å få solgt mer varer til forskjellige kundegrupper.

Data Mining er idag et av de største moteordene i databaseindustrien, og det kommer stadig flere firmaer med løsninger på markedet. Både etablerte databaseprodusenter og uavhengige softwareprodusenter er med, og det vi ser idag er antakelig starten på utviklingen av en teknologi som om noen år vil være uunnværlig i dataanalyse og beslutningsstøttesystemer.

Oppgaven

Når det er snakk om f.eks salgsavdelinger som ønsker å analysere sine data dreier det seg ofte om svært store datamengder, fra 50GB til flere TB. I vår oppgave var ikke målet å lage et fullblods Data Mining system som kunne takle så store data, men å finne ut om det kunne la seg gjøre å implementere Data Mining med et selvorganiserende nevralt nettverk (se artikkel om nevrale nettverk i tidligere utgave av HØit) anvendt på mindre mengder data. Da vi startet prosjektet i januar var det allerede noen produkter på markedet, men de baserte seg stort sett på tradisjonelle metoder som beslutningstrær og statistikk. Markedet har endret seg ganske mye fra januar til juni, og det har dukket opp flere produkter som også anvender nevrale nett og fuzzy logikk.

Valg av nevralt nettverk

At vi skulle bruke et selvorganiserende nevralt nettverk var bestemt ved prosjektstart. Et 'vanlig' nevralt nettverk blir lært opp ved at man presenterer inputdata til nettverket sammen med ønsket output, dvs at man forteller nettverket hva slags data som blir presentert. Ved å presentere eksempler fra hver gruppe vil nettverket etter trening være i stand til å kjenne igjen inputdata som ligner på tidligere presenterte data og gi tilbakemelding om hvilken forhåndsdefinert gruppe det presenterte inputdataet antakelig tilhører.

Et selvorganiserende nevralt nettverk skiller seg fra et 'vanlig' nevralt nettverk ved at man ikke forteller nettverket hva slags data som blir presentert. Det er opp til nettverket selv å finne ut hvilke inputdata som ligner på hverandre og legge dem i samme gruppe, herav navnet selvorganiserende. Det er nettopp denne egenskapen ved selvorganiserende nettverk som gjorde dem til et selvklart valg i Data Mining sammenheng, målet er å finne ukjente korrelasjoner.

Etter å ha testet noen få selvorganiserende nettverk (Hamming, Winner-takes-all, ART1) for å få en føling med hvordan slike nettverk fungerer endte vi opp med å bruke nettverksmodellen ART2 (Adaptive Resonance Theory 2) i vårt prosjekt.

ART2

Grunnen til at vi valgte ART2 var at dette er et stabilt nettverk (det er i stand til å 'huske' selv sjeldent presenterte data), det takler kontinuerlige data, brukeren kan selv bestemme hvor like hverandre inputdata må være for å bli klassifisert til samme klasse, nettverket oppretter selv så mange klasser det trenger, og det jobber forholdsvis raskt. Justering av hvor 'strengt' nettverket skal være når det sammenlikner prototyper og inputmønster bestemmes av en parameter (kalt vigilanseparameter), et flyttall mellom 0 og 1. Med denne parameteren satt til 0 vil nettverket betrakte alle inputmønstre som medlemmer av samme gruppe. Når parameteren økes mot 1 blir nettverket strengere, og ved 1 må inputmønstre være identiske for å bli plassert i samme gruppe.

Et ART2 nettverk begynner uten noen klasser definert. Så fort det første inputmønsteret blir presentert blir den første klassen opprettet, og til denne klassen blir det opprettet en prototype som er en kopi av det første inputmønsteret. Videre fungerer nettverket som følger:

  1. Nytt inputmønster blir presentert
  2. En kryssmultiplikasjon av inputmønstret og hver prototype blir utført
  3. Den prototypen som gir høyest resultat blir plukket ut som vinner
  4. Den valgte prototypen blir sammenlignet med inputmønstret
  5. Er de tilstrekkelig like blir denne prototypen justert og inputmønstret havner i denne klassen
  6. Er de ikke like nok blir 'nest beste' prototype valgt som vinner, og testen utføres på nytt
  7. Steg 6 foregår helt til en 'riktig' prototype blir funnet eller til det ikke er flere igjen
  8. Er det ikke flere prototyper igjen blir det opprettet en ny klasse for dette inputmønstret

Implementasjonen

Nettverket ART2 har vi implementert i en klasse i C++ uten plattformavhengige systemkall, slik at det skal være enkelt å flytte koden til en annen plattform. Vi valgte å bruke Windows som plattform for vårt program, og fant det naturlig å legge klassen ART2 i en DLL slik at det var lett å få tilgang til nettverket f.eks fra MS Visual Basic. DLL'en består av selve nettverksklassen ART2 og noen aksessfunksjoner for å opprette, trene og slette nettverket, samt å se på prototypene til klassene under og etter trening.

Vi laget et grensesnitt i Visual Basic for å kontrollere de forskjellige delene av programmet. Valg av data som skal analyseres gjøres enkelt via ODBC eller fra en MS Access fil. Programmet benytter seg også av et RAMScan kort fra MRT via en VBX. På dette kortet blir inputdata og resultater lagret. Grunnen til at vi gjør dette er at vi enkelt og raskt kan presentere statistisk informasjon om hver klasse som nettverket deler inn inputmønstrene i.

I grensesnittet kan brukeren også justere vigilanseparameteren, velge antall kunstige input og verdiene på disse, samt justere gjennomsnitt for hver av parametrene i inputmønstrene.

Resultatene

Testresultatene som er presentert under er resultater etter en gjennomkjøring av dataene.

Nettverket er testet primært med to datasett. Det ene er IRIS, et datasett som er en slags standard innen nevralnettmiljøet. Dataene består av 150 forskjellige inputmønstre med 4 parametre hver. Dataene er delt inn i 3 klasser med 50 inputmønstre i hver.

Med justering av vigilanseparameteren og bruk av noen kunstige input delte nettverket vårt inn dataene i 3 klasser, og kun et input var klassifisert feil i følge fasiten. Dette resultatet er bedre enn det vi tidligere har oppnådd med Back-Propagation nettverk, som er et nettverk der man også sender med informasjon om hvilken klasse hvert input tilhører.

Vi testet også nettverket vårt mot et datasett som heter ZOO. Dette datasettet beskriver 101 navngitte dyr og hvilken av 7 grupper de tilhører. For hvert dyr finnes det 16 forskjellige opplysninger, f.eks om det legger egg, om det har fjær, om det lever under vann, hvor mange ben det har osv.

Under testingen med disse dataene eksperimenterte vi kun med vigilanseparameteren og ikke med kunstige input eller gjennomsnittsjusteringer. Nettverket delte inn dataene i en del klasser, noen av disse inneholdt hummer og kanari (bokstavelig talt), men det var også noen grupper som var svært positivt overraskende. Enkelte grupper bestod kun av fisker eller kun av fugler. Dette er et resultat vi er svært godt fornøyd med, ikke minst fordi det er et godt eksempel å vise til for å beskrive hva et Data Mining system kan klare.

Konklusjon

Det virker for oss helt klart at selvorganiserende nevrale nettverk kan anvendes i Data Mining systemer. Det største argumentet imot bruk av nevrale nett er at nevrale nettverk fungerer som en svart boks der det er vanskelig å begrunne de beslutningene som nettverket treffer. Vi håper at vår presentasjon av resultater gjør at nettverket blir noe mer enn en svart boks, og at det er mulig å se årsaker til at inputmønstre havner i samme klasse.

I vår prosjektrapport kommer vi med flere forslag til utvidelser av programmet. Både preprosessering av data og etterbehandling av resultater er viktige punkter som ville øke programmets nytteverdi. Dessuten er det også ønskelig at programmet selv er i stand til å finne 'riktig' vigilanseparameter slik at brukeren slipper å eksperimentere med denne. Med riktig vigilanseparameter menes at antall klasser som opprettes ligger i et område som brukeren har definert på forhånd. Det gjenstår også testing med større datamengder og på andre typer data.

Videre lesing

Advantages In Knowledge Discovery And Data Mining,
Fayyad, Piatetsky-Shapiro, Smyth, Uthurusamy
ISBN 0-262-56097-6

Data Mining - An Introduction

Pattern Recognition By Self-Organizing Neural Networks,
Carpenter, Grossberg
ISBN 0-262-03176-0

Previous article Next article TOC: Nr. 2, 1996 Previous Issue Next Issue About HØit
HØit Nr. 2-96


Copyright: 1996, Høgskolen i Østfold. Last Update: 28.06.97, Thomas Malt.