Apriori Algortihmus -...

30
Apriori Algortihmus Endpräsentation Stefan George, Felix Leupold

Transcript of Apriori Algortihmus -...

Page 1: Apriori Algortihmus - hpi.dehpi.de/.../naumann/lehre/SS2012/Algorithms_for_Pattern_Mining/apriori_final.pdf · Gliederung Wiederholung Apriori Erweiterung: Parallelisierung Parallele

Apriori Algortihmus Endpräsentation Stefan George, Felix Leupold

Page 2: Apriori Algortihmus - hpi.dehpi.de/.../naumann/lehre/SS2012/Algorithms_for_Pattern_Mining/apriori_final.pdf · Gliederung Wiederholung Apriori Erweiterung: Parallelisierung Parallele

Gliederung

■  Wiederholung Apriori ■  Erweiterung: Parallelisierung

□  Parallele Programmierung in Python □  Parallelisierungszenarien □  Implementierung □  Ergebnisse/Benchmarks

■  Usecase □  Lift □  Conviction □  Ergebnisse

Apriori | Stefan George, Felix Leupold | 10. Juli 2012

2

Page 3: Apriori Algortihmus - hpi.dehpi.de/.../naumann/lehre/SS2012/Algorithms_for_Pattern_Mining/apriori_final.pdf · Gliederung Wiederholung Apriori Erweiterung: Parallelisierung Parallele

Wiederholung Apriori

■  Algorithmus zum Auffinden von Assoziationsregeln ■  Wichtige Parameter: Support und Confidence

■  Apriori Überlegung: Wenn eine Teilmenge einer Menge M klein ist, dann ist die Menge M auch auf jeden Fall klein

■  Kandidatengenerierung iterativ: Join und Prune

■  Regeln aus Itemsets mit ausreichend Support generieren

Apriori | Stefan George, Felix Leupold | 10. Juli 2012

3

