![]() |
I&I-> Jaargangen -> Artikel
Datamining: schatgraven in databases
|
|
Door: Arno Siebes Met behulp van datamining wordt kennis gedestilleerd uit een grote hoeveelheid gegevens. De belangstelling voor deze techniek neemt, met de toename van databanken enorm toe. Hoe werkt het?
Een manier om data mining te bespreken is dan ook het presenteren van een aantal uiteenlopende voorbeelden. Echter, de kans is dan groot dat een toepassing die juist interessant voor de lezer is niet aan bod komt. Bovendien levert data mining strategische informatie op. Het is daarom moeilijk om inzicht te krijgen waar data mining met succes is in gezet en waar niet. In plaats van een dergelijke opsomming schetst dit artikel dan ook de praktijk van het data minen, en wel aan de hand van een voorbeeld uit de marketingpraktijk. Als het proces duidelijk is, maakt de lezer zelf wel uit of data mining een oplossing is voor zijn problemen. Data mining en zijn hele context wordt in de literatuur meestal Knowledge Discovery in Databases (kdd) genoemd, [1], in dit verhaal wordt deze gewoonte gevolgd. kdd is dus hele proces om kennis uit data te destilleren en omvat dan ook aspecten als het opschonen van bestanden en het verrijken van bestanden. Veel van deze aspecten zijn oude bekenden in de praktijk van de databasemarketing en andere statistische analyse toepassingen, er zijn echter twee belangrijke redenen om deze aspecten toch in dit verhaal op te nemen. De eerste is dat het hele kdd-proces noodzakelijk is om succesvol te minen. De tweede is dat de meeste fouten die bij datamining gemaakt worden, juist fouten in deze context zijn. Het kdd proces omvat drie fasen; data warehousing, data mining en de interpretatie en het gebruik van de resultaten. Aan de hand van een voorbeeld zullen we de drie fasen bespreken. Voordat we dit voorbeeld introduceren nog een waarschuwing. Het feit dat we drie fasen onderscheiden wil nog niet zeggen dat kdd een lineair proces is wat je in een keer van het begin tot het eind doorloopt. Vaak zal men gedurende de analyse zien dat een iets andere vraag beter zou zijn, of dat er nog wat extra informatie nodig is. In al zulke gevallen moet men enkele stappen terug doen in het proces. Big Bucks Credit CardEen van de produkten van de bank Big Bucks Inc. (bbi) is een credit card. Op dit moment gebruikt nog maar een klein gedeelte van bbi's klanten deze kaart. De bank vermoedt dat een veel groter percentage van haar klanten profijt van een credit card zou kunnen hebben. Een uitgebreid informatiepakket naar alle klanten sturen is veel te duur en daarom wil bbi gericht die klanten aanschrijven waarvan zij verwacht dat zij in redelijke mate geïnteresseerd zijn in het bezit van een credit card. Het vinden van een profiel van zulke klanten is een typische datamining taak.Data WarehousingOm te minen heb je twee dingen nodig, een mining vraag en een mining bestand. De mining vraag beschrijft in wat voor soort strategische informatie je geïnteresseerd bent. In ons geval zijn dit profielen van potentiële credit card gebruikers. Het mining bestand is de database waaruit je deze informatie wilt destilleren. Als je weet wat je mining vraag is, kun je het mining bestand gaan samenstellen. De eerste vraag die je je moet stellen is: 'Welke informatie over mijn klanten zou relevant kunnen zijn voor het beantwoorden van mijn mining vraag?' In ons voorbeeld kennis over het inkomens- en uitgavenpatroon, kennis over de gezinssamenstelling en zo voort.Als de analyse fase met behulp van traditionele statistische technieken wordt uitgevoerd, dan dient men zich te beperken in het aantal factoren wat men meeneemt; regressie werkt niet goed met 150 variabelen. Als men gebruikt maakt van data miningtechnieken hoeft dat niet, sterker nog, je moet je juist niet beperken. Ten eerste omdat factoren die geen rol blijken te spelen er vanzelf wel uitvallen. Ten tweede, en nog veel belangrijker, omdat je met data mining op zoek bent naar onbekende informatie. Het kan heel goed zijn dat zowel het soort auto waarin men rijdt als de sport die beoefend wordt als geïsoleerd gegeven niets zeggen over het al dan niet hebben van een credit card. Maar dat wil nog niet zeggen dat de combinatie van auto en sport geen bepalende factor is. Als je op basis van een eerste (correlatie-)analyse zowel auto als sport verwijderd, kun je een dergelijke combinatie nooit meer vinden. Nadat je bepaald hebt welke informatie relevant zou kunnen zijn, moet deze informatie bijeengezocht worden. Vaak zal het verspreid staan over verschillende (produktie)databases en soms zal informatie van elders aangekocht moeten worden.[1] Dit betekent dat de data uit deze verschillende databases bij elkaar gebracht moet worden. Dit bij elkaar brengen van informatie is beslist geen triviale taak, de twee belangrijkste aspecten zijn het opschonen van databases en het koppelen van databases. Het is een ervaringsfeit dat alle databases vervuild zijn, de hoofdoorzaak hiervan ligt in invoerfouten. Deze fouten variëren van eenvoudige typefouten tot niet-ingevulde velden. Sommige van deze fouten zijn makkelijk te herstellen. Typefouten volgen een standaard patroon, letters worden omgedraaid, er wordt met 'dikke vingers' getypt of de positie van de vinger op het toetsenbord is verschoven. Als er standaardlijsten bestaan (zoals voor straat- en plaatsnamen) zijn zulke fouten makkelijk te herstellen. Voor fouten in namen ligt dat al anders. De namen Blauw en Blaauw komen naast elkaar voor en het is niet gemakkelijk te zien wat de goede spelling zou moeten zijn. Nog moeilijker ligt het bij niet ingevulde velden. Je zou deze met behulp van een statistische analyse kunnen proberen in te vullen, maar daar moet je voorzichtig mee zijn. Immers je gaat het resultaat gebruiken om een model te maken, door gebruik te maken van statistische technieken; op zo'n moment ben je bezig het eindresultaat een bepaalde richting op te sturen. Nadat we de individuele databases zoveel mogelijk hebben opgeschoond, moeten we de bestanden gaan koppelen. Dit koppelen kan overigens helpen individuele fouten te herstellen. Bijvoorbeeld als we een Blauw en een Blaauw hebben die in alle (of veel) andere aspecten hetzelfde blijken te zijn kunnen we gokken dat het inderdaad om dezelfde persoon gaat. Op dezelfde manier kan koppelen helpen om niet ingevulde velden alsnog in te vullen. Behalve deze plezierige aspecten heeft het koppelen van databases helaas ook minder plezierige kanten. Het is namelijk een moeilijke klus. 'Dezelfde velden' hebben vaak verschillende namen in verschillende bestanden en dan ook nog vaak een verschillende lay-out. Is de geboortedatum bijvoorbeeld één veld of zijn het er drie. Bovendien kunnen we dezelfde naam voor twee attributen in twee bestanden tegenkomen die volkomen andere aspecten van dezelfde klant beschrijven. Om databases te koppelen moet je dan ook eerst goed uitzoeken hoe de 'matching' tussen de databases ligt. Als je dan echt gaat koppelen gooit de vervuiling in de individuele bestanden nog weer roet in het eten. Immers, geen databaseprogramma ter wereld weet dat Mao Tse Tung en Mao Ze Dong dezelfde persoon zijn. Het is zaak zowel het opschonen als het koppelen met zorg te doen. Immers, zoals bij elk proces is het ook bij data mining: 'garbage in, garbage out.' Als je de bestanden gekoppeld hebt, is het zaak om na te gaan hoe betrouwbaar de uiteindelijke velden zijn. Net als traditionelere statistische technieken is data mining redelijk robuust tegen fouten in de data, maar als bekend is dat een bepaald veld veel fouten heeft is het niet echt zinvol deze in de analyse mee te nemen. Immers, resultaten die gebruik maken van dit veld zijn niet erg betrouwbaar en in de praktijk niet erg bruikbaar. Al met al is het opbouwen van een mining-bestand dus een behoorlijke hoeveelheid werk. Als je dan ook verwacht dat je bepaalde mining-taken vaker gaat uitvoeren ligt het voor de hand om de organisatie en het beheer van zulke bestanden tot een aparte taak te verheffen. In dat geval spreekt men vaak van een data warehouse. Een data warehouse is een database waarin gegevens vanuit verschillende produktiedatabases geïntegreerd opgeslagen worden ten behoeve van, bijvoorbeeld, data mining. Data warehouses hebben een aantal voordelen voor data mining. Ten eerste kan er sneller met de analyse begonnen worden. Ten tweede zorgt het ervoor dat men de resultaten van analyses op verschillende momenten kan vergelijken. Immers, het warehouse zorgt ervoor dat het mining bestand elke keer op dezelfde manier is samengesteld. Data MiningAls het mining bestand klaar is, kan het minen eindelijk beginnen. Er is geen standaard interface voor data mining-tools. Ik zal in deze sectie data minen toelichten op de manier waarop dat met Data Surveyor(2) gaat; al was het alleen maar omdat ik daar het meeste ervaring mee heb. Data mining is in de inleiding al gedefinieerd als het ontdekken van strategische informatie. In het geval van Data Surveyor is dit geoperationaliseerd als het ontdekken van interessante deelgroepen.(3)In ons voorbeeld is een groepen klanten met een relatief hoog percentage credit cards een voorbeeld van een interessante deelgroep. Voordat Data Surveyor interessante deelgroepen kan gaan zoeken zullen we eerst moeten specificeren wat een groep klanten interessant maakt. Een dergelijke specificatie heeft twee aspecten: Syntax: We moeten de vorm van mogelijk interessante deelgroepen specificeren. Dit gebeurt met behulp van descriptions. Semantiek: We moeten specificeren wat de ene deelgroep interessanter maakt in vergelijking met de andere. Dit gebeurt met een kwaliteitsfunctie, die voor elke deelgroep de mate van belangrijkheid bepaald. We zullen nu beide aspecten verder toelichten aan de hand van ons voorbeeld. DescriptionsAls een data mining systeem een interessante deelgroep vindt, zijn we natuurlijk niet geïnteresseerd in een opsomming van alle klanten in deze deelgroep. Een korte kernachtige beschrijving is in eerste instantie veel nuttiger; de technische term voor zo'n beschrijving is een description, bijvoorbeeld:
Auto = Volvo & Sport = Golf
is veel inzichtelijker als een opsomming van alle Volvorijders die golf spelen. Bovendien kan zo'n description direct worden opgevat als een 'query' op de database. Met andere woorden, als we willen weten wie de golfspelende Volvorijders zijn, dan kunnen we daar met een druk op de knop achterkomen. Het tweede grote voordeel van descriptions is dat de analist zijn domeinkennis kan gebruiken in de specificatie van welke descriptions potentieel een antwoord kunnen zijn. In ons voorbeeld weet bbi dat een description als
leeftijd in [18, 24] & geslacht = man
een aanvaardbare groep aanduidt, terwijl
leeftijd in {18, 32, 47, 56} & geslacht = man
dat niet doet. Het is immers aannemelijk dat jonge mannen een grotere voorkeur voor credit cards hebben dan gemiddeld, dat zo iets ook zou gelden voor een groep mannen van wat willekeurige leeftijden lijkt veel meer toeval. Bovendien levert de eerste description een duidelijke doelgroep voor de marketingstrategie, terwijl de tweede dat zeker niet doet. Regio's bieden een ander voorbeeld. Stel je voor dat het gebruik van een credit card regioafhankelijk is; dit zou te maken kunnen hebben met de dichtheid van credit card-acceptanten. Als het systeem dan regio's vindt waarin het gebruik hoger ligt dan gemiddeld, moeten die regio's op een kaart er ook als regio's uitzien, als een soort cirkeltje. Zo is de regio Utrecht, Vleuten/de Meern, Nieuwegein, Houten wel aanvaardbaar, terwijl Niewegein, Boskoop, Asten, Lemmer dat niet is. Tenslotte kun je Data Surveyor nog hiërarchieën meegeven. Met een hiërarchie geeft de analist bijvoorbeeld aan hoe de favoriete dranken van de klanten gegroepeerd mogen worden. Met andere woorden, het systeem mag descriptions maken die gebruik maken van:
favoriete drank = bier = {Heineken, Grolsch}
maar niet van:
favoriete drank = {Grolsch, druivensap}. Kwaliteitsfunctie>Nadat je de toelaatbare descriptions gespecificeerd hebt, moet je Data Surveyor vertellen wat zo'n descriptie interessant maakt. Dat doe je met behulp van een kwaliteitsfunctie. Dat is een functie die, gegeven een database, aan elke description een getal toevoegt. Hoe hoger het getal, hoe beter de kwaliteit van deze description.In ons voorbeeld zijn we geïnteresseerd in profielen van credit card-gebruikers; we zijn op zoek naar groepen klanten met een (relatief) hoog percentage credit card-bezitters. Hoe hoger het rela tieve aantal credit card-bezitters onder de klanten die aan een description voldoen, hoe beter die description is. Onze kwaliteitsfunctie moet dus van elke description twee dingen weten: hoeveel klanten voldoen aan deze beschrijving en hoeveel daarvan bezitten reeds een credit card. Door deze te delen hebben we dan een aanzet tot een kwaliteitsmaat. Het is alleen nog maar een aanzet omdat we nog geen rekening hebben gehouden met de statistiek. Stel dat descriptions x1 en x2 beide een fractie 0.8 opleveren, maar dat x1 een uitspraak over 5 klanten doet, terwijl x2 over 10.000 klanten gaat. Dan is x2 natuurlijk een veel betere description als x1. Immers x2 biedt een veel betrouwbaardere uitspraak dan x1. Om rekening te houden met de betrouwbaarheid van uitspraken maakt Data Surveyor gebruik van betrouwbaarheids-intervallen. Het 95 procent betrouwbaarheidsinterval voor de fractie van x1 is [0.4, 1], terwijl die voor x2 [0.79, 0.81] is. Behalve betrouwbaarheids-intervallen spelen bij data mining nog veel meer statistische aspecten een rol. Zo weten we dat hoe korter een description is, hoe betrouwbaarder de uitspraak is; dit volgt uit het Minimum Description Length Principle. Het voert te ver om in het kader van dit verhaal diep in te gaan op al deze statistische aspecten die samenhangen met kwaliteitsfuncties. Bovendien houdt Data Surveyor er al rekening mee voor de gebruiker. Zij die er meer van willen weten, worden verwezen naar [4]. Omdat statistiek in data mining zo'n belangrijke rol speelt is kan het slechts een hulpmiddel zijn voor de professionele gebruiker is. Immers, de marketeer die gebruik maakt van dit gereedschap zal genoeg van statistiek moeten weten om tot betrouwbare conclusies te komen De Data Mining TaakNu de descriptions en de kwaliteitsfunctie gespecificeerd zijn, hebben we aangegeven welke deelgroepen van ons bestand interessant zijn. Het enige wat nu nog rest is wat we met deze deelgroepen willen. Er is een aantal mogelijkheden:Ten eerste zou het kunnen zijn dat we alleen de description van de hoogste kwaliteit willen hebben. In ons voorbeeld omdat bbi alleen een mailing wil doen aan klanten met de hoogste kans dat zij op het credit cardaanbod in zullen gaan. Ten tweede zou het kunnen zijn dat we de database en daarmee de klantenkring willen partitioneren (in stukken knippen). Dat wil zeggen, dat we alle klanten in homogene groepen willen onderverdelen. Alle klanten in een groep hebben daarbij dan dezelfde kans om het credit card aanbod te accepteren. Zo'n partitionering is bijvoorbeeld nuttig als we een mailing willen doen naar 20 procent van het klantenbestand en de return on investment willen maximaliseren. In andersoortige toepassingen zouden we ook geïnteresseerd kunnen zijn in alle descriptions met een kwaliteit boven een gegeven minimum. Dit zou je bijvoorbeeld gebruiken om te bepalen welke produkten in een winkel vaak tegelijk aangeschaft worden; de zogenaamde "Basket-Analysis". In ons voorbeeld is dit minder nuttig, omdat de klanten dan aan meerdere descriptions gaan voldoen. In de data mining taak moeten we dit laatste aspect, "wat willen we", dan ook expliciet specificeren. Het vinden van resultatenAls de data mining taak gespecificeerd is, kan het systeem aan de slag. Stel, we hebben gevraagd om de groep klanten met de grootste kans op het accepteren van ons aanbod; we zoeken de description met de maximale kwaliteit.Het eenvoudigste algoritme wat deze taak oplost berekent gewoon de kwaliteit van alle descriptions, bepaalt welke de hoogste kwaliteit heeft en retourneert die als antwoord. Het voordeel van dit algoritme is dat het correct is; het levert inderdaad de gezochte description. Het nadeel is dat het zo verschrikkelijk lang duurt voordat we het antwoord krijgen, omdat het aantal descriptions dat we moeten beschouwen exponentieel is ten opzichte van de grootte van de database. Stel bijvoorbeeld dat we een database met 10 klanten hebben. Dan zijn er 2^10 - 1 = 1023 groepen klanten te verzinnen. Als we de kwaliteit van 1000 groepen per seconde kunnen berekenen, zijn we in iets meer dan een seconde klaar. Maar stel nu dat we 100 klanten hebben, dan loopt het aantal te verzinnen groepen klanten op tot:
2^100-1=1267650600228229401496703205375
Als we nog steeds de kwaliteit van 1000 groepen per seconde kunnen berekenen, dan kost het nu 10^19 jaar. Dat is langer als de leeftijd van het heelal.(4) Kortom, alle descriptions afzoeken is niet te doen. We zullen slimmere zoekmethoden moeten gebruiken. In de kunstmatige intelligentie heten dat heuristieken. Het nadeel van een heuristiek is dat we niet kunnen garanderen dat we de groep met de hoogste kwaliteit hebben gevonden. Het voordeel is dat we een redelijk goed antwoord in relatief korte tijd krijgen. Er zijn vele soorten heuristische zoekmethoden, zoals: Hill Climbers, Simulated Annealing, Taboo Search, Genetische Algoritmen en Neurale Netwerken. Welke techniek het beste is, hangt helemaal af van de specifieke data mining-taak en van allerlei karakteristieken van de mining database, zie [2]. Met andere woorden, het moet niet de taak van de gebruiker zijn om te kiezen welke techniek wordt toegepast, dat moet het data mining-systeem maar bepalen. Bovendien is het niet interessant, de resultaten die gevonden worden wel. Een auto is misschien de beste analogie. Wat voor soort motor er in de auto moet zitten, hangt af van wat je met die auto wil. Een vrachtwagenmotor presteert niet in een race-auto, maar andersom komt er ook niets van terecht. Een data mining-tool is een auto met een heleboel verschillende motoren die de juiste motor op het juiste moment inzet. Interpretatie en gebruikAls het data mining-systeem de gezochte descriptions gevonden heeft, zijn we er nog niet. Immers, de resultaten moeten nu gebruikt gaan worden. Dat is minder eenvoudig als het lijkt. Stel dat bbi de profielen wil gebruiken om haar eigen klanten aan te schrijven. Stel bovendien dat ze tot nu toe alle klanten die om zo'n kaart gevraagd hebben er een gegeven heeft. Dan kan zij de profielen recht streeks gebruiken; immers de mining database gaf een getrouwe weergave van haar klanten.Als zij echter in het verleden klanten een kaart geweigerd heeft omdat zij ze als niet-kredietwaardig beschouwde, ligt het anders. Immers, de kaarthouders die we gebruikt hebben om te bepalen wie zo'n kaart zouden willen hebben, zijn niet alleen kaarthouder maar ook kredietwaardig. Als we ons dat van te voren bedacht hadden, dan hadden we alleen in een bestand van kredietwaardige klanten gezocht en was er geen vuiltje aan de lucht. Als we het ons alleen maar achteraf realiseren, kunnen we de resultaten (met wat voorzichtigheid) nog wel gebruiken maar moeten we op een andere wijze, (handwerk) voor zorgen dat we alleen kredietwaardige klanten aanschrijven (data mining is overigens wel geschikt hiervoor). Als bbi z'n profielen zou willen gebruiken om niet-klanten tot klant te maken via een lucratief credit card aanbod, ligt de zaak nog gecompliceerder. De klanten van de bank zijn tenslotte geen onafhankelijke steekproef uit de Nederlandse bevolking. Al was het alleen maar omdat bbi een beleid toepast bij het al dan niet accepteren van nieuwe klanten. We kunnen er niet zo maar vanuit gaan dat de resultaten die we voor ons klantenbestand gevonden hebben ook gelden voor de Nederlandse bevolking. Dit is een veel moeilijker probleem, ook als we het ons van te voren al bedacht hadden. Immers, waar halen we de gegevens vandaan over niet-klanten? Een mogelijkheid is om vooraf een steekproef uit de niet-klanten te nemen. Zo zou men enige tijd iedereen die er om vraagt tot klant kunnen maken. Potentieel is dit een kostbare oplossing, maar bij zorgvuldig gebruik hoeft het niet excessief te zijn. Oplossingen achteraf bestaan ook. Zo kun je natuurlijk je profielen testen op de markt. Je neemt dan een steekproef van de Nederlandse bevolking die aan je profiel voldoet en je test of de response binnen deze groep overeenkomt met de response die je vanuit je klantenbestand verwacht. Onder statistici, econometristen en data miners heet dit probleem reject-inference. Het laatste woord over hoe dit probleem het beste kan worden opgelost is zeker nog lang niet gezegd. ConclusieOm succesvol te kunnen werken is een goed inzicht in de markt nodig. Data mining is een krachtig hulpmiddel om dat inzicht te verwerven. De resultaten die als descripties gegeven worden zijn direct te begrijpen en te gebruiken.In de kracht van data mining schuilt ook het gevaar. Het is heel gemakkelijk om met een data mining-tool elk willekeurig bestand te analyseren. Echter, om tot betrouwbare en dus bruikbare resultaten te komen, moet het hele kdd proces met zorg doorlopen worden. Als dat gebeurt, is data mining een hulpmiddel wat zich zelf terugverdient. De vraag is of data mining daarmee beter is dan de andere in zwang zijnde technieken. Er ontbreekt de ruimte om op deze vraag in te gaan. De ervaring leert echter dat als een database voldoende rijk is, je met data mining relevante en nieuwe strategische informatie boven water haalt. [1] Usama M. Fayyad, Gregory Piatetsky-Shapiro, Padhraic Smyth, and Ramasamy Uthurusamy, editors. Advances in Knowledge Discovery and Data Mining.aaai-mit Press, 1995. To appear. [2]D. Michie, D.J. Spiegelhalter, and C.C. Taylor, editors. Machine Learning, Neural and Statistical Classification. Ellis Horwood series in Artificial Intelligence. Ellis Horwood, 1994. [3]Arno Siebes. Data surveying, foundations of an inductive query language. In Usama M. Fayyad and Ramasamy Uthurusamy, editors, Proceedings of the First International Conference on Knowledge Discovery and Data Mining, pages 269 - 274, 1995. [4]Arno Siebes. On the inseparability of data mining and statistics. In Proceedings of the Mlnet Familiarization Workshop: Statistics, Machine Learning and Knowledge Discovery in Databases, pages 13 - 18, 1995. |
|