Apriori-Algorithmus

Der Apriori-Algorithmus ist ein Verfahren zur Assoziationsanalyse, einem Bereich des Data-Mining. Er dient der Auffindung sinnvoller und nützlicher Zusammenhänge in transaktionsbasierten Datenbasen, die in Form sogenannter Assoziationsregeln dargestellt werden. Eine häufige Anwendung des Apriori-Algorithmus ist die Warenkorbanalyse. Items sind hierbei angebotene Produkte und ein Einkauf stellt eine Transaktion dar, welche die gekauften Items enthält. Der Algorithmus bestimmt nun Korrelationen der Form:

Wenn Shampoo und Rasierwasser gekauft wurden, wurde in 90 % der Fälle auch Rasierschaum gekauft.

Eine passende Datenbasis besteht aus einer Tabelle von Transaktionen (Zeilen), in denen beliebige binäre Items (Spalten) zusammengefasst werden. Der Apriori-Algorithmus findet Zusammenhänge zwischen Mengen von Items, die in einem großen Teil der Transaktionen vorkommen. Die durch den Algorithmus erzeugten Assoziationsregeln haben die Form A B {\displaystyle A\rightarrow B} . Dabei sind A {\displaystyle A} und B {\displaystyle B} Mengen von Items und die Regel ist so zu interpretieren, dass Transaktionen, in denen die Itemmenge A {\displaystyle A} vorkommt, häufig auch die Itemmenge B {\displaystyle B} enthalten.

Voraussetzungen

Der Apriori-Algorithmus wird bei Datenbasen einer bestimmten Form angewendet. Die Form der Datenbasis muss wie folgt vorliegen:

  • I {\displaystyle {\mathcal {I}}} ist eine Menge möglicher Items
  • D = { t 1 , t 2 , . . . , t n } {\displaystyle {\mathcal {D}}=\{t_{1},t_{2},...,t_{n}\}} ist die Datenbasis, bestehend aus Transaktionen t x {\displaystyle t_{x}}
  • eine Transaktion t x I {\displaystyle t_{x}\subseteq {\mathcal {I}}} fasst eine Menge von Items zusammen

Typischerweise werden sehr viele Transaktionen – oft mehr als 500.000 – gleichzeitig auf einer sehr großen Item-Basis analysiert. Die Darstellung der Datenbasis erfolgt in einer de-normalisierten Datenbanktabelle, welche für jedes mögliche Item eine Spalte besitzt. Die enthaltenen Zeilen stellen jeweils eine Transaktion dar, wobei in der Transaktion enthaltene Items mit einer 1, nicht enthaltene mit einer 0 gekennzeichnet werden. Eine Transaktion lässt sich somit auch als Vektor mit I {\displaystyle \mid {\mathcal {I}}\mid } Dimensionen betrachten.

Eine Assoziationsregel besitzt formal ausgedrückt nun die Form

X Y {\displaystyle X\rightarrow \!\,Y}

wobei gilt

X I {\displaystyle X\subseteq {\mathcal {I}}} , Y I {\displaystyle Y\subseteq {\mathcal {I}}} und X Y = {\displaystyle X\cap Y=\emptyset }

Bewertung von Regeln

Assoziationsregeln werden mit zwei probabilistischen Messwerten bewertet: Support und Konfidenz. Der Apriori-Algorithmus erwartet als Eingabe unter anderem die Werte m i n s u p p {\displaystyle minsupp} und m i n c o n f {\displaystyle minconf} , welche den minimalen Support und die minimale Konfidenz einer Regel darstellen, damit sie berücksichtigt werden.

Support

Der Support einer Itemmenge ist die Wahrscheinlichkeit, dass diese Itemmenge in einer Transaktion vorkommt.

Sei X = A 1 , A 2 , . . . , A n {\displaystyle X={A_{1},A_{2},...,A_{n}}} Itemmenge.

Support ( X ) = P ( A 1 , A 2 , . . . , A n ) = { t D X t } D {\displaystyle {\begin{aligned}\operatorname {Support} (X)&=\!\,P(A_{1},A_{2},...,A_{n})\\&={\frac {\mid \{t\in {\mathcal {D}}\mid X\subseteq t\}\mid }{\mid D\mid }}\end{aligned}}}

