Mais conteúdo relacionado Semelhante a Analytics meets Big Data – R/Python auf der Hadoop/Spark-Plattform (20) Mais de Rising Media Ltd. (20) Analytics meets Big Data – R/Python auf der Hadoop/Spark-Plattform1. Analytics meets Big Data
R/Python auf der Hadoop/Spark-Plattform
Berlin, 03. November 2015 (Predictive Analytics World)
Dr. Henrik Behrens
Principal Big Data Analytics
Business Unit Big Data
Henrik.Behrens@SHS-VIVEON.com
Dr. Annina Neumann
Head of Data Science
Business Unit Big Data
Annina.Neumann@SHS-VIVEON.com
2. ©SHSVIVEON
SHS VIVEON Gruppe: Überblick
Facts & Figures
(Stand 2014)
SHS VIVEON GRUPPE
Umsatz: 24,3 Mio., EK-Quote: 52,1%
Geschäftsbereiche
VALUE
12 Mio. Umsatz (GJ 2014)
RISK
12,2 Mio. Umsatz (GJ 2014)
Geschäftsmodelle und
Servicearten
Business- und IT-Beratung, Lösung:
Customer Management Suite, Services
(Campaign, Analytics) & Wartung
Business- und IT-Beratung,
Software/Lösungen: DebiTEX, RiskSuite &
proofitBOX, Services (Compliance, Fraud) &
Wartung
Zielbranchen
Kunden (Auszug)
Finanzdienst- Industrie & Retail & Telekommunikation
leistungen Handel (B2B) eCommerce (B2C) & Medien
03.11.2015SHS VIVEON Seite 2
Big Data
CRM
Consultg.
Business
Informat.
Mgnt.
IT
Solutions
3. ©SHSVIVEON
• Einführung in Spark
• Recommender-Algorithmen
• Demo 1: User-based Recommender mit R
• Demo 2: User-based Recommender mit Spark DataFrames
• Demo 3: ALS-Recommender mit Spark MLlib
• Fazit, Learnings und Diskussion
Die Demos können (bei vorhandener Installation) jetzt
oder später auf dem eigenen Rechner nachvollzogen werden.
Seite 3SHS VIVEON
Analytics meets Big Data
03.11.2015
5. ©SHSVIVEON
Spark ist eine der leistungsfähigsten Clustertechnologien,
die es gibt, und übertrifft auch Hadoop/MapReduce bei weitem!
Seite 5SHS VIVEON 03.11.2015
Hadoop MapReduce
Laufzeit
(Minuten)
Clustergröße
(Nodes)
72
23
206 2100
Spark
Ressourcenverbrauch beim Greysort-Contest (100 TB)
Weltrekord von Spark, aufgestellt im November 2014,
für das Sortieren von großen Datenmengen
• Spark verwendet das Hadoop-Filesystem (HDFS)
• Spark löst MapReduce auf der Hadoop-Plattform ab
und ist inzwischen Teil von Hadoop geworden.
6. ©SHSVIVEON
Seite 6SHS VIVEON 03.11.2015
Während wir bei R und Python in der Regel mit den Ressourcen eines Servers
auskommen müssen, bietet Spark praktisch unlimitierte Rechenleistung.
• R, Python sind Single-Server-Systeme
• Hauptspeicher maximal wenige Terabyte
• CPU-Cores höchstens ein paar Dutzend
• Nur eine Handvoll Festplatten
(aber die meisten Algorithmen laufen im Hauptspeicher)
• Spark ist ein Cluster-System
• Mehrere hundert Server können zusammengeschlossen werden
• Die Daten verteilen sich auf mehrere Executor-Prozesse pro Server,
die von einem Driver-Prozess gesteuert werden
• Hauptspeicher und Festplattenplatz nahezu unbegrenzt
• Aber: Die Algorithmen müssen auf verteilte Verarbeitung ausgelegt sein!
7. ©SHSVIVEON
Spark gilt als „Schweizer Taschenmesser für Big Data“, d.h. man kann
unterschiedliche Anforderungen mit Spark bedienen!
SHS VIVEON 03.11.2015 Seite 7
Spark Engine
Distributed Processing / In-Memory-Processing Platform
Spark
Streaming
(Micro Batches)
Spark
(Batch
Processing)
Spark GraphX
(Graph
Processing)
Spark MLlib
(Machine
Learning)
Spark SQL
(SQL
queries)
Für Analytische Zwecke sind Spark SQL und Spark MLlib am interessantesten.
8. ©SHSVIVEON
Seite 8SHS VIVEON 03.11.2015
Spark kann in mehreren Sprachen programmiert werden, die Unterschiede
sind hauptsächlich syntaktisch, in Spark läuft der gleiche (Scala)-Code.
val df = sqlContext.read.json("people.json")
df.show()
Scala
DataFrame df = sqlContext.read.json("people.json")
df.show()
Java
df = sqlContext.read.json("people.json")
df.show()
Python
df <- jsonFile(sqlContext, "people.json")
showDF(df)
R
Leider ist die R-Unterstützung derzeit
noch etwas lückenhaft, deshalb verwenden wir Python.
9. ©SHSVIVEON
Seite 9SHS VIVEON 03.11.2015
Ähnlich wie bei R gibt es in Spark für ein Problem unterschiedliche
Lösungsmöglichkeiten und Datenstrukturen.
• Vektoren/Matrizen aus den Libraries der verwendeten Programmiersprache
• Dann bleibt die Hauptspeicherbegrenzung aber bestehen
• Spark RDDs (Resilient Distributed Datasets)
• Key-Value-Paare als zentrale Datenstruktur
• Spark DataFrames
• Tabellen als Datenstruktur
• SQL-ähnliche Arbeitsweise
• Spark-Vektoren und Matrizen
• Local Vector, Local Matrix
• Distributed Matrix (mehrere Varianten)
• Spark MLLib-Bibliothek
• Am einfachsten, denn dann passiert alles als BlackBox im Hintergrund
11. ©SHSVIVEON
Seite 11SHS VIVEON
• Recommender-Systeme
• Empfehle einem User die Items (Produkte), die er besonders mögen wird
• Begrenzte Anzahl von Empfehlungen
• Schätze, wie ein User die verfügbaren Produkte bewerten würde
• Berechne eine Bewertungsmatrix
für User/Item-Kombinationen
• Grundlage für die Empfehlungen
• Eigenschaften der Produkte (Content Based Recommender)
• Meinungen anderer User (Collaborative Filtering)
Wir beschränken uns auf diese Alternativen!
03.11.2015
Für “Big Data Analytics” gibt es viele Anwendungsfälle,
in diesem Vortrag fokussieren wir auf Recommender-Systeme.
12. ©SHSVIVEON
Seite 12SHS VIVEON 03.11.2015
Das zentrale Element beim Collaborative Filtering
ist die Bewertungsmatrix (Utility Matrix) User U -> Item I
U1
U2
U3
U4
i1
4
i2 i3 i4 i5 i6 i7 i8
3 5 2 1
5 4 5 2 1
1 2 4 4
3 2 3 5 4 5
2
Bewertungsmatrix(1=schlecht, 5=gut)
User-Ähnlichkeit
• User U1 und U2 bewerten „ähnlich“
Favoriten: i1 bis i4
• User U3 und U4 bewerten „ähnlich“
Favoriten: i5 bis i8
3
Zentrale Annahme des Collaborative Filtering:
User mit ähnlichen User-Bewertungsvektoren
würden auch weitere Items ähnlich bewerten.
?
?
?
?
?
?
?
?
?
?
13. ©SHSVIVEON
Seite 13SHS VIVEON 03.11.2015
Der User-Based-Recommender-Algorithmus
besteht aus zwei Schritten
• Berechne die Ähnlichkeit (Cosine Similarity) der User-Bewertungsvektoren
für alle User-User-Kombinationen (U1,U2)
• Das Ergebnis wird einer Matrix gespeichert (Similarity Matrix)
• Um das Rating für User U und Item I zu vorherzusagen,
• suche andere User, die das Item I bewertet haben
• filtere diese User nach denen, die zum User U ähnlich sind
• bilde den Mittelwert von deren Bewertung für I
In den nun folgenden Demos mit R und Spark
machen wir eine Vorhersage von Bewertungen, die wir bereits kennen.
Qualität der Vorhersage kann überprüft werden
16. ©SHSVIVEON
Seite 16SHS VIVEON 03.11.2015
Bei Spark dürfen wir wegen des Overheads verteilter Operationen
nicht mit Schleifen arbeiten, daher “vektorisieren” wir den Algorithmus.
Bewertungs-
matrix
Join mit sich selbst
über MovieID und Multiplikation Zähler
des Similarity-
BruchsSummierung pro User1,User2
Bewertungs-
matrix
Zähler
des Similarity-
Bruchs
Gruppierung nach User
Summierung pro User
und Wurzelziehung
Similarity-
Matrix
Join
18. ©SHSVIVEON
Die Machine Learning Library verfügt bereits über eine Reihe wichtiger
Modelle, und die Liste verlängert sich mit jeder neuen Version.
SHS VIVEON 03.11.2015 Seite 18
19. ©SHSVIVEON
Seite 19SHS VIVEON 03.11.2015
Als dritte Demo zeigen wir eine Implementierung, die
auf einer Faktorisierung der Bewertungsmatrix beruht.
21. ©SHSVIVEON
Seite 21SHS VIVEON 03.11.2015
Fazit:
Der Schritt in die Welt des Cluster-Computing kommt nicht ganz umsonst.
• Spark DataFrames und Spark
SQL ermöglicht einen einfachen
Einstieg und eigenen sich auch
für die Datenvorverarbeitung und
Ergebnisaufbereitung.
• Die MLlib bietet viele wichtige
Algorithmen leicht verwendbar
„out-of-the-box“.
• IPython-Notebooks bieten eine
praktische Weboberfläche und
erlauben auch die Einbindung
graphischer Visualisierungen.
• Der Cluster wird erst genutzt,
wenn man verteilte
Datenstrukturen verwendet.
• Die verteilten Datenstrukturen
von Spark sind immutable, also
nicht modifizierbar.
• Das Entwickeln neuer verteilter
Algorithmen erfordert eine
Einarbeitung in die verfügbaren
verteilten Datenstrukturen.
Pro Contra
22. ©SHSVIVEON
Seite 22SHS VIVEON 03.11.2015
Unsere Learnings
• Der User-based-Algorithmus skaliert nicht gut: O(User*User*Item)
• Bei R sollte man Schleifen unbedingt vermeiden (hohe Laufzeit).
Eine vektorisierte Lösung kann um den Faktor 100 schneller sein (SIMD-
Instruktionen!)
• Das gleiche gilt noch mehr für Spark (Overhead 0,5 s für die Parallelisierung).
• Die Verwendung von Joins zur Berechnung von Matrixmultiplikationen ist
suboptimal (temporär große Datenmenge).
• Statt dessen sollte man in Spark auf verteilte Blockmatrizen ausweichen (siehe
BlockMatrix, oder auf dünnbesetzte Matritzen (SparseMatrix, beides bisher nur
in Scala).
• Durch Clustering von Kunden und/oder Items kann die Skalierbarkeit erheblich
verbessert werden, mit einem geringen Verlust an Genauigkeit (Rajamaran).
• Gibt es mehr User als Items, skaliert ein Item-based-Ansatz besser.
• Modellbasierte Ansätze (z.B. Faktorisierung der Bewertungsmatrix) skaliert gut
und ist in der Spark MLlib bereits implementiert (wir haben eine Zugabe-Demo!)
23. ©SHSVIVEON
Was ist relevanter – Technik
oder Methodik?
03.11.2015 Seite 23SHS VIVEON
Anregungen zur Diskussion
Bringen Big Data
Technologien einen
Paradigmenwechsel für
Analytics?
Wie viel Bedarf an hoher
Rechenleistung besteht in
der Praxis?
Fachlich intuitive
Programmierung vs.
technisch optimierte?
Wofür können wir Big Data
Technologien im Predictive
Analytics Umfeld sinnvoll
einsetzen?
Müssen sich Big Data &
klassische Business-
Fragestellungen noch
annähern?
24. ©SHSVIVEON
Vielen Dank!
Seite 24SHS VIVEON
Dr. Henrik Behrens
Principal
Business Unit Big Data
Henrik.Behrens@SHS-VIVEON.com
03.11.2015
Dr. Annina Neumann
Head of Data Science
Business Unit Big Data
Annina.Neumann@SHS-VIVEON.com
25. ©SHSVIVEON
HEADQUARTERS
SHS VIVEON AG
Clarita-Bernhard-Str. 27
81249 München
T +49 89 74 72 57 - 0
F +49 89 74 72 57 - 900
Info@SHS-VIVEON.com
www.SHS-VIVEON.com
Seite 25SHS VIVEON
WEITERE STANDORTE
SHS VIVEON AG
Geschäftsstelle Düsseldorf
Cecilienallee 7
40474 Düsseldorf
SHS VIVEON AG
Geschäftsstelle Kastl
Rudolf-Diesel-Straße 3
84556 Kastl
SHS VIVEON AG
Geschäftsstelle Stuttgart
Nikolaus-Otto-Straße 13
70771 Leinfelden-Echterdingen
SHS VIVEON AG
Geschäftsstelle Wien
Seidengasse 9/2
1070 Wien
TOCHTERGESELLSCHAFTEN
SHS VIVEON GmbH
Cecilienallee 7
40474 Düsseldorf
SHS VIVEON Schweiz AG
Badenerstraße 808
8048 Zürich
GUARDEAN GmbH
Clarita-Bernhard-Str. 27
81249 München
03.11.2015