Schnelles Denken - Maschinelles Lernen mit Apache Spark 2

Ähnliche Dokumente
Proseminar - Data Mining

Predictive Analytics. Warum datenbasierte Vorhersagen kein Hexenwerk sind. ASQF Automation Day Dr. Stefano Signoriello

Frischer Wind für ein bekanntes Thema Klassifikation 4.0

Data Mining Kapitel 11: Machine Learning. Johannes Zschache Wintersemester 2018/19

Selected Topics in Machine Learning and Reverse Engineering

A linear-regression analysis resulted in the following coefficients for the available training data

Deep Learning Prof. Dr. E. Rahm und Mitarbeiter

Was ist, kann und darf Deep Learning? Dr. Beat Tödtli Laboratory for Web Science

(Pro-)Seminar - Data Mining

Validation Model Selection Kreuz-Validierung Handlungsanweisungen. Validation. Oktober, von 20 Validation

Nutzung maschinellen Lernens zur Extraktion von Paragraphen aus PDF-Dokumenten

Bachelorarbeit Erkennung von Fließtext in PDF-Dokumenten

Machine Learning. Kurzeinführung Erfahrungen in GIS

Predictive. Statistik. Informatik. Daten. Domäne

Projekt-INF Folie 1

"MACHINE LEARNING" IN DER SAS ANALYTIK PLATTFORM

Supervised & Unsupervised Machine Learning

Kann SAS Ihre Handschrift lesen? Machine Learning am Beispiel von Stacked Denoising Autoencoders

Bio-Inspired Credit Risk Analysis

DOKUMENTENKLASSIFIKATION MIT MACHINE LEARNING

Neuronale Netze. Christian Böhm.

Proseminar - Data Mining

Emotion Recognition of Call Center Conversations Robert Bosch Engineering and Business Solutions Private Limited

Predictive Modeling Markup Language. Thomas Morandell

Machine Learning Chancen und Herausforderungen

Artificial Intelligence. Was ist das? Was kann das?

:21 Uhr Modulbeschreibung #1290/1 Seite 1 von 5

Grundlagen zu neuronalen Netzen. Kristina Tesch

6.2 Feed-Forward Netze

Recent Developments in Data Science

Echtzeitfähige Algorithmen für markerloses Tracking und Umfelderkennung , Dr.-Ing. Steffen Herbort, A.R.T. GmbH

Vergleich von SVM und Regel- und Entscheidungsbaum-Lernern

Machine Learning. Dr. Bartholomäus Wissmath 3. Swiss Innovation Day

Inhalt. Einleitung... XIII

Der Sprung in die Zukunft! Einführung in neuronale Netzwerke

Machinelles Lernen. «Eine kleine Einführung» BSI Business Systems Integration AG

Analyse komplexer Szenen mit Hilfe von Convolutional Neural Networks

Neuronale Netze Aufgaben 3

Entwicklung einer Anwendung zur Erkennung von Täuschungsversuchen

Bring your own Schufa!

Data Mining auf Datenströmen Andreas M. Weiner

Eine Einführung in R: Hochdimensionale Daten: n << p Teil II

Machine Learning Tutorial

Künstliche Intelligenz angewandt bei koronarer Herzkrankheit - Cardioexplorer

kurze Wiederholung der letzten Stunde: Neuronale Netze Dipl.-Inform. Martin Lösch (0721) Dipl.-Inform.

H E R Z L I C H W I L L K O M M E N Z U R D O A G K O N F E R E N Z

Wissensentdeckung in Datenbanken

Data Mining Cup deck using PDA or similar devices. Wissensextraktion Multimedia Engineering

Gerhard Svolba, SAS Austria Mannheim, 2. März KSFE

Naive Bayes für Regressionsprobleme

1. Referenzpunkt Transformation

Chapter 6: Classification

Data Mining in technischen Daten sinnvoll oder nicht? DOAG BI 2014

Themen für Beiträge Seminar Selbstorganisation und Emergenz im Sommersemester 2009 Arbeitsgruppe Datenbionik Prof. Dr.

Motivation. Klassifikationsverfahren sagen ein abhängiges nominales Merkmal anhand einem oder mehrerer unabhängiger metrischer Merkmale voraus

Pareto optimale lineare Klassifikation

Feature Selection / Preprocessing

Schneller als Hadoop?

So lösen Sie das multivariate lineare Regressionsproblem von Christian Herta

Big Data - und nun? Was kann die Bioinformatik?

Weitere Untersuchungen hinsichtlich der Anwendung von KNN für Solvency 2. Tom Schelthoff

Inverse Probleme und Maschinelles Lernen

TensorFlow Open-Source Bibliothek für maschinelles Lernen. Matthias Täschner Seminar Deep Learning WS1718 Abteilung Datenbanken Universität Leipzig

Stock Market prediction. Veranstaltung: Neueste Trends in Big Data Analytics Betreuer: Julian Kunkel

SAP Predictive Challenge - Lösung. DI Walter Müllner, Dr. Ingo Peter, Markus Tempel 22. April 2015

Einführung in das Maschinelle Lernen I