Der Support einer Assoziationsregel X Y {\displaystyle X\rightarrow Y} , mit X = { A 1 , A 2 , . . . , A n } {\displaystyle X=\{A_{1},A_{2},...,A_{n}\}} und Y = { B 1 , B 2 , . . . , B m } {\displaystyle Y=\{B_{1},B_{2},...,B_{m}\}} , ist definiert als

Support ( X Y ) = Support ( X Y ) = P ( A 1 , A 2 , . . . , A n , B 1 , B 2 , . . . , B m ) = { t D X Y t } D {\displaystyle {\begin{aligned}\operatorname {Support} (X\rightarrow Y)&=\!\,\operatorname {Support} (X\cup Y)\\&=\!\,P(A_{1},A_{2},...,A_{n},B_{1},B_{2},...,B_{m})\\&={\frac {\mid \{t\in {\mathcal {D}}\mid X\cup Y\subseteq t\}\mid }{\mid D\mid }}\end{aligned}}}

Der Support einer Regel gibt also die relative Häufigkeit an, mit der die Regel in der Datenbasis vorkommt. Meist ist ein hoher Support wünschenswert, um Aussagen über Mehrheiten zu finden.

Konfidenz

Sei X Y {\displaystyle X\rightarrow \!\,Y} eine Assoziationsregel, mit X = { A 1 , A 2 , . . . , A n } {\displaystyle X=\{A_{1},A_{2},...,A_{n}\}} und Y = { B 1 , B 2 , . . . , B m } {\displaystyle Y=\{B_{1},B_{2},...,B_{m}\}} .

Die Konfidenz einer Regel entspricht der Wahrscheinlichkeit der Konklusion unter Bedingung der Prämisse:

Conf ( X Y ) = P ( B 1 , B 2 , . . . , B m A 1 , A 2 , . . . , A n ) {\displaystyle \operatorname {Conf} (X\rightarrow \!\,Y)=P(B_{1},B_{2},...,B_{m}\mid A_{1},A_{2},...,A_{n})}

also

Conf ( X Y ) = Support ( X Y ) Support ( X ) = { t D X Y t } { t D X t } {\displaystyle {\begin{aligned}\operatorname {Conf} (X\rightarrow Y)&={\frac {\operatorname {Support} (X\rightarrow Y)}{\operatorname {Support} (X)}}\\&={\frac {\mid \{t\in {\mathcal {D}}\mid X\cup Y\subseteq t\}\mid }{\mid \{t\in {\mathcal {D}}\mid X\subseteq t\}\mid }}\end{aligned}}}

Die Konfidenz misst also die relative Häufigkeit des Vorkommens der Konklusion unter Bedingung der Prämisse. Auch für die Konfidenz ist ein hoher Wert wünschenswert. Oder einfacher ausgedrückt: Die Konfidenz misst für welchen Anteil der Transaktionen, in denen X {\displaystyle X} vorkommt, auch Y {\displaystyle Y} vorkommt. Zur Berechnung der Konfidenz wird die Anzahl aller regelerfüllenden Transaktionen (also der Support) durch die Anzahl der Transaktionen, die X {\displaystyle X} enthalten, geteilt.

Der Algorithmus

Der Apriori-Algorithmus erhält als Eingaben

  • Die Datenbasis D {\displaystyle {\mathcal {D}}}
  • Den Minimal-Support minsupp {\displaystyle {\textit {minsupp}}}
  • Die minimale Konfidenz minconf {\displaystyle {\textit {minconf}}}

und gibt eine Menge von Assoziationsregeln aus, die sowohl minsupp {\displaystyle {\textit {minsupp}}} als auch minconf {\displaystyle {\textit {minconf}}} erfüllen.

Der Algorithmus arbeitet in zwei Schritten, welche beide einen gemeinsamen Schritt Apriori-Gen verwenden:

  1. Findung häufiger Mengen
  2. Erzeugung von Assoziationsregeln

Finden häufiger Itemmengen

