DATA MINING Hitta dolda mönster i stora mängder data Johan Rittfeldt
INNEHÅLLSFÖRTECKNING Introduktion... 1 Omfång... 1 Data Mining... 2 Definition... 2 Bakgrund... 2 Användningsområden... 2 Knowlede discovery... 3 Data mining med ID3 och C4.5... 4 Utveckling av algoritmen... 4 Konstruktion av beslutsträd... 5 Numeriska attribut... 10 Uteblivna värden... 11 Beskärning... 12 Slutord... 13 Referenser... 14
Introduktion Fångade i en tidsera där allt lagras digitalt finns en expanderande marknad för allt större databaser då fler människor kopplas upp och var individ tycks generera allt mer data. Ny data skapas i samband med att vi upprättar medlemskonto på en webbplats, handlar på kreditkortet, ringer med telefonen eller kanske tittar på videoklipp på youtube. Lagringsdensiteten på hårddiskarna ökar i takt med att priset reduceras, och nya lagringstekniker banar väg för nya produkter och användningsområden som ytterligare bidrar till en allt större mängd data. Men vad ska vi med all information till? Många företag har fått upp ögonen för den ekonomiska aspekten med data mining. I dessa enorma mängder data ligger nämligen vanor, beteenden, mönster och indikatorer på våra intressen. Att kunna extrahera användbar information av sådan typ är viktigt för många företag som strävar efter ett högre kundfokus på en konkurrensstark marknad. Givetvis är det också andra användningsområden än rent ekonomiska, det kan handla om att ställa medicinska prognoser eller som beslutshjälp vid produktdesign (Bramer, 2007). Det är inget nytt med att söka efter mönster. Det ligger i människans natur och är något vi gjort sedan urminnes tider. Jägare söker mönster i djurens vandringsbeteende, bönder efter grödornas påverkas av olika faktorer, politiker i opinionssiffror och älskare i sin partners respons. Vad som är nytt är ökade möjligheter för att hitta mönster i en allt mer komplex värld som i det närmsta svämmar över i data. Men i takt med att databaserna sväller ökar också möjligheterna för data mining där det blir det enda hoppet för att lyfta fram dolda mönster. Omfång Avsikten med uppsatsen är att ge en inblick i vad data mining innebär, dess nytta, hur det fungerar samt ge en djupare förklaring hur algoritmen ID3 är konstruerad och hur den skiljer sig mot senare versioner som C4.5. 1
Data Mining Definition Data Mining definieras som processen att upptäcka mönster i data. Processen måste vara automatisk eller (mer vanligtvis) semiautomatisk. Mönstren måste vara meningsfulla på så sätt att de leder till en fördel. Denna är ofta av ekonomisk karaktär, antingen direkt eller indirekt. Datan består undantagslöst av omfattande kvantiteter (Cox, 2008; Ian Witten 2011). Det finns två ytterligheter för hur mönster kan uttryckas; prediktivt eller deskriptivt. Vad som skiljer dem åt är framför allt huruvida beslutsstrukturen kan undersökas och resoneras kring i syfte av framtida beslut. Riktad data mining är en top-down strategi som används när man vet vad man söker efter. Den är i regel av prediktivt slag, där man vet exakt vad man önskar förutspå. Oriktad data mining är omvänt en bottom-up-strategi där man låter datan tala för sig själv. Modellen hittar mönster i datan och det är upp till användaren att avgöra om mönstren är av någon vikt (Berry & Linoff, 2000). Bakgrund Data mining började utvecklas redan på 1980-talet, men det var en långsamtgående process och under 90-talet var principen fortfarande objekt för definiering och förfining (Matthew North, 2012). Första boken om data mining skrevs 1991 av Piatetsky-Shapiro and Frawley. Men även om begreppet myntades på 90-talet så härstammar tekniken från andra områden, varav vissa är betydligt äldre. Data mining har rötter från framför allt klassisk statistik, artificiell intelligens och maskininlärning. Inom data mining används exempelvis statistiska metoder så som regressionsanalys, standardavvikelse standarddistribution, konfidensintervall med flera. Detta i syfte att studera relationer i datan. Användningsområden Sökandet efter mönster kan handla om att man önskar kunna exponera kunder för reklam som är anpassade till sin profil, ställa finansiella prognoser eller förutspå antal tv-tittare för 2
ett program. Men det är andra fördelar än bara direkt ekonomiska. Det kan handla om medicinska prognoser som att förutspå risken för återfall av bröstcancer eller att upptäcka kortbedrägerier och mycket annat (Bramer, 2007). Knowlede discovery Knowledge Discovery in Databases och data mining används ibland synonymt. Enligt Bramer (2007) kan KDD definieras som icke-trivial extrahering av tidigare okänd implicit och potentiellt användbar information från data. Data mining är här bara en del i processen, om så en central sådan, och kan ses som en applikation där en specifik algoritm extraherar mönster baserad på KDD-processens övergripande mål. Figur 1. Knowledge Discovery process Figur 1 visar ett typiskt flödesschema för hur knowledge discovery processen kan se ut. Data samlas in från diverse källor. Det kan exempelvis vara från marknadsavdelningen, försäljning eller externa källor. Ofta kommer informationen i olika format och integreras därför till ett enhetligt standardformat som gör den direkt jämförbar. Sedan flyttas datan över till en permanent lagringsplats, en så kallad data store - ofta mer benämnt som data warehouse. Datan kan här vid behov delas in i data marts/sub-avdelning i syfte att öka prestanda och förenkla användandet beroende på vilken domän man vill applicera den på. Det är framförallt när databaserna börjar svälla och bli allt mer komplexa som data marts blir aktuella (Wikipedia, data mining). I nästa steg i processen väljs aktuell data för analys 3
ut och anpassas till format hanterbart av data mining algoritmerna. Outputen producerar regler eller andra sorts mönster som så tolkas för knowledge discovery - det vill säga potentiell användbar och ny kunskap Data mining med ID3 och C4.5 Utveckling av algoritmen Några år efter sin doktorsexamen i datavetenskap startade Ross Quinlan på tidigt 1970-tal arbeta på ett program för beslutsträd. Först ut var ett enkelt system ID3 (Iterative Dichotomiser 3) som bäst hanterade attribut med nominalvärden. Arbetet pågick i två decennier och har sedemera resulterat i algoritmen C4.5 som släpptes öppet komplett med källkod och beskrivning i början av 90-talet. Vad denna klarade som ID3 inte var kapabel till var främst numeriska attribut, uteblivna värden och beskärning av beslutsträd. Den sistnämnda syftar till att åtgärda problemet med att testdata ofta producerar klassificerare som passar testdatan för tight och alltså generaliserar dåligt. För att algoritmen skulle vara användbar på riktig data så var dessa tre krav ett måste. C4.5-algoritmen med sina varianter är idag en av de mest vanligen förekommande inom data mining. Senare versioner som C5.0 har blivit en kommersiell produkt. C5.0 liksom C4.5 tycks båda producera högst likartade resultat, men fokus vid utvecklingen till den senare versionen har framför allt varit kring prestanda för att snabba upp systemet och göra det mer minneseffektivt med hjälp av olika tekniker. Enligt RuleQuest (2012) ska den även klara producera avsevärt mindre träd. Flera varianter av C4.5 finns idag på marknaden, så som exempelvis J4.8 som är data mining-programmet Wekas implementation av algoritmen. Den bygger på den sista öppna versionen C4.8 revision 8 innan den kommersiella versionen släpptes. J:et i namnet kommer från att den är skriven i Java, och finns därmed tillgänglig för alla vanliga plattformar idag (Hwitten, 2011). 4
Konstruktion av beslutsträd Metoden är beskriven utifrån Witten (2011) och går till enligt följande princip. Först väljs ett attribut att placera som rotnod, sen förgrenas vart enskild möjligt värde. Därefter upprepas processen rekursivt för var gren med endast de instanserna som når den aktuella grenen. Om vid något tillfälle alla instanser har samma klassificering vid en nod så slutar utvecklingen av den delen av trädet. Det som återstår nu är att avgöra vilket attribut som ska splittas utifrån givet set av olika klasser. Nedan presenteras exempeldata där olika väderfaktorer (attribut) avgör huruvida det blir någon lek eller inte. Tabell 1. Weather Data 5
Figur 2. Stubbar för weather data: (a) outlook, (b) temprature, (c) humidity och (d) windy. Figur 2 visar resultatet, antal yes och no, av en splitt för respektive attribut. De löven som bara innehåller en klass, det vill säga bara yes eller bara no i väderexemplet kommer inte splittas vidare och den rekursiva processen upphör vidare ner i grenen. Löv med bara en klass är vad man eftersträvar eftersom det resulterar i renare noder som alltså resulterar i högre precision i beslutsträdet. Denna renhet är vad man räknar på för att välja det attribut som producerar renast subnoder. Måttsenheten för renheten kallas för information anges i 6
bits - ej att förväxla med minnesenheten bit(s) för datorer som bara kan ha ett av två värden, vanligen 1 eller 0. Var nod associeras med en den mängd information som skulle krävas för att klassificera en ny instans som yes eller no, förutsatt att instansen förgrenar sig ner till den noden. Beräkningen startar med att respektive klasser [yes, no] summeras per lövnod. I Figur 2(a) resulterar det i: [2, 3], [4, 0] samt [3, 2]. Informationsvärdet beräknas utifrån formeln för entropi. entropy(p1, p2,, pn) = p1 log p1 p2 log p2 pn log pn info([2, 3]) = entropi(2/5, 3/5) info([2,3]) = 2/5 log2/5 3/5 log3/5 = 0.971bits info([2, 3]) = 0.971 bits - Sedan samma beräkning för de andra lövnoderna: info([4, 0]) = 0.0 bits info([3, 2]) = 0.971 bits - Om antingen yes eller no är noll, så blir informationen noll. Nästa steg är att beräkna ett snitt på informationsvärdet av dessa. Det snittet representerar den mängd information som förväntas krävas för att specificera klassen av en ny instans, givet strukturen man utgår från. snitt info([2, 3], [4, 0], [3, 2]) = (5/14) 0.971 + (4/14) 0 + (5/14) 0.971 = 0.693 bits Innan några ytterligare trädstrukturer skapas består rotnoden Figur 2(a) av nio yes- och fem no-noder. Detta innebär ett informationsvärde på: info([9, 5]) = 0.940 bits 7
Därmed kan Figur 2(a)s informationsvinst beräknas genom att subtrahera lövens genomsnittliga informationsvärde från rotnodens informationsvärde på följande vis. gain(outlook) = info([9, 5]) info([2, 3], [4, 0], [3, 2]) = 0.940 0.693 = 0.247 bits Samma procedur genomförs på resterande attribut och resulterar sedan i nedan informationsvinst. gain(outlook) = 0.247 bits gain(temperature) = 0.029 bits gain(humidity) = 0.152 bits gain(windy) = 0.048 bits Som synes resulterar outlook i störst informationsvinst. Därför utgår härefter beslutsträdet med den som rot. Proceduren fortsätter rekursivt med att försöka splitta de övriga attributen under roten enligt samma princip som innan. 8
Figur 3. Expanderade stubbar för weather data. Informationsvinsten för de tre kvarstående attributen: gain(temperature) = 0.571 bits gain(humidity) = 0.971 bits gain(windy) = 0.020 bits 9
Därav kan vi välja humidity som nästa sub-nod till outlook då den ger mest fördelaktigt informationsvärde. Och eftersom den har enhetliga klasser i löven så krävs ingen vidare splitt på grenen. I ett idealfall for fortsätter processen på samma vis med alla attributen tills löven är rena och ingen mer splitt behövs. Går inte detta att uppnå fortsätter man tills splitt inte längre är möjlig att genomföra eller när informationsvinsten är noll. Figur 4. Komplett beslutsträd för weather data Numeriska attribut Nedan följer en variant på Tabell 1 där det i stället för nominalvärden används numeriska värden för att, som i detta fallet, beskriva temperatur. Detta är alltså något som ID3 inte hanterar men dock C4.5. Innan en två-splitt eller så kallad binär-splitt genomförs rangordnas värdena. Det finns även andra metoder som exempelvis en tre-split, men nedan följer metoden för en ordinär två-vägs/binärsplit (Witten, 2011). 10
Tabell 2. weather temperature. Utmaningen ovan är att hitta vid vilket värde splitten ska ske. Det finns 11 potentiella skärpunkter. Informationsvinsten beräknas på samma vis som tidigare. Det innebär att om vi försöker bryta i mitten, vilket är var man ofta sätter tröskelvärdet, där temperature < 71,5 resulterar i fyra yes och två no liksom temperature > 71,5 ger fem yes och tre no. Informationsvärdet beräknas därmed enligt: info([4, 2], [5, 3]) = (6/14) info([4, 2]) + (8/14) info([5, 3]) = 0.939 bits Efter det mest förmånliga attributet för splitt valts, skapas en rotnod som splittar attributet och algoritmen fortsätter rekursivt på sub-noderna på samma vis som beskrivet för ID3- algoritmen. Att splitta numeriska värden på binärt innebär att man inte nödvändigtvis nyttjat all information den erbjuder till skillnad mot när vi har splittat nominalvärden. Fortsätter man splitta numeriska värden i fler nivåer resulterar det lätt i svårtolkade komplexa träd. Ett kraftfullt alternativ till binärsplit, i syfte att skapa ett enklare träd, är att testa fler olika konstanter mot de numeriska attributen och på så vis hitta en lämpligare splitt än nödvändigtvis på mitten. Uteblivna värden En vidareutveckling av ID3-algoritmen blev en nödvändighet för att också klara handskas med uteblivna värden. I riktiga databaser kan nämligen värden saknas av diverse anledningar, det kan vara felaktiga data som tagits bort, de kan ha försvunnit eller helt enkelt fattas av helt andra orsaker. Det är som regel mindre lämpligt att bara ignorera alla 11
instanser som saknar värden då de ofta kan innehålla mycket övrig användbar information. Ibland spelar attributen med saknade värden ingen roll i beslutet och då är instanserna givetvis varken bättre eller sämre än några andra. En av flera möjliga lösningar på bekymret är att hantera saknade värden som ett annat möjligt värde på attributet, exempelvis i tillägg till temperature < 71,5 och temperature > 71,5 kan det kompletteras med ett frågetecken,?, för att symbolisera saknat värde. Det skapar då en tredje gren. Detta är lämpligt om attributet som saknas är signifikant på något vis. Då behöver ingen vidare åtgärd tas. Men om det inte finns någon särskild signifikans i det faktum att en viss instans har ett saknat attributvärde, krävs en mer sofistikerad lösning. En alternativ enkel lösning till ovan är att se till till antalet element i träningsdatan som går ner i respektive gren och låta den mest populära grenen styra var instansen går ner när ett värde saknas. En mer raffinerad lösning är att använda så kallade viktscheman. Man delar då upp instanserna i delar och skickar ner element i var gren och vidare till löven av involverade subträd. För att göra splitten viktas var gren mellan 0 och 1. Vikten är proportionell till antalet instanser från tränings-settet som går ner i aktuell gren. Summan av vikterna på grenarna ska bli samma som av parent-noden. Med andra ord så blir de 1 i top-noden. En viktad instans kan splittas vidare till ytterligare sub-noder med samma regler tills de når ett löv. När respektive del av instansen nått sina löv-noder måste de återförenas utifrån vikterna som har föranlett till löven. Beräkningar på informationsvinsten och informationsration kan också tillämpas på delar av instanser, och kan därmed nyttja de beräkningsmodeller för klassificering som nämnts tidigare (Witten, 2011). Beskärning Ett fullt expanderat beslutsträd har ofta en onödigt komplex struktur, varför man introducerat beskärning för att göra det enklare och kompaktare. Två tillvägagångssätt finns möjliga; prepuning eller postpruning som alltså innebär för- eller efterbeskäring av trädet. 12
Postpruning erbjuder vissa fördelar som gör den till den mest använda, även om de bägge har sina för- och nackdelar i olika situationer. Att beskära orsakar mindre precision på tränings-settet om den skapats enligt tidigare beskriven konstruktion för trädstruktur. Detta eftersom den metoden resulterar i rena noder. Men på ett test-set så kan postpruning i stället öka precisionen. För att avgöra om en intern nod ska ersättas av ett löv eller av en sub-nod så används beräkning av error rates. Det är nödvändigt att estimera förväntad error rate vid respektive nod givet ett oberoende valt test-set för att kunna ta ett sådant beslut. Har man inget test-set kan man nyttja en teknik som kallas reduced-error pruning. Den innebär att man inte använder all given data utan undanhåller en del till ett test-set för att kunna uppskatta error raten vid respektive nod. C4.5-algoritmen estimerar i stället error baserat på tränings-datan utifrån heuristiker baserat på statistiska resonemang (Witten, 2011). Slutord Det finns ytterligare metoder för att förfina sökträden, och det går att fördjupa sig än mer i de befintliga. Mycket information finns tillgängligt fritt och spritt både i form av böcker och artiklar på internet. För egen del lyftes intresset ordentligt i takt med att förståelsen ökade, så som ofta annars. Mest intressant har ändå det varit som inte direkt omnämnt i uppgiften, nämligen att utforska analysverktyget Weka. Har upprättat ett antal egna dataset och provat olika algoritmer och sett hur de fungerar i praktiken och reagerar på olika justeringar och förutsättningar. Också undersökt verktygen för att visualisera datan för att exempelvis hitta extremvärden eller felaktigheter med mera. Mer generellt kring data mining finns många intressanta aspekter att dyka djupare på. Det är inte nödvändigtvis primärt relaterat till artificiell intelligens. Integritet är ett sådant ämne, dessutom hett i debatten kring data mining. Det är högaktuellt med stora företag som Facebook eller Google som kontinuerligt samlar in data om våra preferenser eller och vanor. En sak är dock säker; extrahering av mönster i stora databaser är på framåt march 13
Böcker Referenser Max Bramer (2007). Principles of Data Mining: Undergraduate Topics in Computer Science Michael J. A. Berry, Gordon S. Linoff (2000). Mastering Data Mining: The Art and Science of Customer Relationship Management North, D. M. (2012). Data Mining for the Masses. Witten, I. H., Frank, E., & Hall, M. A. (2011). Data Mining: Practical Machine Learning Tools and techniques (3rd ed.). Soumen Chakrabarti, Earl Cox, Eibe Frank, Ralf Hartmut Güting, Jiawei Han, Xia Jiang, Micheline Kamber, Sam S. Lightstone, Thomas P. Nadeau, Richard E. Neapolitan, Dorian Pyle, Mamdouh Refaat, Markus Schneider, Toby J. Teorey, Ian H. Witten (2008). Data Mining: Know It All Webbplatser Wikipedia. Data Warehouse. Retrieved 8 Jan, 2014, from http://en.wikipedia.org/wiki/ Data_warehouse RuleQuest. Is See5/C5.0 Better Than C4.5? Retrieved 8 Jan, 2014, from http://www.rulequest.com/ see5-comparison.html 14