FernUniversität in Hagen
Seminar 01912 „Data Mining“
im Sommersemester 2008
„Häufige Muster und Assoziationsregeln“
Thema 1.1.1
Der Apriori-Algorithmus
Referentin: Olga Riener
1. Einführung ...3
2. Formale Notationen ...8
3. Def: Assoziationsproblem...14
4. Basisalgorithmen zur Entdeckung von Assoziationsregeln...16
5. Apriori-Algorithmus ...18
6. Apriori-Erweiterungen ...29
7. Sonstige Ansätze zur Effizienzsteigerung von Apriori ...34
8. Fazit ...41
1. Einführung
Was ist Data Mining?
Erfolgsrezept in vielen Bereichen = Information + richtige Auswertung dieser Information.
Datenbanken nehmen große Datenbestände auf.
(Lagerbestände, Auftragsdaten, Verkaufs- und Umsatzdaten, Personendaten, usw.)
Der KDD-Einsatz („Knowledge Discovery in Databases“) entdeckt und interpretiert das nützliche Wissen aus diesen Daten.
Data Mining ist das Herzstück des KDD-Prozesses.
„Unter Data Mining versteht man das systematische (in der Regel automatisierte oder halbautomatische) Entdecken und Extrahieren von Strukturen und Beziehungen in großen Datenmengen.“
Anwendungsbeispiel des Data Mining
Die Warenkorbanalyse ist einer der geläufigsten Anwendungsbeispiele des Data Mining.
Hier geht es um die Frage: „Welche Produkte werden häufig zusammen gekauft?“
Erkenntnisse:
“Kauft ein Kunde Milch und Butter, besteht eine große Wahrscheinlichkeit, dass er sich auch noch für Brot entscheidet.”
Hm-m-m, welche Produkte werden bei uns häufig zusammen gekauft?
Kunde 1: Brot, Milch, Butter Kunde 2: Brot, Zucker, Milch
Kunde 3: Brot, Milch, Butter, Mehl
Kunde 4: Zucker, Sahne
Aufgabenbereiche und Methoden des Data Mining
Aufgabe Aufgabenstellung Wesentliche Methoden
Segmentierung Bildung von Klassen aufgrund von Ähnlichkeiten der Objekte.
- Clusteranalyse - Neuronale Netze
Klassifikation Identifikation der Klassenzugehörigkeit von Objekten auf der Basis gegebener Merkmale.
- Diskriminanzanalyse - Neuronale Netze - Entscheidungsbäume
Vorhersage
Prognose der Werte einer abhängigen kontinuierlichen Variable auf Basis einer funktionalen Beziehung.
- Regressionsanalyse - Neuronale Netze - Entscheidungsbäume
Assoziation Aufdecken von strukturellen Zusammenhängen in Datenbasen mit Hilfe von Regeln.
- Assoziationsanalyse
Einsatzgebiete des Data Mining
Marketing
Kundensegmentierung
Responseanalyse von Werbemitteln
Warenkorbanalyse
Storno-/Reklamations-/Kündigungsanalyse
Finanzdienstleistungen
Kreditrisikobewertung
Prävention des Kreditkartenmissbrauchs
Bildung von Versicherungsrisikoklassen
Beschaffung/Produktion
Materialbedarfsplanung
Qualitätssicherung und Kontrolle
Controlling
Ergebnisabweichungsanalyse
Entdecken von Controlling-Mustern
2. Formale Notationen
Gegeben:
Definition Beispiel
F: Menge von eindeutigen Transaktionsbezeichnern ID-Nummern der Kaufvorgänge O: Menge von Objektbezeichnern (items) Alle zum Verkauf stehenden Waren T = (TID, I): Transaktion, wo TID F und I O Kaufvorgang eines Kunden
I = {i1 , i2 , ... , ik}: Elemente (items) einer Transaktion Gekaufte Waren bei einem Einkauf D = T : Menge aller Transaktionen Verkaufsdatenbank
Assoziationsregel
eine Aussage der Form: „Wenn ein Ereignis X eingetreten ist, dann besteht eine hohe Wahrscheinlichkeit, dass auch Ereignis Y eintritt“.
Für X,Y O, X Y= ist X Y eine Assoziationsregel.
Eine Transaktion T=(TID,I) erfüllt eine Transaktionsregel R: X Y gdw. (X Y) .
Notation: T R.
Arten der Assoziationsregeln:
- nützliche Assoziationsregeln - syntaktisch triviale Assoziationsregeln - semantisch triviale Assoziationsregeln - unerklärliche Assoziationsregeln
Unterstützungsgrad (Support)
Seien F, O und D wie oben definiert.
Für ein itemset X O ist der Unterstützungsgrad (support) von X in D wie folgt definiert:
|{ TD| T=(TID,I), X I }|
supportD(X) =
|D|
Somit misst supportD(X) den (prozentualen) Anteil der Transaktionen mit X in der Menge aller Transaktionen D an.
Der Unterstützungsgrad (support) einer Assoziationsregel R: (A B) in D ist wie folgt definiert:
|{T D | T=(TID,I), (A ) I }|
supportD(A = = support D(A
|D|
Offensichtlich misst supportD(A die statistische Signifikanz der Regel R und wird als der (prozentuale) Anteil der Transaktionen mit (A B) in der Menge aller Transaktionen D berechnet.
Vertrauensgrad (confidence)
Die Konfidenz misst die Sicherheit der entdeckten Assoziationsregel und präsentiert somit die Stärke bzw. den Vertrauensgrad für dieser Regel.
Die Konfidenz ist der (prozentuale) Anteil der Transaktionen mit (X Y) in der Menge der Transaktionen D, deren Itemsets X enthalten :
|{T D | T=(TID,I), (X Y) I }| supportD(X Y)
confidenceD(X Y) = =
|{T D | T=(TID,I), X I }| supportD(X)
Attributwertmenge (itemset)
Eine Menge aus einem oder mehreren items einer Transaktion wird als Muster oder als Attributwertmenge (itemset) bezeichnet
Z.B. Muster ({Milch, Brot}) in einer Kauftransaktion.
k-Attributwertmenge (k-itemset)
Eine aus k items bestehende Attributwertmenge
Häufiges Muster
Ein häufiges Muster ist eine Attributwertmenge M O mit einem Unterstützungsgrad größer als eine vorgegebene minimale Unterstützung min_sup. D.h. der Anteil der Transaktionen in D mit dieser Attributwertmenge muss mindestens min_sup sein:
supportD(X) ≥ min_sup
Beispiel: Formale Notationen
Assoziationsregel
„Kauft ein Kunde Brot und Butter, so kauft er auch Milch“
Regel: {Brot, Butter } {Milch}
Unterstützunggrad (support)
support({Brot}) = 5/6 = 83.3%
support({Milch},{Butter}) = 3/6 = 50%
support({Brot},{Milch}) = 4/6 = 66,6 %
Einkaufstransaktionen
TID Attribute
100 Brot, Milch, Butter 200 Brot, Milch, Käse 300 Brot, Marmelade 400 Milch, Butter, Brot
500 Brot, Milch, Butter, Käse 600 Marmelade
Vertrauensgrad (confidence)
support({Brot}{Milch}) 2/3
confidence(Brot Milch) = = = 80%
support({Brot}) 5/6 Häufige Muster (min_sup=45%)
Die Attributwertmengen ({Brot}), ({Milch},{Butter}), ({Brot},{Milch}) sind häufige Muster.
Die Attributwertmengen ({Butter, Käse}),(Marmelade}) sind keine häufigen Muster.
3. Def: Assoziationsproblem
Die Entdeckung interessanter Zusammenhänge in größeren Datenbeständen erfolgt durch die Suche nach allen Assoziationsregeln.
Gegeben:
Menge D der Transaktionen
ein minimaler Unterstützungsgrad (support) min_sup;
ein minimaler Vertrauensgrad (confidence) min_conf.
Gesucht:
alle Assoziationsregel X Y, so dass
support(X Y) min_sup
confidence(X Y) min_conf
4. Basisalgorithmen zur Entdeckung von
Assoziationsregeln
AIS-Algorithmus
(Agrawal, Imielinski and Swami, 1993) Der erste Algorithmus zur Generierung von einfachen Assoziationsregeln.
Die potentiellen häufigen Attributwertmengen werden beim Scannen der Datenbank „on the fly" generiert und gezählt (sehr rechenintensiv).
SETM-Algorithmus
(Houtsma und Swami, 1993) Motivation: SQL-Nutzung für die Suche nach Assoziationsregeln.
Die potentiellen häufigen Attributwertmengen (analog dem AIS-Algorithmus) werden basierend auf Transformationen der Datenbank sozusagen „on the fly" generiert.
Die Aufzählung der Kandidaten ist ein separater Schritt.
Nachteile von AIS und SETM
Das überflüssige Generieren und Aufzählen der Kandidaten, die sich später als nicht häufig erweisen.
5. Apriori-Algorithmus
Apriori-Vorgehen
(Rakesh Agrawal und Ramakrishnan Srikant, 1994)
Erste Phase:
Die Suche nach häufigen Mustern (Attributwertmengen) mit dem eigentlichen Apriori- Algorithmus.
Zweite Phase:
In der zweiten Phase werden aus diesen häufigen Mustern Regeln gebildet.
Apriori- Grundidee
Bei der Ermittlung der häufigen Muster (Attributwertmengen) wird „a priori“ gesetztes Wissen (vorausgesetztes Wissen) verwendet:
Jede nichtleere Teilmenge einer häufigen Attributwertmenge muss auch eine häufige Attributwertmenge sein.
Dieses „a priori“-Wissen wird als nicht-monotone Eigenschaft des Unterstützungsgrads aufgefasst:
X,Y : ( X Y ) support(X) support(Y)
Diese Eigenschaft hilft im Apriori-Algorithmus den Suchraum zu verkleinern und alle Obermengen der aussichtslosen k-elementigen Attributwertmengen für weitere Iteration zu ignorieren.
Konventionen
Ck (k 1) - die Menge aller k-elementigen potentiell häufigen Attributwertmengen.
Lk (k 1) - die Menge aller k-elementigen häufigen Attributwertmengen.
Apriori-Algorithmus: Aufbau
Initialisiere die Menge der häufigen 1-elementigen Attributwertmengen
1. Join-Phase, die Ck–Menge wird erzeugt, indem die (k-1)-Attributwertmenge Lk-1 mit sich selbst vereinigt wird.
2. Pruning-Phase, aus Ck–Menge werden alle k-elementigen Attributwertmengen entfernt, die eine Teilmenge enthalten, welche nicht häufig ist. (Apriori-Eigenschaft)
3. Die übrig gebliebenen Kandidaten aus Ck werden an Hand der Datenbasis überprüft, ob diese wiederum häufig sind. Die Kandidaten, die diesen Test bestehen, werden in die Menge Lk aufgenommen.
Wiederhole 1-3 so oft, bis keine weitere häufige Attributwertmenge gefunden werden kann.
Der Apriori-Algorithmus: Pseudo-Code
( 1) L1 = {häufige 1-Attributenwertmenge};
( 2) for ( k=2 ; Lk-1 ≠ { } ; k++ ) do begin
( 3) Ck= apriori-gen(Lk-1 ); // Berechnung neuer Kandidaten ( 4) for all Transaktionen t D do begin
( 5) Ct = subset(Ck,t) ; // Berechnung aller in t enthaltene Kandidaten ( 6) for all Kandidaten c Ct do
( 7) c.count++; //
( 8) end
( 9) Lk = {c Ck | c.count >= minsup}
(10) end
(11) return: k Lk
Prozedur Apriori-gen: Kandidat-Generierung
Berechnet k-elementigen potentiell häufigen Attributwertmengen procedure apriori-gen(Lk-1: (k-1)-Attributenwertmenge)
//Join-Schritt ( 1) insert into Ck
( 2) select p.item1 , p.item2 , …p.itemk-1 , q.itemk-1 ( 3) from Lk-1 p , Lk-1 q
( 4) where p.item1=q.item1 ,….,.p.item k-2=q. item k-2 , p.item k-1<q. item k-1
// Prune-Schritt
( 5) for all itemsets c Ck do
( 6) for all (k-1)–subset s of c do ( 7) if ( s Lk-1) then
( 8) delete c from Ck end procedure
Subroutine subset
Testet ob die übrig gebliebenen Kandidaten aus Ck auch den vorgegebenen Unterstützungsgrad min_sup besitzen.
Erfordert einen kompletten DB-Durchlauf.
Effiziente Implementierung ist sehr wichtig.
Hierfür wird ein Hashverfahren angewendet und die k-elementigen Kandidatmengen Ck in einem Hash-Tree gespeichert.
Der Apriori-Algorithmus: Beispiel
Geforderte minimale Unterstützungsgrad für eine häufige Attributwertmenge ist min_sup=50%
Transaktionen 1. Iteration
TID Gekaufte Artikel C1 – Menge
100 {a, b, c} Itemset Support
200 {a, b, d} {a} 5/6 = 83,3 % L1 – Menge
300 {a, e} {b} 4/6 = 66,6 % Itemset Support
400 {a, b, c} {c} 3/6 = 50 % {a} 5/6 = 83,3 %
500 {a, b, c, d} {d} 2/6 = 33,3 % {b} 4/6 = 66,6 %
600 {e} {e} 2/6 = 33,3 % {c} 3/6 = 50 %
2. Iteration 3. Iteration
C2 – Menge L2 – Menge
Itemset Support Itemset Support
{a, b} 4/6 = 66,6 % {a, b} 4/6 = 66,6 % C3 – Menge L3 – Menge
{a, c} 3/6 = 50 % {a, c} 3/6 = 50 % Itemset Support Itemset Support
{b, c} 3/6 = 50 % {b, c} 3/6 = 50 % {a, b, c} 3/6 = 50 % {a, b, c} 3/6 = 50 %
4. Iteration
C4 – Menge L4 – Menge
Itemset Support Itemset Support
{} {}
Erkennung der Assoziationsregeln
Gegebenen (II Phase des Apriori-Verfahrens):
sämtliche häufige Muster (X Y) eines Datenbestandes, wo support(X Y) min_sup
Gesucht:
die Regeln (X Y) mit confidence(X Y) min_conf
Vorgehen:
Für jede häufige Attributwertmenge l werden nicht leere Teilmengen von l gebildet
Für jede nicht leere Teilmenge s von l wird die Regel „s (l-s)“ generiert, falls
support(l)
≥ min_conf support(s)
Erkennung der Assoziationsregeln: Beispiel
(Fortführung des Apriori- Beispiels)
Als Ergebnis des Gesamtverfahrens werden nur diejenigen Assoziationsregeln ausgegeben, welche mindestens den vorgegebenen Vertrauensgrad min_conf=75 % besitzen.
Regeln mit Support
Erfüllende Transaktionen
Unterstützungsgrad (support)
Vertrauensgrad (confidence)
{a} → {b} 100, 200, 400, 500 66 % 80 %
{b} → {a} 100, 200, 400, 500 66 % 100 %
{b} → {c} 100, 400, 500 50 % 75 %
{c} → {b} 100, 400, 500 50 % 100 %
{a} → {c} 100, 400, 500 50 % 60 %
{c} → {a} 100, 400, 500 50 % 100 %
{a, c} → {b} 100, 400, 500 50 % 100 %
{b, a} → {c} 100, 400, 500 50 % 75 %
{c,b} → {a} 100, 400, 500 50 % 100 %
{b} → {a, c} 100, 400, 500 50 % 75 %
{c} → {b, a} 100, 400, 500 50 % 100 %
{a} → {b, c} 100, 400, 500 50 % 60 %
6. Apriori-Erweiterungen
Laufzeitverhalten des Apriori:
gut bei kleinen und mittleren Datenmengen
schlecht bei sehr großen Datenmengen
Abhilfe durch die Apriori-Modifikationen:
AprioriTID
AprioriHybrid
AprioriTID
Die Datenbank D wird nach dem ersten Durchlauf nicht mehr für die Berechnung der Unterstützung benutzt.
Die Kandidaten werden als Hilfsmenge C’k kodiert.
Jeder Kandidat ist als Eintrag der Form <TID, {Xk}> kodiert, wo Xk eine potentiell häufige k- Attributwertmenge in Transaktion TID ist.
Bei k=1 wird die gesamte Datenbank als C’1 aufgefasst.
Jede weitere Iteration k+1 nutzt dann nicht die Datenbank, sondern die Hilfsmenge C’k
Der Vorteil: die Anzahl der Datenbankzugriffe wird gesenkt.
Der Nachteil: bei der ersten Iterationen wird viel Speicherplatz benötigt.
AprioriTID-Algorithmus: Beispiel
(min_sup=50%)Datenbank C’1 L1
TID Attributen TID Hilfsmenge der Itemsets Itemset Support
100 a, c, d 100 {{a},{c},{d}} {a} 2/4 = 50%
200 b, c, e 200 {{b},{c},{e}} {b} 3/4 = 75%
300 a, b, c, e 300 {{a},{b},{c},{e}} {c} 3/4 = 75%
400 b, e 400 {{b},{e}} {e} 3/4 = 75%
C2
Itemset C’2
{a b} TID Hilfsmenge der Itemsets L2
{a c} 100 {{a c}} Itemset Support
{a e} 200 {{b c},{b e}, {c e}} {a c} 2/4 = 50%
{b c} {b c} 2/4 = 50%
{b e}
300 {{a b},{a c},{a e},{b c}, {b e},{c e}}
{b e} 3/4 = 75%
{c e} 400 {{b e}} {c e} 2/4 = 50%
C3 C’3
Itemset TID Hilfsmenge der Itemsets L3
{b c e} 200 {{ b c e }} Itemset Support
300 {{ b c e }} { b c e } 2/4 = 50%
AprioriHybrid
kombiniert die besten Eigenschaften von Apriori und AprioriTID in einem Verfahren.
Apriori-Algorithmus wird in früheren Iterationen verwendet.
Wechsel zum AprioriTID-Algorithmus in späteren Iterationen.
Wechsel zum AprioriTID-Algorithmus wenn die Hilfsmenge C’k für die kodierten Kandidaten in den operativen Speicher passt.
Nachteil beim Wechsel: Verbrauch zusätzlicher Ressourcen
7. Sonstige Ansätze zur
Effizienzsteigerung von Apriori
Hauptansätze für die Effizienzsteigerung des Apriori-Verfahrens:
Reduktion der Anzahl der Datenbankzugriffe/Datenbankscans
Reduktion der Anzahl der Kandidaten
Beschleunigung der Berechnung des Unterstützungsgrads für die Kandidaten
Algorithmen für die Effizienzsteigerung des Apriori-Verfahrens:
Hashbasierte Techniken (DHP)
Reduzierung der Transaktionen
Partitionierung
Sampling
Dynamische Aufzählung der Attributwertmenge (DIC)
Hashbasierte Techniken (DHP - „direkt hashing and pruning“)
Autoren: J. Park, M. Chen and P. Yu, 1995
Reduzierung der potentiell häufigen k-Attributwertmenge Ck für k>1.
Verfahren:
- Jede k-Attributwertmenge X Ck für k>1 kommt zusätzlich in den Hash-Behälter HBX; - Zähler (HBX) < min_sup X kann nicht häufig sein und wird aus Ck entfernt.
Reduzierung der Transaktionen
Reduzierung der Anzahl der Transaktionen, die in den künftigen Iterationen gescannt werden.
Verfahren:
- Eine Transaktion T’ ohne häufigen k-Attributwertmengen kann auch keine häufigen k+1- Attributwertmengen beinhalten und wird besonders gekennzeichnet.
- Bei den nachfolgenden DB-Durchläufe für j-Attributwertmengen bei j>k werden alle besonders gekennzeichneten Transaktion ignoriert.
Partitionierung
Autoren: A. Savasere, E. Omiecinski and S. Navathe, 1995.
Jede häufige Attributwertmenge in D soll mindestens in einer der Partitionen von D als häufig vorkommen.
Benötigt nur 2 DB-Durchläufe.
Verfahren (2 Phasen) :
- 1. Phase: verteilt die Transaktionen von D in n disjunkte Partitionen und sucht nach lokalen häufigen Attributwertmengen in jeder Partition. Bei der Bestimmung der lokalen häufigen Attributwertmengen wird für jede Partition X die folgende angepasste Grösse vom minimal geforderten Unterstützungsgrad min_sup verwendet: min_sup(Partition X) = min_sup * (|X| / |D|) - 2. Phase: berechnet die tatsächliche Unterstützung aller lokalen häufigen Attributwertmengen in D und leitet daraus die Menge der globalen häufigen Attributwertmengen.
Sampling
Autor: H. Toivonen, 1996
Erhöhung der Effizienz auf Kosten der Genauigkeit.
Verfahren:
- Bildung einer Teilmenge S der gegebenen Daten D durch die Stichproben.
- Recherchen auf S und Ermittlung aller häufigen Attributwertmengen LS mit einem geringeren Unterstützungsgrad als der ursprünglich geforderte minimale Unterstützungsgrad min_sup.
- DB-Durchlauf zur Berechnung der tatsächlichen Häufigkeit jeder Attributwertmenge aus LS.
Dynamische Aufzählung der Attributwertmenge (DIC)
Autoren: S. Brin, R. Motwani, J. Ullman und S. Tsur, 1997
DIC= „dynamic itemset counting“
Die Berechnung des Unterstützungsgrads in der Kandidatengenerierungsphase wird gestoppt, sobald eine Attributwertmenge eine Unterstützung größer als den vorgegebenen Unterstützungsgrad min_sup besitzt.
8. Fazit
Die Assoziationsregeln stellen eine wichtige Analysemöglichkeit für Datenbestände dar.
Wir haben diverse Ansätze zur Entdeckung der Assoziationsregeln kenngelernt.
Der Apriori-Algorithmus ist eine gut anwendbare und verständliche Methode zur Entdeckung von Assoziationsregeln, die in Vergleich zur früheren Ansätzen (AIS, SETM) mit hoher Performanz arbeitet.
Auch der Apriori ist noch nicht optimal. Hierfür existieren diverse Erweiterungen des Apriori–
Algorithmus wie AprioriTID und AprioriHybrid, sowie weitere Ansätze zur Reduzierung der Anzahl der Datenbankzugriffe, Reduzierung der Kandidatengenerierung, usw.