Die Suche nach häufigen Itemmengen startet mit 1-elementigen Mengen und wird iterativ mit n-elementigen Mengen fortgeführt, bis keine Itemmengen mit genügendem Support mehr gefunden werden. Dabei wird in jeder Iteration eine Menge von Kandidatenmengen mittels Apriori-Gen erzeugt und jede Menge auf die minsupp {\displaystyle {\textit {minsupp}}} -Eigenschaft hin überprüft. Können keine neuen Mengen mehr gefunden werden, stoppt der Algorithmus und gibt die gefundenen Mengen aus.

  1. Berechne alle 1-elementigen Itemmengen mit Support > minsupp {\displaystyle {\textit {minsupp}}} : L 1 {\displaystyle L_{1}} .
  2. Für k 1 k {\displaystyle k-1\rightarrow k} .
    1. Berechne Menge von Kandidaten C k {\displaystyle C_{k}} aus L k 1 {\displaystyle L_{k-1}} mittels Apriori-Gen.
    2. Berechne den tatsächlichen Support von allen Mengen aus C k {\displaystyle C_{k}} .
    3. Nimm die Mengen mit genügend Support minsupp {\displaystyle {\textit {minsupp}}} in L k {\displaystyle L_{k}} auf.
    4. Ist L k = {\displaystyle L_{k}=\emptyset } , brich ab.
  3. Gib L k {\displaystyle \bigcup {}{L_{k}}} zurück.

Die zurückgegebene Menge enthält alle häufigen Itemmengen.

Apriori-Gen

Die Sub-Routine Apriori-Gen wird sowohl bei der Berechnung häufiger Mengen, als auch bei der Generierung von Assoziationsregeln verwendet. Anstatt für alle möglichen Itemmengen den Support direkt zu berechnen, wird durch Apriori-Gen auf Basis bereits gefundener häufiger Mengen eine Menge von Kandidaten zur weiteren Überprüfung generiert.

Die Routine erhält als Eingabe eine Menge häufiger k 1 {\displaystyle k-1} -Itemmengen ( L k 1 {\displaystyle L_{k-1}} ) und gibt eine Menge von k {\displaystyle k} -Itemmengen ( C k {\displaystyle C_{k}} ) als mögliche Kandidaten zurück. Sie basiert auf dem Prinzip, dass alle Teilmengen einer häufigen Itemmenge häufig sind, alle Obermengen einer nicht-häufigen Itemmenge aber auch nicht-häufig. Unnötige Support-Berechnungen werden so vermieden.

  1. Generiere k {\displaystyle k} -Itemmengen durch Verschmelzung von je zwei k 1 {\displaystyle k-1} -Itemmengen, die je k 2 {\displaystyle k-2} Items gemein haben und füge sie C k {\displaystyle C_{k}} hinzu. Dieser Schritt garantiert, dass immer nur jeweils ein Element zur neuen Menge hinzukommt.
  2. Überprüfe für jede Menge X {\displaystyle X} in C k {\displaystyle C_{k}} , ob alle k 1 {\displaystyle k-1} -Teilmengen in L k 1 {\displaystyle L_{k-1}} enthalten sind. Falls nicht, entferne X {\displaystyle X} aus C k {\displaystyle C_{k}} .

Beispiel

Die Eingabe zu Apriori-Gen sei:

L 3 = { { a , b , c } , { a , b , d } , { a , b , e } , { a , c , d } , { a , c , e } , { b , c , d } } {\displaystyle L_{3}=\{\{a,b,c\},\{a,b,d\},\{a,b,e\},\{a,c,d\},\{a,c,e\},\{b,c,d\}\}}

Schritt 1 der Apriori-Gen-Routine berechnet nun die folgende Kandidaten-Menge:

C 4 = { { a , b , c , d } , { a , b , c , e } , { a , b , d , e } , { a , c , d , e } } {\displaystyle C_{4}=\{\{a,b,c,d\},\{a,b,c,e\},\{a,b,d,e\},\{a,c,d,e\}\}}

Schritt 2 entfernt die Mengen { a , b , c , e } , { a , b , d , e } {\displaystyle \{a,b,c,e\},\{a,b,d,e\}} und { a , c , d , e } {\displaystyle \{a,c,d,e\}} wieder aus C 4 {\displaystyle C_{4}} , da { b , c , e } , { b , d , e } {\displaystyle \{b,c,e\},\{b,d,e\}} und { c , d , e } {\displaystyle \{c,d,e\}} nicht in L 3 {\displaystyle L_{3}} enthalten sind. Beide Mengen sind also nicht häufig und ihre Obermengen müssen nicht berücksichtigt werden.

