Rückblick Data Mining and Knowledge Discovery zielt darauf ab, verwertbare Erkenntnisse aus Daten zu gewinnen Klassifikation ordnet neue Datenpunkte in Klassen ein, deren Charakteristika vorab anhand von Trainingsdaten bestimmt wurden k-nächste Nachbarn als Klassifikationsverfahren basierend auf der Distanz zwischen Datenpunkten Naïve Bayes als probabilistisches Klassifikationsverfahren, welches häufig zur Klassifikation von Texten eingesetzt wird 32
63 Clusteranalyse Datenpunkte (zb Dokumente) sind in homogene Gruppen (cluster) einzuordnen, dabei gilt Datenpunkte der gleichen Gruppe sollen möglichst kleine Distanz zueinander haben Datenpunkt in verschiedenen Gruppen sollen möglichst große Distanz zueinander haben 0 2 4 6 8 10 12 y 0 2 4 6 8 10 12 y 0 2 4 6 8 10 12 x 0 2 4 6 8 10 12 x 33
Clusteranalyse Drei Arten von Verfahren zur Clusteranalyse repräsentantenbasierte (zb k-means, k-medoids) hierarchische (zb HAC, HDC) dichtebasierte (zb DBScan) Verfahren unterscheiden sich auch darin, ob jeder Datenpunkt einem oder mehreren Clustern mit Gewichtung zugeordnet wird (Soft-Clustering) jeder Datenpunkt einem Cluster zugeordnet werden muss oder auch als Rauschen markiert werden darf 34
631 k-means C i Jeder Cluster wird durch Punkt repräsentiert zb µ i Zentroid (bei k-means) µ i = 1 C i ÿ x j œc i x j Medoid (bei k-medoids) µ i = arg min x j œc i Clustering soll die Distanz zwischen Datenpunkten und dem Repräsentanten ihres Clusters minimieren L(C) = kÿ i=1 ÿ x l œc i d(x j, x l ) ÿ x j œc i d(x j, µ i ) 35
k-means Bestimmen des optimalen Clusterings nicht möglich C ú C ú = arg min C L(C) k-means als randomisierter iterativer Algorithmus beruht auf einer Greedy-Strategie und findet evtl nur ein lokales Minimum; je Iteration: weise Datenpunkte Cluster mit nächstem Repräsentanten zu berechne Repräsentanten neu basierend auf Datenpunkten Wiederholte Anwendung unter Beibehaltung des besten ermittelten Clusterings in der Praxis empfehlenswert 36
k-means 1 // Reprä sentanten zufä llig initialisieren 2 int t = 0; 3 for( int j=1; j <= k; j++) { 4 µ t j = random(m); 5 } 6 7 do { 8 t++; 9 10 // Cluster zurücksetzen 11 for( int j=1; j <= k; j++) { 12 C j = ÿ; 13 } 14 15 // Datenpunkte nä chstem Cluster zuweisen 16 for (x i œ D) { 17 j ú = arg min d(x i, µ (t 1) j ); j 18 C j ú = C j ú fi {x i }; 19 } 20 21 // Repräsentanten neu berechnen 22 for( int j=1; j <= k; j++) { 23 µ t j = 1 q C j x i œc j x i ; 24 } 25 26 } while 1 qk 2 j=1 d(µ(t 1) j µ t j ) > 37
Beispiel k-means in R Quelle: Zaki and Meira [4] 38
Beispiel k-means im R 2 Quelle: Zaki and Meira [4] 39
Beispiel k-means im R 2 Quelle: Zaki and Meira [4] 40
Beispiel k-means im R 2 Quelle: Zaki and Meira [4] 41
k-means k-means erzeugt konvexe Cluster, dh alle Punkte auf der Geraden zwischen zwei Datenpunkten innerhalb eines Clusters würden ebenfalls zum Cluster gehören Repräsentanten können alternativ unter Berücksichtigung der Datenpunkte initialisiert werden, zb als zufällige Auswahl von k Datenpunkten Alternatives Konvergenzkriterium überprüft, ob sich die Zusammensetzung der Cluster geändert hat, dh ob mindestens ein Datenpunkt Cluster gewechselt hat 42
64 Assoziationsanalyse Assoziationsregeln (association rules) beschreiben Zusammenhänge zwischen gemeinsam auftretenden Merkmalen Warenkorbanalyse als typische Anwendung; Assoziationsregeln dann zb {Chips, Windeln} {Bier} {Salsa, Guacamole} {Nachos} ÈStar Wars 1, Star Wars 2 Í ÈStar Wars 3 Í 43
641 Häufige Artikelmengen (frequent itemsets) Betrachte eine Menge von bekannten Artikeln (items) I = { x 1,x 2,,x m } Transaktionsdatenbank D ist eine Menge von Transaktionen der Form (t, X ) mit t œ N als eindeutige Transaktions-ID X I als Menge enthaltener Artikel (itemset) Beispiel: I = ; Brezeln, Bier, Chips, Cola, Wurst, Kaese, Brot, Birnen, < D = Y _] _[ (1, {Bier, Cola}), (2, {Wurst, Chips, Birnen}), (3, {Bier, Cola}), (4, {Kaese, Bier, Cola}), (6, {Brot, Wurst, Kaese}), (7, {Brot, Wurst, Birnen}), (8, {Birnen, Brot}), Z _^ _\ 44
Support einer Artikelmenge Betrachten wir eine Artikelmenge C, so bezeichnet ihr (absoluter) Support die Anzahl von Transaktionen, in deren Artikelmengen C enthalten ist sup(c, D) = {(t, X) œ D : C X } sup({bier},d)=3 sup({cola},d)=3 sup({cola, Bier}, D)=3 sup({brot, Wurst}, D)=2 sup({birnen, Bier}, D)=0 D = Y _] _[ (1, {Bier, Cola}), (2, {Wurst, Chips, Birnen}), (3, {Bier, Cola}), (4, {Kaese, Bier, Cola}), (6, {Brot, Wurst, Kaese}), (7, {Brot, Wurst, Birnen}), (8, {Birnen, Brot}), Z _^ _\ 45
Bestimmen häufiger Artikelmengen Bestimmen häufiger Artikelmengen (frequent itemset mining) nutzt Anti-Monotonie des Supports aus; für zwei beliebige Artikelmengen X und Y gilt X Y sup(x) Ø sup(y ) Beispiel: Betrachten wir die beiden Artikelmengen X = {Bier} Y = {Bier, Cola} so wissen wir, dass die Artikelmenge Y höchstens so häufig vorkommen kann wie die Artikelmenge X 46
Bestimmen häufiger Artikelmengen Anti-Monotonie erlaubt die betrachteten Artikelmengen stark einzuschränken (pruning); wissen wir, dass die Artikelmenge X weniger häufig als minsup vorkommt, so wissen wir dass alle Obermengen Y X auch weniger häufig vorkommen 47
A-Priori Algorithmus A-Priori Algorithmus findet alle Artikelmengen (frequent itemsets) in einer Transaktionsdatenbank, die häufiger als minsup vorkommen iterativer Algorithmus, der sich in der i-ten Iteration Artikelmengen der Kardinalität i anschaut jede Iteration besteht aus zwei Phasen Generierung von Kandidaten-Artikelmengen der Größe i aus häufigen Artikelmengen der Größe (i-1) Ausputzen (pruning) der Kandidaten-Artikelmengen mittels Durchlaufs durch die Transaktionsdatenbank; nur jene mit Support größer gleich minsup bleiben erhalten stoppt, wenn in einer Iteration keine häufigen Artikelmengen gefunden wurden 48
A-Priori Algorithmus 1 // Hä ufige Artikelmengen mit einem Element bestimmen 2 F 1 = {{i} : i œ I sup({i},d) Ø minsup}; 3 4 // Artikelmengen steigender Kardinalität betrachten 5 int k = 2; 6 while(f k 1 = ÿ) { 7 8 // Generiere Kandidaten - Artikelmengen der Größe k 9 C k = {a fi b : a œ F k 1 b œ F k 1 a fl b =(k 2)}; 10 11 // Ausputzen der Kandidaten - Artikelmengen 12 F k = {a œ C k : sup(a, D) Ø minsup}; 13 14 k = k + 1; 15 } 16 17 return F = t k 1 i=1 F i 49
Beispiel A-Priori Algorithmus Die folgende Transaktionsdatenbank sei gegeben Y Z (1, {A, B, C}), (2, {B,C}), _] (3, {A, C}), (4, {A, D}), _^ D = (5, {C, D}), (6, {A, C, D}), (7, {A, C, D}), (8, {A, B, D}), _[ _\ (9, {A, B}), (10, {B,C,E}) es sollen Artikelmengen für minsup = 2 bestimmt werden F 1 = {{A}, {B}, {C}, {D}} 50
Beispiel A-Priori Algorithmus Erste Iteration (k=2) C 2 = {{A, B}, {A, C}, {A, D}, {B,C}, {B,D}, {C, D}} F 2 = {{A, B}, {A, C}, {A, D}, {B,C}, {C, D}} Zweite Iteration (k=3) C 3 = {{A, B, C}, {A, B, D}, {A, C, D}, {B,C,D}} F 3 = {{A, C, D}} Dritte Iteration (k=4) C 4 = ÿ F 4 = ÿ 51
642 Assoziationsregeln Assoziationsregeln erfassen starke Zusammenhänge zwischen dem Auftreten einer Artikelmenge A und einer Artikelmenge B in Transaktionen A B Nur solche Assoziationsregeln sollen gefunden werden, die häufig genug beobachtet wurden (support) eine hohe Vorhersagekraft haben (confidence) überraschend oder unerwartet sind (lift) 52
Support einer Assoziationsregel Betrachten wir eine Assoziationsregel A B mit Artikelmengen A und B, so ist ihr Support definiert als sup(a B) =sup(a fi B,D) sup({bier} {Cola}) =3 sup({bier, Cola} {Kaese}) =1 D = Y _] _[ (1, {Bier, Cola}), (2, {Wurst, Chips, Birnen}), (3, {Bier, Cola}), (4, {Kaese, Bier, Cola}), (6, {Brot, Wurst, Kaese}), (7, {Brot, Wurst, Birnen}), (8, {Birnen, Brot}), Z _^ _\ 53
Konfidenz einer Assoziationsregel Betrachten wir eine Assoziationsregel A B mit Artikelmengen A und B, so ist ihre Konfidenz (confidence) definiert als conf (A B) = sup(a fi B,D) sup(a, D) conf ({Bier} {Cola}) = 3 3 conf ({Bier, Cola} {Kaese}) = 1 3 D = Y _] _[ (1, {Bier, Cola}), (2, {Wurst, Chips, Birnen}), (3, {Bier, Cola}), (4, {Kaese, Bier, Cola}), (6, {Brot, Wurst, Kaese}), (7, {Brot, Wurst, Birnen}), (8, {Birnen, Brot}), Z _^ _\ 54
Bestimmen von Assoziationsregeln Man möchte nun für eine Transaktionsdatenbank D alle Assoziationsregeln A B bestimmen, so dass gilt sup(a B) Ø minsup, dh man ist an Assoziationsregeln, die häufiger als der Parameter minsup beobachtet wurden conf (A B) Ø minconf, dh nur Assoziationsregeln mit Konfidenz höher als Parameter minconf zu bestimmen Vorgehensweise: 1 Bestimme häufige Artikelmengen C mit sup(c) Ø minsup 2 Leite aus häufigen Artikelmengen Assoziationsregeln ab 55
Ableiten von Assoziationsregeln Assoziationsregeln lassen sich aus den gefundenen häufigen Artikelmengen wie folgt ableiten betrachte jede häufige Artikelmenge X für jede echte Teilmenge Y X, überprüfe die Konfidenz der Assoziationsregel Y => (X \ Y), dh berechne den Wert sup(x, D) / sup(y, D), und behalte die Assoziationsregel, wenn der Wert größer gleich minconf ist Jede so aus einer häufigen Artikelmengen X generierte Assoziationsregel ist ebenfalls häufig, dh es gilt sup(y => (X \ Y)) minsup 56
Ableiten von Assoziationsregeln 1 // Menge gefundener Assoziationsregeln 2 AR = ÿ; 3 4 // Betrachte hä ufige Artikelmengen 5 for (X œ F : X Ø 2) { 6 7 // Betrachte echte Teilmengen 8 for(y µ X ) { 9 10 // Bestimme Konfidenz der Regel Y => (Y \ X) 11 c = sup(x, D)/sup(Y,D); 12 13 // Konfidenz größer gleich minconf? 14 if (c >= minconf ) { 15 AR = AR fi { Y (X \ Y ) } 16 } 17 } 18 } 19 20 return AR; 57
Beispiel Ableiten von Assoziationsregeln Die folgende Transaktionsdatenbank sei gegeben Y Z (1, {A, B, C}), (2, {B,C}), _] (3, {A, C}), (4, {A, D}), _^ D = (5, {C, D}), (6, {A, C, D}), (7, {A, C, D}), (8, {A, B, D}), _[ _\ (9, {A, B}), (10, {B,C,E}) es sollen Assoziationsregeln für minsup = 2 und minconf = 06 bestimmt werden 58
Beispiel Ableiten von Assoziationsregeln Folgende häufige Artikelmengen wurden bestimmt F = Y _] _[ {A} : 7, {B} : 5, {C} : 7, {D} : 5, {A, B} : 3, {A, C} : 5, {A, D} : 4, {B,C} : 3, {C, D} : 3 {A, C, D} : 2 Z _^ _\ Daraus lassen sich die folgenden Assoziationsregeln mit Konfidenz größer gleich minconf = 06 ableiten {B} {A} : 3/5 {A} {C} : 5/7 {C} {A} : 5/7 {D} {A} : 4/5 {B} {C} : 3/5 {D} {C} : 3/5 {C, D} {A} : 2/3 59
Assoziationsregeln mit Generalisierungen Artikel lassen sich häufig in Kategorien einteilen, beispielsweise Produkte (zb Chips) in Produktkategorien (zb Snacks) Lebensmittel Artikel können in einer Taxonomie eingeordnet sein und es kann mehrere Ebenen allgemeinerer Produktkategorien geben Chips Snacks Flips Assoziationsregeln mit Generalisierungen zb {Cola, Bier} {Snacks} {Thinkpad X1 } {Drucker} 60
Assoziationsregeln mit Generalisierungen Assoziationsregeln mit Generalisierungen lassen sich mit bekannten Verfahren wie A-Priori oder FP-Growth bestimmen, sofern die Transaktionsdatenbank vorab erweitert wird Zu einem Artikel x i seien cat(x i ) seine Produktkategorien; wir definieren eine erweiterte Transaktionsdatenbank als I D Õ = (t, X Õ ) (t, X) œ D X Õ = X fi J cat(x) xœx 61
Assoziationsregeln mit Generalisierungen Beispiel: {Cola, Flips, Chips} wird zu {Cola, Flips, Chips, Snacks, Drinks, Lebensmittel} Lebensmittel Snacks Drinks Chips Flips Cola 62
643 Häufige Sequenzen (frequent sequences) In vielen Anwendungen spielt die Reihenfolge, in der Elemente (zb Artikel) auftreten, eine Rolle zb Filme in Online-Videothek werden von Kunden geschaut URLs innerhalb einer Website von Besuchern aufgerufen Wörter in natürlichsprachlichen Texten organische Basen (A, T, G, C) in einer DNA Zustände (zb Fehler) in einem System Man kann häufig auftretende Sequenzen in solchen Daten identifizieren, um beispielsweise wiederum Assoziationsregeln zu bestimmen 63
Sequenzen Mögliche Anwendungen solcher Assoziationsregeln sind Produktempfehlungen (zb Online-Videothek) Unterstützung des Benutzers bei der Texteingabe (zb auf Smartphone oder in Suchmaschinen) Vorhersage des nächsten Zustands eines Systems 64
Alphabet, Sequenz, Teilsequenz Betrachte ein Alphabet Σ von Symbolen (zb Zeichen) und Σ * bezeichne die Menge aller Folgen über diesem Alphabet es sei s eine Sequenz über dem Alphabet Σ s = n ist die Länge der Sequenz s s[i:j] ist eine zusammenhängende Teilsequenz von s s[1:i] ist eine Präfix der Länge i von s s[i:n] ist eine Suffix der Länge (n i + 1) von s Betrachte Alphabet Σ = {a, b, c} und s = <a b b a c>, dann s = 5, s[2:4] = <b b a>, s[1:3] = <a b b> und s[4:n] = <a c> 65
Alphabet, Sequenz, Teilsequenz Sequenz r heißt Teilsequenz von s, r s, wenn es eine Abbildung :[1, r ] æ [1, s ] gibt, so dass gilt 1 Æ i Æ r : r[i] =s[ (i)] 1 Æ i, j Æ r : i<j (i) < (j) Beispiel: r = <a b a c> ist Teilsequenz von s = <a b a a b c> r = <a a b c> ist keine Teilsequenz von s = <a b a a c c> Sequenzdatenbank D Σ * ist eine Menge von Folgen 66
Support Support einer Sequenz r ist definiert als sup(r, D) = {s œ D : r s} Anti-Monotonie des Supports auch für Sequenzen, dh: r s sup(r) Ø sup(s) Verfahren zum Bestimmen häufiger Sequenzen nutzen diese Eigenschaft aus, um in einer gegebenen Sequenzdatenbank D alle Sequenzen zu finden, die Support von mindestens minsup haben 67
GSP GSP ist wie A-Priori eine Algorithmus, der auf einer Generierung und Ausputzen von Kandidaten beruht i-te Iteration betrachtet Sequenzen der Länge i jede Iteration besteht aus zwei Phasen Generierung von Kandidaten-Sequenzen der Länge i aus häufigen Sequenzen der Länge (i-1) Ausputzen (pruning) der Kandidaten-Sequenzen mittels Durchlaufs durch die Sequenzdatenbank; nur jene mit Support größer gleich minsup bleiben erhalten 68
GSP 1 // Hä ufige Sequenzen aus einem Symbol bestimmen 2 F 1 = {ÈiÍ : i œ sup(èií,d) Ø minsup}; 3 4 // Artikelmengen steigender Kardinalität betrachten 5 int k = 2; 6 while(f k 1 = ÿ) { 7 8 // Generiere Kandidaten - Sequenzen der Lä nge k 9 C k = {r + s[k 1] : r œ F k 1 s œ F k 1 r[1 : k 2] = s[1 : k 2]}; 10 11 // Ausputzen der Kandidaten - Sequenzen 12 F k = {r œ C k : sup(r, D) Ø minsup}; 13 14 k = k + 1; 15 } 16 17 return F = t k 1 i=1 F i 69
Beispiel GSP Die folgende Sequenzdatenbank sei gegeben Y Z Èa abí ÈbcdÍ _] Èb abí ÈcaÍ _^ D = Èd aí ÈbdaÍ Èb cbí ÈbaÍ _[ _\ Èc cí ÈaceÍ und es sollen häufige Sequenzen für minsup = 2 bestimmt werden F 1 = {ÈaÍ, ÈbÍ, ÈcÍ, ÈdÍ} 70
Beispiel GSP Erste Iteration (k=2) ; ÈaaÍ, Èa bí, Èa cí, Èa dí, Èb aí, Èb bí, Èb cí, Èb dí, C 2 = Èc aí, Èc bí, Èc cí, Èc dí, Èd aí, Èd bí, Èd cí, Èd dí F 2 = ) ÈabÍ, Èb aí, Èb bí, Èb cí, Èb dí, Èd aí * < Zweite Iteration (k=3) Y Èa bbí, _] Èb abí, Èb aaí, Èb abí, Èb ací, Èb adí, C 3 = Èb baí, Èb bbí, Èb bcí, Èb bdí, Èb caí, Èb cbí, Èb ccí, Èb cdí, _[ Èb daí, Èb dbí, Èb dcí, Èb ddí Z _^ _\ F 3 = ÿ 71
72 GSP GSP kann als Breitensuche (breadth-first search) auf dem Präfixbaum aller Sequenzen interpretiert werden F 1 F 2 ÿ a a b c d e b a b c d e c a b c d e d a b c d e e a b c d e
Zusammenfassung Clustering gruppiert Datenpunkte in Gruppen, so dass Datenpunkte innerhalb einer Gruppe homogen, über Gruppen hinweg jedoch heterogen sind Assoziationsregeln decken Zusammenhänge in Daten auf (zb Warenkörbe) für Produktempfehlungen oä A-Priori zum Finden häufiger Artikelmengen sowie GSP zum Finden häufiger Sequenzen betrachten Kandidaten aufsteigender Größe und nutzen die Anti-Monotonie des Supports aus, um deren Anzahl zu reduzieren 73
Literatur [1] C D Manning, P Raghavan, H Schütze: Information Retrieval, Cambridge University Press, 2008 (Kapitel 14 & 16) [2] M J Zaki und W Meira Jr: Data Mining and Analysis, Cambridge University Press, 2014 (Kapitel 8-10 & 13) http://wwwdataminingbookinfo 74