apriori algortihmus -...
Post on 21-Aug-2019
215 Views
Preview:
TRANSCRIPT
Apriori Algortihmus Endpräsentation Stefan George, Felix Leupold
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
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()( >↔−→
Motivation für Parallelisierung
Apriori | Stefan George, Felix Leupold | 10. Juli 2012
4
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
Parallelisierungsszenarien (1/3)
Apriori.py T
Transactions candidates
Apriori | Stefan George, Felix Leupold | 10. Juli 2012
6
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
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
Parallelisierungsszenarien (2/3)
Apriori.py
Process 1 Process 2 Process n …
T T T
Transactions
Apriori | Stefan George, Felix Leupold | 10. Juli 2012
9
Parallelisierungsszenarien (2/3)
Apriori.py
Process 1 Process 2 Process n …
candidates
T1 T2 Tn
Apriori | Stefan George, Felix Leupold | 10. Juli 2012
10
Parallelisierungsszenarien (2/3)
Apriori.py
Process 1 Process 2 Process n … T1 T2 T2
Apriori | Stefan George, Felix Leupold | 10. Juli 2012
11
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||
Parallelisierungsszenarien (3/3)
Apriori.py
Process 1 Process 2 Process n …
T
Transactions
Apriori | Stefan George, Felix Leupold | 10. Juli 2012
13
Parallelisierungsszenarien (3/3)
Apriori.py
Process 1 Process 2 Process n …
candidates
T T T
Apriori | Stefan George, Felix Leupold | 10. Juli 2012
14
Parallelisierungsszenarien (3/3)
Apriori.py
Process 1 Process 2 Process n … T T T
Apriori | Stefan George, Felix Leupold | 10. Juli 2012
15
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
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)
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
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
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
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
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
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
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
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 )
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→−
−=→
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
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
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
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
top related