Data Mining Kapitel 5: Frequent Itemsets Johannes Zschache Wintersemester 2018/19 Abteilung Datenbanken, Universität Leipzig http://dbs.uni-leipzig.de Data Mining 5-1
5-2 Data Mining Übersicht Hochdimension. Daten Locality sensitive hashing Clustering Dimension. reduction Graphdaten PageRank, SimRank Network Analysis Spam Detection Unbegrenzte Daten Filtering data streams Web advertising Queries on streams Maschinelles Lernen Support Vector Machines Decision Trees Nearest Neighbors Anwendung Recommen. Systems Association Rules Duplicate document detection
Inhaltsverzeichnis Motivation Frequent Itemsets & Assoziationsregeln A-Priori Algorithmus Park-Chen-Yu (PCY) Algorithmus Algorithmen mit weniger Durchläufen Zufallsstichprobe Savasere-Omiecinski-Navathe (SON) Algorithmus Algorithmus von Toivonen Data Mining 5-3
Motivation Große Menge an Items und große Menge an Baskets Datengrundlage: Zuordnungen von kleinen Mengen an Items zu Baskets Beispiel: Kaufverhalten im Supermarkt Welche Produkte werden von hinreichend vielen Leuten (nicht) zusammen gekauft? Klassische Regeln: Wenn jemand Bratwürste kauft, dann auch Senf. Wenn jemand Windeln kauft, dann auch Bier. Wenn jemand Coca Cola kauft, dann nicht Pepsi. Basket Items 1 Brot, Cola, Milch 2 Bier, Brot 3 Bier, Cola, Windeln, Milch 4 Bier, Brot, Windeln, Milch 5 Cola, Windeln, Milch, Bier Regeln: {Milch} --> {Cola} {Windeln, Milch} --> {Bier} Data Mining 5-4
Anwendungen Kaufverhalten für Marketing/Produktpositionierung in Supermärkten Produktempfehlungen: Kunden, die diesen Artikel gekauft haben, kauften auch Kunden, die diesen Film angesehen haben, haben auch angesehen Verwandte Konzepte: Wörter (Items) und Dokumente (Baskets) Plagiate: Dokumente (Items) und Sätze (Baskets) Nebenwirkungen von bestimmten Kombination von Medikamenten Items: Nebenwirkung und Medikament Baskets: Patienten Data Mining 5-5
Inhaltsverzeichnis Motivation Frequent Itemsets & Assoziationsregeln A-Priori Algorithmus Park-Chen-Yu (PCY) Algorithmus Algorithmen mit weniger Durchläufen Zufallsstichprobe Savasere-Omiecinski-Navathe (SON) Algorithmus Algorithmus von Toivonen Data Mining 5-6
Frequent Itemsets Frequent Itemset = Teilmenge von Items, die in vielen Baskets vorkommt Support eines Itemset I sup(i) : Anzahl (oft: Anteil) der Baskets, die alle Elemente aus I enthält Gegeben eines Schwellenwerts s, ein Itemset I ist ein Frequent Itemset, falls sup(i) s Basket Items 1 Brot, Cola, Milch 2 Bier, Brot 3 Bier, Cola, Windeln, Milch 4 Bier, Brot, Windeln, Milch 5 Cola, Windeln, Milch, Bier Data Mining 5-7
Assoziationsregeln Assoziationsregel: Wenn-Dann-Regel zu den Inhalten der Baskets Falls ein Basket die Elemente i 1, i 2,, i k enthält, dann enthält er mit hoher Wahrscheinlichkeit das Element j: i 1, i 2,, i k j Nur die interessanten Regeln sollen betrachtet werden Confidence einer Regel mit Itemset I = {i 1, i 2,, i k }: Interest einer Regel: conf I j = sup(i j ) sup(i) int I j = conf I j Pr[j] Interessant sind Regeln mit int I j > 0.5 oder int I j < 0.5 Data Mining 5-8
Beispiel: Confidence und Interest Assoziationsregel: {m, b} c sup m, b = 4 sup m, b, c = 2 conf {m, b} c = 1 2 int {m, b} c = 1 5 = 1 2 8 8 Assoziationsregel: {p} j sup p = 3 sup p, j = 3 conf {p} j = 1 int {p} j = 1 3 = 5 8 8 {m, c, b} {m, b} {m, p, b, j} {c, b} {m, p, j} {c, j, p} {m, c, b, k} {c, b} Data Mining 5-9
Die Suche nach Assoziationsregeln Problem: Finde alle Assoziationsregeln I j mit sup(i j ) s und conf(i j) c Schwierigkeit: Suche nach Frequent Itemsets Nachdem alle Frequent Itemsets I mit sup(i) s gefunden wurden: Für jedes Element j eines Frequent Itemset I, erstelle die Regel I\ j j Da I ein Frequent Itemset ist auch I\ j ein Frequent Itemset und somit wurde sowohl sup(i) als auch sup(i\ j ) schon berechnet conf I\ j j = sup(i) sup(i\ j ) Ausgabe der Regel I\ j j falls conf I\ j j c Reduzierung der Anzahl der Regeln durch Einschränkung der Frequent Itemsets auf: Maximal Frequent Itemsets: Keine direkte Übermenge ist frequent Closed Frequent Itemsets: Keine direkte Übermenge hat gleichen Support Data Mining 5-10
Inhaltsverzeichnis Motivation Frequent Itemsets & Assoziationsregeln A-Priori Algorithmus Park-Chen-Yu (PCY) Algorithmus Algorithmen mit weniger Durchläufen Zufallsstichprobe Savasere-Omiecinski-Navathe (SON) Algorithmus Algorithmus von Toivonen Data Mining 5-11
Suche nach Frequent Itemsets Annahme, dass Daten in Dateisystem auf Festplatte gespeichert Sortiert nach Basket Wenige Items pro Basket: Aufwand der Generierung aller Teilmengen eines Basket ist relativ gering Entscheidend: Anzahl der Festplattenzugriffe, da sehr viele Baskets existieren und diese nicht vollständig in Hauptspeicher passen Kosten eines Algorithmus: Anzahl der Festplattendurchläufe (Lesen aller Baskets von Festplatte) Größe des Hauptspeichers kritisch für das Speichern der Zwischenergebnisse (Häufigkeiten der Teilmengen) Auslagern der Zwischenergebnisse auf Festplatte ist nicht tolerierbar Item Item Item Item Item Item Item Item Item Item Item Item Etc. Data Mining 5-12
Zählen der Frequent Pairs Schwierigste Aufgabe ist das Auffinden häufiger Paare von Elementen Dies sind die häufigsten Teilmengen Teilmengen der Größe 3 oder höher sind selten Einmaliges Einlesen aller Baskets und Zählen im Hauptspeicher ist nicht für große Datenmengen geeignet Angenommen n verschiedene Items und 4 Byte pro Zähler n Speicherplatz für 2 = n(n 1) n2 Zähler: 2 2 2n2 Byte Bei 32 GB Hauptspeicher: n < 2 17 130 000 Damit würde weder Walmart (17 Millionen Produkte) noch Amazon (500 Millionen Produkte) auskommen Repräsentation der Zähler eines Paars {i, j} 1. Dreiecksmatrix (4 Byte pro Paar): {1,2}, {1,3},, {1,n}, {2,3}, {2,4},,{2,n}, {3,4}, 2. Liste von Tripeln [i, j, c] (spärlich besetzte Matrix; 12 Byte pro Paar) Zusätzlich: Hash-Tabelle um Items auf Zahlen abzubilden Data Mining 5-13
A-Priori Algorithmus Wichtige Eigenschaft der Frequent Itemsets: Monotonie J I sup(i) sup(j) Gegenrichtung: Falls ein Element i kein häufiges Element ist, dann ist keine Teilmenge, welches i enthält, ein Frequent Itemset A-Priori Algorithmus: Begrenzung des benötigten (Haupt-) Speicherplatzes über zweifaches Einlesen aller Daten 1. Durchlauf: Zählen aller Elemente (einelementigen Mengen) und Auswahl der häufigen Elemente über Schwellenwert s 2. Durchlauf: Zählen der vorkommenden Paare, deren beiden Elemente häufig sind Data Mining 5-14
Hauptspeicher A-Priori Algorithmus: Details Tabelle: Eindeutige Abbildung der Elemente auf die Zahlen 1,, n 1. Durchlauf: Zähler für Elemente ist einfaches Array der Länge n Nach 1. Durchlauf: Zweites Array der gleichen Länge, aber Zuordnung der häufigen Element zu neuer Nummerierung 1,, m und seltene Elemente auf 0 2. Durchlauf: Speicherung der Paare häufiger Elemente über Dreiecksmatrix der Dimension m Speichplatzbedarf Tabelle für Abbildung Liste der häufigen Elemente Liste aller möglichen Paare der häufigen Elemente Liste von Tripeln anstatt Dreiecksmatrix könnte Speicherbedarf weiter reduzieren Elemente {1,, n} Zähler für Elemente Elemente {1,, n} Häufige Elemente Zähler für Paar häufiger Elemente 1. Durchlauf 2. Durchlauf Data Mining 5-15
Frequent Triples, etc. Weiterer Durchlauf für jede Menge der Größe k C k = Kandidatenmengen: Mengen der Größe k, die aufgrund der Informationen über Mengen der Größe k-1 häufig sein könnten L k = häufige Mengen der Größe k Alle Element Zählen der Elemente Alle Paare aus häufigen Elementen Zählen der Paare Alle Tripel aus Häufigen Paaren C 1 Filter L 1 Construct C 2 Filter L 2 Construct C 3 Für eine Menge aus C k gilt: ALLE (k-1)-elementigen Teilmengen müssen in L k 1 enthalten sein Data Mining 5-16
Beispiel C 1 = {{b}, {c}, {j}, {m}, {n}, {p}} L 1 = {{b}, {c}, {j}, {m}} C 2 = {{b, c}, {b, j}, {b, m}, {c, j}, {c, m}, {j, m}} L 2 = {{b, c}, {b, m}, {c, j}, {c, m}} C 3 = {{b, c, m}} L 3 = {} Data Mining 5-17
Inhaltsverzeichnis Motivation Frequent Itemsets & Assoziationsregeln A-Priori Algorithmus Park-Chen-Yu (PCY) Algorithmus Algorithmen mit weniger Durchläufen Zufallsstichprobe Savasere-Omiecinski-Navathe (SON) Algorithmus Algorithmus von Toivonen Data Mining 5-18
Park-Chen-Yu (PCY) Algorithm Nur ein kleiner Teil des Hauptspeichers wird im 1. Durchlauf des A-Priori- Algorithmus verwendet Idee: Verwende den restlichen Speicherplatz für eine Hash-Tabelle mit möglichst vielen Buckets PCY-Algorithmus: FOR (each basket) : FOR (each item in the basket) : add 1 to item s count; FOR (each pair of items) : hash the pair to a bucket; add 1 to the count for that bucket; Data Mining 5-19
Hauptspeicher Park-Chen-Yu (PCY) Algorithm Beobachtungen: Falls ein Bucket ein häufiges Paar enthält (Support größer als Schwellenwert s), dann ist Wert dieses Bucket größer als s Auch seltene Paare (Support kleiner als Schwellenwert s) können in Buckets mit Wert größer als s vorkommen Buckets mit Wert kleiner als s können keine häufige Paare enthalten Folgerung: Alle Paare aus Buckets mit Wert kleiner als s müssen nicht im 2. Durchlauf betrachtet werden Für 2. Durchlauf: Ersetze Hash-Tabelle durch Bit-Vektor: 1 bedeutet, dass Wert des Bucket größer als s ist (Frequent Bucket) Bit-Vektor benötigt nur 1 des Speichers 32 der Hash-Tabelle (Integer: 4 Byte) Elemente {1,, n} Zähler für Elemente Hash- Tabelle 1. Durchlauf Elemente {1,, n} Häufige Elemente Bit-Vektor Zähler für Paar häufiger Elemente 2. Durchlauf Data Mining 5-20
Park-Chen-Yu (PCY) Algorithm 2. Durchlauf: Zähle ein Paar {i, j} genau dann, wenn Beide Element i und j sind häufig {i, j} wird über die Hash-Funktion auf ein Bucket mit Wert 1 im Bit-Vektor abgebildet Anmerkungen: Die Buckets der Hash-Tabelle benötigen nur wenige Bytes: man muss nur bis s zählen Je nach Hauptspeicher: große Anzahl an Buckets möglich Dennoch: Durchschnittliche Anzahl der Paare pro Bucket sollte wesentlich kleiner als s sein Weiterhin: keinen Vorteil bei Speicherung der Zählungen in Dreiecksmatrix Hash-Tabelle sollte 2/3 der Kandidaten eliminieren, damit Liste von Tripeln verwendbar und somit PCY effizienter als A-Priori Weitere Einschränkung der Kandidatenmenge über weiteren Durchlauf, der einen zweiten Bit-Vektor mit häufigen Buckets erzeugt (Multistage PCY) In manchen Fällen ist es effizient, zwei verschiedene Hash-Funktionen anzuwenden und daraus zwei kleinere Bit-Vektoren zu erzeugen (Multihash PCY) Data Mining 5-21
Inhaltsverzeichnis Motivation Frequent Itemsets & Assoziationsregeln A-Priori Algorithmus Park-Chen-Yu (PCY) Algorithmus Algorithmen mit weniger Durchläufen Zufallsstichprobe Savasere-Omiecinski-Navathe (SON) Algorithmus Algorithmus von Toivonen Data Mining 5-22
Hauptspeicher Zufallsstichprobe Ziehe Zufallsstichprobe mit Anteil p, so dass alle Baskets der Stichprobe in den Hauptspeicher passen Anwendung von A-Priori oder PCY im Hauptspeicher Nur ein Festplattendurchlauf für die Suche nach den Frequent Itemsets aller Größen, (solange die Daten und Zähler in Hauptspeicher passen) Anpassung der Schwellenwerts auf p s Vermeidung von False Positives: Verifiziere die über die Stichprobe ausgewählten Frequent Itemsets durch einen weiteren Durchlauf (benötigt weniger Speicher, da weniger Kandidaten) Reduzierung der False Negatives: Kleineren Schwellenwert 0.9 p s (benötigt mehr Speicherplatz) Kopie der Stichprobe Platz für Zähler Data Mining 5-23
Savasere-Omiecinski-Navathe (SON) SON Algorithmus: Lies wiederholt einen Teil (Chunk) des gesamten Datensatzes in Hauptspeicher Finde ALLE Frequent Itemsets mit Schwellenwert p s (wobei p der Anteil des Chunk am gesamten Datensatz) Gesamter Datensatz wird in Teilen durchlaufen und Frequent Itemsets der Chunks werden gespeichert Jede Frequent Itemset eines Chunk ist Kandidat für 2. Durchlauf: Verfizieren und Aussortieren der False Positives Keine False Negatives: Ein Itemset kann nicht im gesamten Datensatz häufig vorkommen, wenn es nicht in mindestens einem Chunk häufig vorkommt (Monotonie) Gute Eignung für MapReduce und verteiltes Dateisystem Map-Schritt: Kandidatensuche (Schlüssel ist Kandidat, Wert ist Support) Reduce-Schritt: Verifizierung Data Mining 5-24
Algorithmus von Toivonen 1. Durchlauf: Ziehen einer Zufallsstichprobe des Anteils p, die Arbeit in Hauptspeicher erlaubt Nimm die Frequent Itemsets mit leicht niedrigerem Schwellenwert, z.b. 0.9 p s, als Kandidaten Erstellen der Negativen Grenze zu Kandidaten Eine Menge ist in der Negativen Grenze falls sie kein Kandidat ist, aber alle direkten Untermengen (Untermenge mit genau einem Element weniger) Kandidaten sind Beispiel: {A,B,C,D} ist Element der Negativen Grenze, falls {A,B,C,D} nicht häufig in der Stichprobe vorkam und die Mengen {A,B,C}, {B,C,D}, {A,C,D} und {A,B,D} häufig in der Stichprobe vorkamen Beispiel: Grundmenge {A,B,C,D,E} wobei {A}, {B}, {C}, {D}, {B,C}, {C,D} häufig in Stichprobe vorkommen Negative Grenze: {E}, {A,B}, {A,C}, {A,D}, {B,D} Die anderen Paare sind nicht in Negativen Grenze, da sie entweder E enthalten oder häufig vorkommen Kein Tripel ist in Negativen Grenze Data Mining 5-25
Algorithmus von Toivonen 2. Durchlauf: Zählen der Kandidaten und der Negativen Grenze Falls kein Element der Negativen Grenze häufig vorkommt, wurden alle Frequent Itemsets gefunden Falls ein Element der Negativen Grenze häufig vorkommt, muss der Algorithmus mit neuer Zufallsstichprobe wiederholt werden (evtl. mit geringerem Schwellenwert, z.b. 0.8 p s; aber so dass Kandidaten und Negative Grenze immer noch in Hauptspeicher passen) Satz: Falls ein Itemset S häufig im gesamten Datensatz aber nicht in der Zufallsstichprobe vorkommt, dann enthält die Negative Grenze mindestens eine Menge, die häufig im gesamten Datensatz vorkommt. Beweis: Sei T die kleinste Untermenge von S die nicht häufig in der Stichprobe vorkam, aber jede Teilmenge von T kam häufig in Stichprobe vor Dann ist T in der Negativen Grenze. Da S häufig in gesamten Menge, ist auch T häufig in gesamten Menge (Monotonie) Data Mining 5-26
Referenzen, Beispiele, Übungen Kapitel 6 aus Mining of Massive Datasets : http://www.mmds.org/ Übungen: Assoziationsregeln: 6.1.5 A-Priori Algorithmus: 6.2.7 PYO Algorithmus: 6.3.1 Algorithmus von Toivonen: 6.4.2 Data Mining 5-27
Übung 6.1.5 100 verschiedene Elemente und 100 Baskets Element i ist in Basket b genau dann, wenn b durch i teilbar ist Basket 1: {1} Basket 2: {1,2} Basket 3: {1,3} Basket 4: {1,2,4} Basket 5: {1,5} Basket 6: {1,2,3,6} Basket 71: {1,71} Basket 99: {1,2,9,11,33,99} Basket 100: {1,2,4,5,10,20,25,50,100} sup({5,7}) = 2 (Baskets 35 & 70) sup({2,5,7}) = 1 (Basket 70) conf({5,7} 2) = 1/2 sup({2,3,4}) = sup({3,4}) = 8 (Baskets 12, 24, 36, 48, 60, 72, 84, 96) sup({2,3,4,5}) = 1 (Basket 60) conf({2,3,4} 5) = 1/8 Data Mining 5-30
Übungen 6.2.7: A-priori Support-Schwellenwert: 10,000 10 6 verschiedene Elemente: 4 10 6 Byte = 4MB zum Zählen N Frequent Items: 10 6 Frequent Pairs N 2 Kandidaten für Frequent Pairs M Paare aus häufigen Elementen kommen genau einmal vor Speicherbedarf der Frequent Pairs: Dreiecksmatrix: N 2 4 Byte Liste von Tripeln: M + 10 6 12 Byte Gesamter Speicherbedarf: 4 MB + 4B min N 2, M +106 3 Data Mining 5-32
Übungen 6.3.1: PCY (Schwellenwert: 4) (a) {1,2,3} {2,3,4} {3,4,5} {4,5,6} {1,3,5} {2,4,6} {1,3,4} {2,4,5} {3,5,6} {1,2,4} {2,3,5} {3,4,6} Item 1 2 3 4 5 6 sup 4 6 8 8 6 4 2 3 4 5 6 1 2 3 2 1 0 2 3 4 2 1 3 4 4 2 4 3 3 5 2 (b) h({i, j}) = i j mod 11 2 3 4 5 6 1 2 3 4 5 6 2 6 8 10 1 3 1 4 7 4 9 2 5 8 (c) Bucket 1 2 3 4 5 6 7 8 9 10 0 sup 5 5 3 6 1 3 2 6 3 2 0 Data Mining 5-37
Übungen 6.4.2: Toivonen (Schwellenwert: 4) {1,2,3} {2,3,4} {3,4,5} {4,5,6} {1,3,5} {2,4,6} {1,3,4} {2,4,5} {3,5,6} {1,2,4} {2,3,5} {3,4,6} Frequent Itemsets in Stichprobe (Schwellenwert: 1): {1}, {2}, {3}, {4}, {5}, {6}, {1,2}, {1,3}, {2,3}, {2,4}, {3,4}, {3,5}, {4,5}, {4,6}, {5,6}, {1,2,3}, {2,3,4}, {3,4,5}, {4,5,6} Negative Grenze: {1,4}, {1,5}, {1,6}, {2,5}, {2,6}, {3,6} 2 3 4 5 6 1 2 3 2 1 0 2 3 4 2 1 3 4 4 2 4 3 3 5 2 Data Mining 5-41