Heavy Equipment Demand Prediction with Support Vector Machine Regression Towards a Strategic Equipment Management

Statistics, Data Analysis, and Simulation SS 2015

Neural Networks. mit. Tools für Computerlinguist/innen

PRIP-Preis. Effizientes Object Tracking durch Programmierung von Mehrkernprozessoren und Grafikkarten

Projektarbeit Data Science Klassifikation von Glas

Extraktion der Tabellen aus XML-Dokumenten und Erkennung deren Semantik. Exposé zur Bachelorarbeit

Übersicht. Definition Daten Problemklassen Fehlerfunktionen

SEMINAR KLASSIFIKATION & CLUSTERING EINFÜHRUNG. Stefan Langer CIS Universität München Wintersemester 2016/17

Künstliche Intelligenz

Neuronale Netze selbst programmieren

Maschinelles Lernen. mit und. Effizienz steigern in Massenprozessen. Jan Schinnerling. eworld 2019 Maschinelles Lernen

Wissensentdeckung in Datenbanken

Intelligente Algorithmen Einführung in die Technologie

Marina Sedinkina Folien von Benjamin Roth Planen (CIS LMU andmünchen) Evaluieren von Machine Learning Experimenten 1 / 38

Lehrveranstaltungen im Wintersemester 2012/2013

Übersicht Blockvorlesung: Machinelles Lernen

Ressourcenmanagement in Netzwerken SS06 Vorl. 12,

Python in Computational Neuroscience & Modular toolkit for Data Processing (MDP) Niko Wilbert (HU Berlin)

Künstliche Intelligenz im Maschinen- und Anlagenbau Heilsbringer oder Hypebringer?

Maschinelles Lernen zur Hautkrebsvorhersage

Industrial Data Intelligence Datenbasierte Produktionsoptimierung. Hannover, HMI Peter Seeberg

Proseminar - Data Mining

Maschinelle Sprachverarbeitung

Diskriminatives syntaktisches Reranking für SMT

Javaforum Stuttgart Dr. Ralph Guderlei exxcellent Solutions GmbH

Support Vector Machines, Kernels

Maschinelles Lernen zur Quantifizierung und Defekterkennung an lichtmikroskopischen Bildern prismatischer Li-Ionen Zellen

Logistische Regression

Methoden & Tools für die Expressionsdatenanalyse. Vorlesung Einführung in die Bioinformatik - Expressionsdatenanalyse U. Scholz & M.

Data Science Anwendungen bei innogy Netz & Infrastruktur (G&I)

Bewegungsplanung für den vierbeinigen Roboter AMEE. Björn Bettzüche

Predictive Analytics für Dummies. Click here if your download doesn"t start automatically

Transkript:

Schnelles Denken - Maschinelles Lernen mit Apache Spark 2 Heiko Spindler

Apache Spark - Components

Machine Learning 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.

Spark ML Algorithmen 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 - Elemente DataFrames API Transformers Estimators Piplines

Spark ML Pipline Elemente Extractors Transformers + Selectors Estimators

Basics Pipelines (Training) DataFrames Transformers Estimators Piplines

ML Extractors Transformers Tokenizer StopWordsRemover nn-gram Binarizer PCA PolynomialExpansion Discrete Cosine Transform (DCT) StringIndexer IndexToString OneHotEncoder VectorIndexer Normalizer StandardScaler MinMaxScaler MaxAbsScaler Bucketizer ElementwiseProduct SQLTransformer VectorAssembler QuantileDiscretizer

MNIST Aufgabenstellung 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 Beispiele der Ziffern

MNIST - Online http://myselph.de/neuralnet.html

MNIST - Daten 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 Beispiel 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...

Schritte 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

Vorbereitung

Spark konfigurieren SparkSession spark = SparkSession.builder().appName("JavaMNISTDT").master("local[3]").getOrCreate();

CSV Einlesen DataFrameReader reader = spark.read().option("header", "true").option("delimiter", ",").option("inferschema", true).format("com.databricks.spark.csv"); Dataset<Row> test = reader.load(const.base_dir_datasets+"mnist_test2.csv").filter(e -> Math.random() > 0.00 ); Dataset<Row> train = reader.load(const.base_dir_datasets+"mnist_train2.csv").filter(e -> Math.random() > 0.00 );

Feature Vector erzeugen StructType schema = train.schema(); String[] inputfeatures = Arrays.copyOfRange(schema.fieldNames(), 1, schema.fieldnames().length); VectorAssembler assembler = new VectorAssembler().setInputCols( inputfeatures ).setoutputcol( "features" );

StringIndexer erzeugen StringIndexerModel stringindexer = new StringIndexer().setInputCol("label").setHandleInvalid("skip").setOutputCol("indexedLabel").fit(train); Bildet die Labels als numerische Werte ab.

Entscheidungsbaum

DT erzeugen DecisionTreeClassifier dt = new DecisionTreeClassifier().setMaxDepth(28).setSeed(12345L).setLabelCol(stringIndexer.getOutputCol()).setFeaturesCol(assembler.getOutputCol());

