Die Kosten für Speichermedien sinken und das systematische Sammeln von Datenmassen aller Arten wird immer leichter. Big Data ist in den Unternehmen angekommen. Viele Projekte sind bereits über den Pilot- oder Prototypenstatus hinaus. Apache Spark ist ein skalierbares System für die flexible Verarbeitung großer Datenmengen.
Der Vortrag stellt Apache Spark 2 ML vor, beschreibt konkrete Einsatzszenarien und zeigt konkrete Beispiele mit Java 8 aus dem Bereich des maschinellen Lernens.
3. Apache Spark 2 mit Java 8
Machine learning explores the construction and study of
algorithms that can learn from data.
These algorithms build models based on inputs and make
predictions or decisions, rather than following explicitly
programmed instructions.
Machine Learning
4. Apache Spark 2 mit Java 8
• Feature transformations: standardization, normalization, hashing,...
• Classification: logistic regression, naive Bayes,...
• Regression: generalized linear regression, isotonic regression,...
• Decision trees, random forests, and gradient-boosted trees
• Recommendation: alternating least squares (ALS)
• Clustering: K-means, Gaussian mixtures (GMMs),...
• Topic modeling: latent Dirichlet allocation (LDA)
• Model evaluation and hyper-parameter tuning
• Survival analysis: accelerated failure time model
• Sequential pattern mining: FP-growth, association rules, PrefixSpan
• Distributed linear algebra: singular value decomposition (SVD), principal
component analysis (PCA),...
• Statistics: summary statistics, hypothesis testing,...
Spark ML Algorithmen
5. Apache Spark 2 mit Java 8
DataFrames API
Transformers
Estimators
Piplines
Spark ML - Elemente
6. Apache Spark 2 mit Java 8
• Extractors
• Transformers + Selectors
• Estimators
Spark ML – Pipline Elemente
9. Apache Spark 2 mit Java 8
Bietet Test- und Trainingsdaten für die Erkennung
bzw. Klassifizierung von handgeschriebenen
Zeichen (0-9).
50.000 Trainingsdaten mit Klassifizierung
10.000 Testdaten mit Klassifizierung
Auf der Webseite sind mehrere
Lösungsansätze mit Vorgehen und
Ergebnissen verlinkt.
MNIST – Aufgabenstellung
12. Apache Spark 2 mit Java 8
Datenformat ist auf der Webseite dokumentiert.
Es gibt Skripte, die z.B. CSV erzeugen.
Label plus Pixeldaten:
Komma-separiert für alle 28 x 28 Pixel: 0: Schwarz, 255: Weiss
Header:
Label, p0, p1, … p783
MNIST - Daten
13. Apache Spark 2 mit Java 8
2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
89,207,253,255,206,88,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,76,215,252,252,253,252,246,122,0
,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,225,239,1
80,55,119,246,252,230,25,0,0,0,0,0,0,0,0,0,0,0,0
,0,0,0,0,0,0,0,225,195,0,0,0,122,246,252,112,0,0
,0,0,0,0,0,0,0...
MNIST – Daten Beispiel
14. Apache Spark 2 mit Java 8
●
Einlesen der Daten
●
Vorbereiten der Daten: Zerlegen in Label und Feature-Vektor
●
Konfigurieren des ML Algorithmus
●
Trainieren des Models
●
Prüfen des Models mit Testdaten
●
Auswertung
Schritte
19. Apache Spark 2 mit Java 8
StringIndexerModel stringIndexer = new StringIndexer()
.setInputCol("label")
.setHandleInvalid("skip")
.setOutputCol("indexedLabel")
.fit(train);
StringIndexer erzeugen
Bildet die Labels als numerische Werte ab.
21. Apache Spark 2 mit Java 8
DecisionTreeClassifier dt = new DecisionTreeClassifier()
.setMaxDepth(28)
.setSeed(12345L)
.setLabelCol(stringIndexer.getOutputCol())
.setFeaturesCol(assembler.getOutputCol());
DT erzeugen
22. Apache Spark 2 mit Java 8
IndexToString indexToString = new IndexToString()
.setInputCol("prediction")
.setOutputCol("predictedLabel")
.setLabels(stringIndexer.labels());
IndexToString
Rücktransformation der numerischen Labels auf
Sprechende / fachliche Bezeichnungen
23. Apache Spark 2 mit Java 8
Pipeline pipeline = new Pipeline()
.setStages(new PipelineStage[] {
assembler
, stringIndexer
, dt
, indexToString
});
Pipeline
Führt die Schritte in einem Ablauf zusammen
24. Apache Spark 2 mit Java 8
PipelineModel model = pipeline.fit(train);
// Use the model to evaluate the test set.
Dataset<Row> result = model.transform(test);
Ausführen der Pipeline
Führt die Schritte in einem Ablauf zusammen
35. Apache Spark 2 mit Java 8
- Es gibt mehr ML Algorithmen als nur Neuronale Netze!
- Spark bringt viele Standard ML Algorithmen mit.
- Mächtiges Pipeline-Konzept (Modell-Persistenz und
Optimierung)
Fazit