Das Ergebnis von Apriori-Gen ist also

C 4 = { { a , b , c , d } } {\displaystyle C_{4}=\{\{a,b,c,d\}\}}

Generierung von Assoziationsregeln

Nur Itemmengen die bereits in sich häufig sind, müssen für diesen Schritt des Algorithmus berücksichtigt werden. Solche Itemmengen wurden von Schritt 1 des Apriori-Algorithmus berechnet. Die von Schritt 1 verwendete Routine Apriori-Gen wird bei der Generierung von Assoziationsregeln erneut verwendet.

Für jede gefundene häufige Itemmenge wird versucht, Assoziationsregeln zu erzeugen. Dabei wird mit möglichst kurzen (1-elementigen) Konklusionen begonnen, welche iterativ vergrößert werden. Der folgende Pseudocode wird für jede gefundene Itemmenge Z {\displaystyle Z} ausgeführt:

  1. Für jede Itemmenge Z: berechne Assoziationsregeln der Form X Y {\displaystyle X\rightarrow Y} mit Y ∣= 1 {\displaystyle \mid Y\mid =1} und X = Z Y {\displaystyle X=Z\setminus Y} mit Conf ( X Y ) > minconf {\displaystyle \operatorname {Conf} (X\rightarrow Y)>{\textit {minconf}}} .
  2. Erzeuge H 1 {\displaystyle H_{1}} mit Itemmengen bestehend aus je einer gefundenen Konklusion.
  3. H k 1 H k {\displaystyle H_{k-1}\rightarrow H_{k}}
    1. Erzeuge H k {\displaystyle H_{k}} durch Apriori-Gen.
    2. Für jede Konklusion h k H k {\displaystyle h_{k}\in H_{k}} überprüfe minconf {\displaystyle {\textit {minconf}}} von ( Z h k ) h k {\displaystyle (Z\setminus h_{k})\rightarrow h_{k}} . Falls minconf {\displaystyle {\textit {minconf}}} nicht erfüllt ist, entferne h k {\displaystyle h_{k}} aus H k {\displaystyle H_{k}} .
    3. Wenn H k = {\displaystyle H_{k}=\emptyset } , brich ab.
  4. Gib H k {\displaystyle \bigcup H_{k}} zurück.

Die erzeugten Regeln erfüllen alle minsupp {\displaystyle {\textit {minsupp}}} und minconf {\displaystyle {\textit {minconf}}} .

Literatur

  • Rakesh Agrawal, Tomasz Imieliński, Arun Swami: Mining Association Rules between Sets of Items in Large Databases. In: Peter Buneman; Sushil Jajodia (Hrsg.): Proceedings of the 1993 ACM SIGMOD international conference on Management of data (= SIGMOD Record. Bd. 22, Nr. 2, Juni 1993). ACM, New York NY 1993, ISBN 0-89791-592-5, S. 207–216, doi:10.1145/170035.170072
  • Rakesh Agrawal, Ramakrishnan Srikant: Fast Algorithms for Mining Association Rules. In: Jorge Bocca, Matthias Jarke, Carlo Zaniolo (Hrsg.): Very large data bases. Proceedings of the 20th International Conference on Very Large Data Bases. Morgan Kaufmann Publishers Inc., Hove u. a. 1994, ISBN 1-55860-153-8, S. 487–499, online (PDF; 282 kB).
  • Jean-Marc Adamo: Data Mining for Association Rules and Sequential Patterns. Sequential and Parallel Algorithms. Springer, New York NY u. a. 2001, ISBN 0-387-95048-6 (englisch). 
  • Christoph Beierle, Gabriele Kern-Isberner: Methoden wissensbasierter Systeme: Grundlagen, Algorithmen, Anwendungen., 4. Aufl. Vieweg+Teubner Verlag, 2008, S. 147ff. ISBN 3-8348-0504-1

Weblinks

  • Gabriele Kern-Isberner: Wissenserwerb und Wissensentdeckung. (PDF; 664 kB). In: Darstellung, Verarbeitung und Erwerb von Wissen 2007/2008.
  • Katharina Morik: Assoziationsregeln. (PDF; 1,6 MB). In: Wissensentdeckung in Datenbanken 2008.