IndexToString IndexToString indextostring = new IndexToString().setInputCol("prediction").setOutputCol("predictedLabel").setLabels(stringIndexer.labels()); Rücktransformation der numerischen Labels auf Sprechende / fachliche Bezeichnungen

Pipeline Pipeline pipeline = new Pipeline().setStages(new PipelineStage[] { assembler, stringindexer, dt, indextostring }); Führt die Schritte in einem Ablauf zusammen

Ausführen der Pipeline PipelineModel model = pipeline.fit(train); // Use the model to evaluate the test set. Dataset<Row> result = model.transform(test); Führt die Schritte in einem Ablauf zusammen

MNIST Ergebnisse DT +-----+---+----+---+---+---+---+---+---+---+---+ label0 1 2 3 4 5 6 7 8 9 +-----+---+----+---+---+---+---+---+---+---+---+ 0 9191 12 5 3 6 12 3 7 12 1 1 10926 7 1 5 5 2 15 1 2 14 6 88133 12 9 16 31 24 6 3 8 5 34 8528 44 2 14 24 19 4 5 2 8 3 8593 19 20 20 43 5 11 9 6 44 10 74812 8 24 20 6 18 7 12 2 16 21 8591 17 5 7 2 15 20 19 8 8 1 92211 22 8 23 3 25 31 16 25 12 19 79030 9 11 2 6 17 27 15 1 17 29 884 +-----+---+----+---+---+---+---+---+---+---+---+ Duration: ~2 minutes Precision: 0.8806

Random Forests

RandomForest RandomForestClassifier rf = new RandomForestClassifier().setNumTrees(30).setLabelCol("indexedLabel").setFeaturesCol(assembler.getOutputCol()); Pipeline pipeline = new Pipeline().setStages(new PipelineStage[] { assembler, stringindexer, rf, indextostring });

MNIST Ergebnisse RF +-----+----+----+---+----+----+----+----+----+---+----+ label0 1 2 3 4 5 6 7 8 9 +-----+----+----+---+----+----+----+----+----+---+----+ 0 968 1 3 4 1 3 1 11224 3 1 4 1 2 8 9985 4 1 3 7 4 2 3 8 974 7 1 9 5 6 4 1 1 3 1 940 6 1 8 21 5 3 3 17 3 840 5 5 12 4 6 9 3 3 1 5 7 926 4 7 1 5 20 2 1 984 1 14 8 2 7 12 5 4 4 4 92610 9 7 5 4 11 14 4 1 4 6 953 +-----+----+----+---+----+----+----+----+----+---+----+ Duration: ~4 minutes Precision: 0.963

Neuronale Netze

MultiLayerPerceptronClassifier (MLPC) 784 Pixel => Input Neuronen 800 Versteckte Neuronen 10 Ausgabe Neuronen => 10 Zielklassen (10 Ziffern) Alle Neuronen sind mit allen Neuronen der vorherigen Schicht verbunden

MNIST - MLPC int[] layers = { 784, 800, 100, 10 }; MultilayerPerceptronClassifier mlpc = new MultilayerPerceptronClassifier().setLabelCol(stringIndexer.getOutputCol()).setFeaturesCol(assembler.getOutputCol()).setLayers(layers);

MNIST - MLPC int[] layers = { 784, 800, 100, 10 }; MultilayerPerceptronClassifier mlpc = new MultilayerPerceptronClassifier().setLabelCol(stringIndexer.getOutputCol()).setFeaturesCol(assembler.getOutputCol()).setLayers(layers); Laufzeit: 33 Minuten Ergebnisse verbessert sich leicht auf 96,7%

MNIST Ergebnisse MLPC +-----+----+----+----+----+----+----+----+----+----+----+ label0 1 2 3 4 5 6 7 8 9 +-----+----+----+----+----+----+----+----+----+----+----+ 0 970 1 3 2 2 1 1 1 11281 1 1 3 1 2 5 1 10036 2 1 3 6 5 3 4 987 7 1 4 3 4 4 1 2 958 5 4 12 5 3 1 6 3 869 2 1 4 3 6 4 3 3 7 4 936 1 7 3 6 3 1 1009 6 8 2 1 3 6 4 4 1 4 945 4 9 3 4 10 3 3 6 5 975 +-----+----+----+----+----+----+----+----+----+----+----+ Duration: ~63 minutes Precision: 0.978

Links Heise.de Developer: https://heise.de/-3657735 SourceCode: https://github.com/brainbrix/spark-tests

Fazit - Es gibt mehr ML Algorithmen als nur Neuronale Netze! - Spark bringt viele Standard ML Algorithmen mit. - Mächtiges Pipeline-Konzept (Modell-Persistenz und Optimierung)

Heiko Spindler hs@heikospindler.de Fragen & Antworten

MNIST - Optimierung Binarizer Affine-Transformationen (z.b. Drehungen + / - 10 Grad)...

Links http://pjreddie.com/projects/mnist-in-csv/ http://yann.lecun.com/exdb/mnist/ http://mike.seddon.ca/using-apache-spark-neural-networks-torecognise-digits/