ConfALALA min)sup()sup()( >↔−→

Page 4: Apriori Algortihmus - hpi.dehpi.de/.../naumann/lehre/SS2012/Algorithms_for_Pattern_Mining/apriori_final.pdf · Gliederung Wiederholung Apriori Erweiterung: Parallelisierung Parallele

Motivation für Parallelisierung

Apriori | Stefan George, Felix Leupold | 10. Juli 2012

4

Page 5: Apriori Algortihmus - hpi.dehpi.de/.../naumann/lehre/SS2012/Algorithms_for_Pattern_Mining/apriori_final.pdf · Gliederung Wiederholung Apriori Erweiterung: Parallelisierung Parallele

Parallelisierung in Python

■  Multiprocessing vs. Multithreading

■  Threads haben „shared memory“

■  Deutlich mehr overhead bei Context Switch zwischen Prozessen

■  Global Interpreter Lock in Python

□  Nur ein Thread kann gleichzeitig Bytecode ausführen

□  Keine Parallelisierung bei CPU lastigem Code

■  Für uns kommt nur Multiprocessing in Frage

Apriori | Stefan George, Felix Leupold | 10. Juli 2012

5

Page 6: Apriori Algortihmus - hpi.dehpi.de/.../naumann/lehre/SS2012/Algorithms_for_Pattern_Mining/apriori_final.pdf · Gliederung Wiederholung Apriori Erweiterung: Parallelisierung Parallele

Parallelisierungsszenarien (1/3)

Apriori.py T

Transactions candidates

Apriori | Stefan George, Felix Leupold | 10. Juli 2012

6

Page 7: Apriori Algortihmus - hpi.dehpi.de/.../naumann/lehre/SS2012/Algorithms_for_Pattern_Mining/apriori_final.pdf · Gliederung Wiederholung Apriori Erweiterung: Parallelisierung Parallele

Parallelisierungsszenarien (1/3)

Apriori.py

Process 1 Process 2 Process n …

T

Transactions candidates

1 0 1

Apriori | Stefan George, Felix Leupold | 10. Juli 2012

7

Page 8: Apriori Algortihmus - hpi.dehpi.de/.../naumann/lehre/SS2012/Algorithms_for_Pattern_Mining/apriori_final.pdf · Gliederung Wiederholung Apriori Erweiterung: Parallelisierung Parallele

Analyse (1/3)

■  Kein Initialisierungsaufwand

■  Datenübertragung in Schritt k: |D| * |Ck|

■  Ergebnisgröße: |Ck|

■  Gesamtkosten =

■  Parallelisierung muss grob granularer sein.

Apriori | Stefan George, Felix Leupold | 10. Juli 2012

8

||)1|(| kk

CD∑ ∗+

5Mio * 400

400

0

2Mrd

Page 9: Apriori Algortihmus - hpi.dehpi.de/.../naumann/lehre/SS2012/Algorithms_for_Pattern_Mining/apriori_final.pdf · Gliederung Wiederholung Apriori Erweiterung: Parallelisierung Parallele

Parallelisierungsszenarien (2/3)

Apriori.py

Process 1 Process 2 Process n …

T T T

Transactions

Apriori | Stefan George, Felix Leupold | 10. Juli 2012

9

Page 10: Apriori Algortihmus - hpi.dehpi.de/.../naumann/lehre/SS2012/Algorithms_for_Pattern_Mining/apriori_final.pdf · Gliederung Wiederholung Apriori Erweiterung: Parallelisierung Parallele

Parallelisierungsszenarien (2/3)

Apriori.py

Process 1 Process 2 Process n …

candidates

T1 T2 Tn

Apriori | Stefan George, Felix Leupold | 10. Juli 2012

10

Page 11: Apriori Algortihmus - hpi.dehpi.de/.../naumann/lehre/SS2012/Algorithms_for_Pattern_Mining/apriori_final.pdf · Gliederung Wiederholung Apriori Erweiterung: Parallelisierung Parallele

Parallelisierungsszenarien (2/3)

Apriori.py

Process 1 Process 2 Process n … T1 T2 T2

Apriori | Stefan George, Felix Leupold | 10. Juli 2012

11

Page 12: Apriori Algortihmus - hpi.dehpi.de/.../naumann/lehre/SS2012/Algorithms_for_Pattern_Mining/apriori_final.pdf · Gliederung Wiederholung Apriori Erweiterung: Parallelisierung Parallele

Analyse (2/3)

■  Initialisierungsaufwand: |D|

■  Aufwand in Schritt k: n * |Ck|

■  Ergebnisgröße: n * |Ck|

■  Gesamtkosten:

Apriori | Stefan George, Felix Leupold | 10. Juli 2012

12

4 * 400

4 * 400

5Mio

5Mio ∑+ kkCnD ||2||

Page 13: Apriori Algortihmus - hpi.dehpi.de/.../naumann/lehre/SS2012/Algorithms_for_Pattern_Mining/apriori_final.pdf · Gliederung Wiederholung Apriori Erweiterung: Parallelisierung Parallele

Parallelisierungsszenarien (3/3)

Apriori.py

Process 1 Process 2 Process n …

T

Transactions

Apriori | Stefan George, Felix Leupold | 10. Juli 2012

13

Page 14: Apriori Algortihmus - hpi.dehpi.de/.../naumann/lehre/SS2012/Algorithms_for_Pattern_Mining/apriori_final.pdf · Gliederung Wiederholung Apriori Erweiterung: Parallelisierung Parallele

Parallelisierungsszenarien (3/3)

Apriori.py

Process 1 Process 2 Process n …

candidates

T T T

Apriori | Stefan George, Felix Leupold | 10. Juli 2012

14

Page 15: Apriori Algortihmus - hpi.dehpi.de/.../naumann/lehre/SS2012/Algorithms_for_Pattern_Mining/apriori_final.pdf · Gliederung Wiederholung Apriori Erweiterung: Parallelisierung Parallele

Parallelisierungsszenarien (3/3)

Apriori.py

Process 1 Process 2 Process n … T T T

Apriori | Stefan George, Felix Leupold | 10. Juli 2012

15

Page 16: Apriori Algortihmus - hpi.dehpi.de/.../naumann/lehre/SS2012/Algorithms_for_Pattern_Mining/apriori_final.pdf · Gliederung Wiederholung Apriori Erweiterung: Parallelisierung Parallele

Analyse (3/3)

■  Initialisierungsaufwand: n * |D|

■  Aufwand in Schritt k: |Ck|

■  Ergebnisgröße: |Ck|

■  Gesamtkosten:

Apriori | Stefan George, Felix Leupold | 10. Juli 2012

16

∑+ kkCDn ||2||

400

400

4 * 5Mio

20Mio

Page 17: Apriori Algortihmus - hpi.dehpi.de/.../naumann/lehre/SS2012/Algorithms_for_Pattern_Mining/apriori_final.pdf · Gliederung Wiederholung Apriori Erweiterung: Parallelisierung Parallele

Theorie vs. Praxis

1

10

100

1000

10000

Embarassingly Parallel

Tansaction Chunks

Candidate Chunk

1 Kern 2 Kerne 4 Kerne

Apriori | Stefan George, Felix Leupold | 10. Juli 2012

17

∑+ kkCDn ||2||

∑+ kkCnD ||2||

||)1|(| kk

CD∑ ∗+

Exec

utio

n tim

e (s

ec)

Page 18: Apriori Algortihmus - hpi.dehpi.de/.../naumann/lehre/SS2012/Algorithms_for_Pattern_Mining/apriori_final.pdf · Gliederung Wiederholung Apriori Erweiterung: Parallelisierung Parallele

Implementierung (1)

■  Map/Reduce

□  Map(candidates, transactions) → list(candidate,count) □  Reduce(candidate, list (counts)) → list(candidates)

Apriori | Stefan George, Felix Leupold | 10. Juli 2012

18

Page 19: Apriori Algortihmus - hpi.dehpi.de/.../naumann/lehre/SS2012/Algorithms_for_Pattern_Mining/apriori_final.pdf · Gliederung Wiederholung Apriori Erweiterung: Parallelisierung Parallele

Implementierung (2)

■  Update der Transaktionen

□  Würde Rückübertragung aller Transaktionen benötigen

□  Daher nicht mehr AprioriTID sondern Apriori

Apriori | Stefan George, Felix Leupold | 10. Juli 2012

19

Apriori.py

Process 1 Process 2 Process n … T T T

Page 20: Apriori Algortihmus - hpi.dehpi.de/.../naumann/lehre/SS2012/Algorithms_for_Pattern_Mining/apriori_final.pdf · Gliederung Wiederholung Apriori Erweiterung: Parallelisierung Parallele

Fazit & Ideas

■  Parallelisierung in anderen Programmiersprachen könnte mit

Threads implementiert werden

□  Weniger Kommunikationsoverhead

□  Geringere Context Switch Kosten

□  Aber ggf. Wartezeiten wegen locking

■  Parallelisierung auf Hadoop

■  Hoher Data Parallelism

➜ CUDA/OpenCL

Apriori | Stefan George, Felix Leupold | 10. Juli 2012

20

Page 21: Apriori Algortihmus - hpi.dehpi.de/.../naumann/lehre/SS2012/Algorithms_for_Pattern_Mining/apriori_final.pdf · Gliederung Wiederholung Apriori Erweiterung: Parallelisierung Parallele

Datensets

Apriori | Stefan George, Felix Leupold | 10. Juli 2012

21

0

20000000

40000000

60000000

80000000

100000000

120000000

Anz

ahl d

er E

lem

ente

0

10

20

30

40

50

60

70

80

Facebook Netflix Health Twitter

Anz

ahl d

er E

lem

ente

/Tr

ansa

ktio

n

0

200000

400000

600000

800000

1000000

1200000

Facebook Netflix Health Twitter

Anz

ahl d

er T

rans

aktio

nen

Page 22: Apriori Algortihmus - hpi.dehpi.de/.../naumann/lehre/SS2012/Algorithms_for_Pattern_Mining/apriori_final.pdf · Gliederung Wiederholung Apriori Erweiterung: Parallelisierung Parallele

Benchmark (Netflix)

■  |D| = 200.000 ■  AVG(|T|) = 52,6

■  N = 10.232.001 ■  40% speedup

Apriori | Stefan George, Felix Leupold | 10. Juli 2012

22

0

100

200

300

400

500

600

700

800

900

1000

0 0.5 1 1.5 2 2.5 3 3.5 4 4.5

Zei

t (s

)

Anzahl der Kernen Hardware:

§  Core i7-2600 Quad-Core

§  16GB RAM

Page 23: Apriori Algortihmus - hpi.dehpi.de/.../naumann/lehre/SS2012/Algorithms_for_Pattern_Mining/apriori_final.pdf · Gliederung Wiederholung Apriori Erweiterung: Parallelisierung Parallele

Benchmark (Twitter)

■  |D| = 200.000 ■  AVG(|T|) = 2,4

■  N = 480.000 ■  40% speedup

Apriori | Stefan George, Felix Leupold | 10. Juli 2012

23

0

10

20

30

40

50

60

0 0.5 1 1.5 2 2.5 3 3.5 4 4.5

Zei

t (s

)

Anzahl der Kerne Hardware:

§  Core i7-2600 Quad-Core

§  16GB RAM

Page 24: Apriori Algortihmus - hpi.dehpi.de/.../naumann/lehre/SS2012/Algorithms_for_Pattern_Mining/apriori_final.pdf · Gliederung Wiederholung Apriori Erweiterung: Parallelisierung Parallele

Auffinden interessanter Regeln

Apriori | Stefan George, Felix Leupold | 10. Juli 2012

24

0

20000

40000

60000

80000

100000

120000

1 45

7 91

3 13

69

1825

22

81

2737

31

93

3649

41

05

4561

50

17

5473

59

29

6385

68

41

7297

77

53

8209

86

65

9121

95

77

1003

3 10

489

1094

5 11

401

1185

7 12

313

1276

9 13

225

1368

1 14

137

1459

3 15

049

1550

5 15

961

1641

7 16

873

1732

9 An

zah

l an

Bew

ertu

ng

en

Film ID

Anzahl an Bewertungen pro Film

Pirates of the Caribbean -> LoR II

Page 25: Apriori Algortihmus - hpi.dehpi.de/.../naumann/lehre/SS2012/Algorithms_for_Pattern_Mining/apriori_final.pdf · Gliederung Wiederholung Apriori Erweiterung: Parallelisierung Parallele

46.4%18*%2.7

%78.5)( ==−−−−−−−−lift

Lift

Apriori | Stefan George, Felix Leupold | 10. Juli 2012

25

Errechnete Werte: 3,7 – 7,5

lift(X!Y ) = sup(X !Y )sup(X)*sup(Y )

Page 26: Apriori Algortihmus - hpi.dehpi.de/.../naumann/lehre/SS2012/Algorithms_for_Pattern_Mining/apriori_final.pdf · Gliederung Wiederholung Apriori Erweiterung: Parallelisierung Parallele

55.377.0118.01~~~)(~~~~~~~~~ =

−=conv

Conviction

Apriori | Stefan George, Felix Leupold | 10. Juli 2012

26

Errechnete Werte: 3,5 - 25.32

)(1)sup(1)(YXconf

YYXconv→−

−=→

Page 27: Apriori Algortihmus - hpi.dehpi.de/.../naumann/lehre/SS2012/Algorithms_for_Pattern_Mining/apriori_final.pdf · Gliederung Wiederholung Apriori Erweiterung: Parallelisierung Parallele

Ergebnisse

Apriori | Stefan George, Felix Leupold | 10. Juli 2012

27

Support: 5,3 % Confidence: 96,5 % Lift: 7,5 Conviction: 25,3 Support: 5% Confidence: 75% 746 Regeln

Page 28: Apriori Algortihmus - hpi.dehpi.de/.../naumann/lehre/SS2012/Algorithms_for_Pattern_Mining/apriori_final.pdf · Gliederung Wiederholung Apriori Erweiterung: Parallelisierung Parallele

Einfluss von Lift und Conviction

Apriori | Stefan George, Felix Leupold | 10. Juli 2012

28

0

100

200

300

400

500

600

700

800

0 100 200 300 400 500 600 700 800

Reg

el P

osit

ion

Regel ID

Lift

Conviction

Confidence

Page 29: Apriori Algortihmus - hpi.dehpi.de/.../naumann/lehre/SS2012/Algorithms_for_Pattern_Mining/apriori_final.pdf · Gliederung Wiederholung Apriori Erweiterung: Parallelisierung Parallele

Vergleich zu IMDb

Apriori | Stefan George, Felix Leupold | 10. Juli 2012

29

Stichprobe (N=30): 21/30 = 70% stimmen mit IMDb überein §  Nachfolger §  Gleiches Genre

Page 30: Apriori Algortihmus - hpi.dehpi.de/.../naumann/lehre/SS2012/Algorithms_for_Pattern_Mining/apriori_final.pdf · Gliederung Wiederholung Apriori Erweiterung: Parallelisierung Parallele

Quellen

■  Sergey Brin, Rajeev Motwani, Jeffrey D. Ullman, and Shalom Tsur. Dynamic itemset counting and implication rules for market basket data.

■  P. Becuzzi, M. Coppola and M. Vanneschi. Mining of Association Rules in Very Large Databases: A Structured Parallel Approach⋆

■  Ali Tarhini: Parallel Apriori algorithm for frequent pattern mining. http://alitarhini.wordpress.com/2011/02/26/parallel-apriori-algorithm-for-frequent-pattern-mining/ [Stand 3. Juli 2012]

■  Anuradha.T, Satya Pasad R, S.N.Tirumalarao. Parallelizing Apriori on Dual Core using OpenMP. International Journal of Computer Applications, Volume 43

■  R. Agrawal, R. Srikant: "Fast Algorithms for Mining Association Rules", Proc. of the 20th Int'l Conference on Very Large Databases, Santiago, Chile, Sept. 1994

Apriori | Stefan George, Felix Leupold | 10. Juli 2012

30