Einführung in eine Spark MLlib für Big Data und maschinelles Lernen

Inhalt

Dieser Beitrag wurde im Rahmen der . veröffentlicht Data Science Blogathon.

Überblick

Einführung

Apache Spark es un marco de procesamiento de datos que puede realizar rápidamente tareas de procesamiento en conjuntos de datos muy grandes y además puede repartir tareas de procesamiento de datos en múltiples computadoras, entweder allein oder in Verbindung mit anderen verteilten Computertools. Es ist eine ultraschnelle Unified Analytics-Engine für Big Data und maschinelles Lernen.

So unterstützen Sie Python mit Spark, Apache Spark Community veröffentlicht ein Tool, PySpark. Mit PySpark, Sie können mit RDD in der Programmiersprache Python arbeiten.

Spark-Komponenten sind:

  1. Funkenkern
  2. Spark-SQL
  3. Spark-Streaming
  4. Spark MLlib
  5. GraphX
  6. Spark R
Spark MLlib

Funkenkern

Alle von Apache Spark bereitgestellten Funktionen konzentrieren sich auf die Oberseite von Spark Core. Verwaltung aller E-Funktionalitäten / Essentielles S. Wird für die Aufgabenverteilung und Fehlerbehebung verwendet. Spark Core ist mit einer speziellen Sammlung namens RDD (Ausfallsicherheit verteilter Datensatz). RDD gehört zu Sparks Abstraktionen. Spark RDD maneja la partición de datos en todos los nodos de un Cluster. Behält sie als einzelne Einheit im Cluster-Speicherpool. Es gibt zwei Operationen, die in RDD ausgeführt werden:

Transformation: Es ist eine Funktion, die neue RDDs aus vorhandenen RDDs erzeugt.

Aktion: In Transformation, RDDs werden gegeneinander erstellt. Aber wenn wir mit dem realen Datensatz arbeiten wollen, dann, zu diesem Zeitpunkt, wir verwenden Action.

Spark-SQL

Die Spark SQL-Komponente ist ein verteiltes Framework für die Verarbeitung strukturierter Daten. Spark SQL gibt strukturierte und halbstrukturierte Informationen ein. Es ermöglicht auch leistungsstarke und interaktive analytische Anwendungen in historischen und Übertragungsdaten. DataFrames und SQL bieten eine gemeinsame Möglichkeit zum Eingeben eines Bereichs von Datenquellen. Sein Hauptmerkmal ist es, ein Optimierer zu sein, der auf Kosten und Toleranz gegenüber mittleren Abfragefehlern basiert..

Spark-Streaming

Es ist ein Add-on zur Kern-API von Spark, das eine skalierbare Stream-Verarbeitung ermöglicht, performante und fehlertolerante Live-Datenübertragungen. Spark-Streaming, Gruppiert Live-Daten in kleine Batches. Anschließend liefert es es stapelweise zur Verarbeitung an das System aus.. Bietet auch Fehlertoleranzfunktionen.

Spark GraphX:

GraphX in Spark ist eine API für Diagramme und parallele Diagrammausführung. Es handelt sich um eine Netzwerkdiagramm-Analyse-Engine und ein Data Warehouse. In den Graphen ist es auch möglich, zu gruppieren, kategorisieren, Scooch, Routen suchen und finden.

SparkR:

SparkR bietet eine verteilte Datenframework-Implementierung. Unterstützt Operationen als Selektion, ausgefiltert, Aggregation, aber in großen Datensätzen.

Spark MLlib:

Spark MLlib wird verwendet, um maschinelles Lernen in Apache Spark durchzuführen. MLlib besteht aus gängigen Algorithmen und Dienstprogrammen. MLlib on Spark ist eine skalierbare Bibliothek für maschinelles Lernen, die sowohl hochwertige als auch Hochgeschwindigkeitsalgorithmen analysiert. Machine-Learning-Algorithmen als Regression, Einstufung, Gruppierung, Pattern Mining und kollaboratives Filtern. Die Primitive des maschinellen Lernens auf niedrigerer Ebene, als generischer Algorithmus zur Optimierung der Steigungsabnahme, Sie sind auch in MLlib vorhanden.

Spark.ml ist die primäre Machine Learning-API für Spark. Die Bibliothek Spark.ml bietet eine Top-Level-API, die auf DataFrames basiert, um ML-Pipelines zu erstellen.

Die Tools von Spark MLlib werden im Folgenden bereitgestellt.:

  1. ML-Algorithmen
  2. Charakterisierung
  3. Pipelines
  4. Beharrlichkeit
  5. Dienstprogramme
  1. ML-Algorithmen

    ML-Algorithmen bilden den Kern von MLlib. Dazu gehören gängige Lernalgorithmen wie die Klassifizierung., Rückschritt, Kollaboratives Gruppieren und Filtern.

    MLlib standardisiert APIs, um mehrere Algorithmen in einer einzigen Pipeline oder einem Workflow zu kombinieren. Die Schlüsselkonzepte sind die Api-Pipelines, Wo das Konzept der Pipeline vom Scikit-learn-Projekt inspiriert ist.

    Transformator:

    Ein Transformator ist ein Algorithmus, der einen DataFrame in einen anderen DataFrame transformieren kann. Technisch, Ein Transformer implementiert eine Transformationsmethode (), die einen DataFrame in einen anderen konvertiert, im Allgemeinen durch Hinzufügen einer oder mehrerer Spalten. Als Beispiel:

    Ein Feature-Transformator kann einen DataFrame aufnehmen, Lesen einer Spalte (als Beispiel, Text), Weisen Sie es einer neuen Spalte zu (als Beispiel, Feature-Vektoren) und generieren Sie einen neuen DataFrame mit der zugeordneten Spalte.

    Ein Lernmodell kann einen DataFrame aufnehmen, Lesen Sie die Spalte mit den Feature-Vektoren, Prognostizieren Sie das Tag für jeden Feature-Vektor und generieren Sie einen neuen DataFrame mit vorhergesagten Tags, die als Spalte hinzugefügt werden.

    Schätzer:

    Ein Schätzer ist ein Algorithmus, der an einen DataFrame angepasst werden kann, um einen Transformator zu erzeugen. Technisch, ein Estimator implementiert eine Fit-Methode (), die einen DataFrame akzeptiert und ein Modell erzeugt, das ist ein Transformer. Als Beispiel, Ein Lernalgorithmus wie LogisticRegression ist ein Estimator, und Call Fit () trainiert ein LogisticRegressionModel, die ein Modell ist und, deshalb, ein Transformator.

    Transformer.transform () und Estimator.fit () sind staatenlos. In der Zukunft, Zustandsbehaftete Algorithmen können mit alternativen Konzepten kompatibel sein.

    Jede Instanz eines Transformators oder Schätzers hat eine eindeutige ID, que es útil para especificar Parameter (im Folgenden beschrieben).

  2. Charakterisierung

    Charakterisierung umfasst Extraktion, Transformation, verringerte Dimensionalität und KE-Auswahl.

    1. Bei der Feature-Extraktion geht es darum, Features aus Rohdaten zu extrahieren.
    2. Die Featuretransformation umfasst die Skalierung, Erneuern oder Ändern von Features
    3. Bei der Featureauswahl wird eine Teilmenge unverzichtbarer Features aus einem großen Featuresatz ausgewählt..

  3. Rohrleitungen:

    Eine Pipeline verkettet mehrere Transformatoren und Schätzer, um einen AA-Workflow festzulegen. Es bietet auch Tools zum Erstellen von, Durchsuchen und Optimieren von ML-Pipelines.

    Beim maschinellen Lernen, Es ist üblich, eine Sequenz von Algorithmen auszuführen, um die Daten zu verarbeiten und daraus zu lernen. MLlib representa un flujo de trabajo como Rohrleitung, Dies ist eine Abfolge von Pipeline-Stufen (Transformatoren und Schätzer) in einer bestimmten Reihenfolge ausgeführt werden. Wir werden diesen einfachen Workflow als Beispiel für die Ausführung in diesem Abschnitt verwenden..

    Beispiel: Das unten gezeigte Pipelinebeispiel führt die Datenvorverarbeitung in einer bestimmten Reihenfolge wie folgt aus:

    1. Aplicar el método String Indexer para hallar el Index de las columnas categóricas

    2. Anwenden der OneHot-Codierung auf kategoriale Spalten

    3. Anwenden des Zeichenfolgenindexers für die Spalte „Etikett“ aus Variable Ausgabe

    4. VectorAssembler gilt sowohl für kategoriale als auch für numerische Spalten. VectorAssembler ist ein Transformator, der eine gegebene Liste von Spalten in einer einzigen Vektorspalte kombiniert.

    Der Pipeline-Workflow führt die Datenmodellierung in der oben genannten Reihenfolge aus.

    aus pyspark.ml.feature importieren OneHotEncoderEstimator, StringIndexer, VectorAssembler
    categoricalColumns = ['job', 'marital', 'education', 'default', 'housing', 'loan']
    Stufen = []
    für categoricalCol in categoricalColumns:
        stringIndexer = StringIndexer(inputCol = kategorialCol, outputCol = kategorialCol + 'Indexer')
        Encoder = OneHotEncoderEstimator(inputCols=[stringIndexer.getOutputCol()], AusgabeCols=[kategoricalCol + "Vec |"])
        Stufen += [ZeichenfolgeIndexer, Encoder]
    label_stringIdx = StringIndexer(EingabeCol="deponieren", AusgangCol="Etikett")
    Stufen += [label_stringIdx]
    numericColumns = ['age', 'balance', 'duration']
    assemblerInputs = [C + "Vec |" für c in categoricalColumns] + numericColumns
    Vassembler = VectorAssembler(inputCols = assemblerinputs, AusgangCol="Merkmale")
    Stufen += [Vassembler]
    from pyspark.ml import Pipeline
    pipeline = Pipeline(Stufen = Etappen)
    pipelineModel = pipeline.fit(df)
    df = pipelineModel.transform(df)
    selectedCols = ['label', 'features'] + cols
    df = df.select(selectedCols)

    Datenrahmen

    Los marcos de datos proporcionan una API más fácil de utilizar que los RDD. Die DataFrame-basierte API für MLlib bietet eine konsistente API über ML-Algorithmen hinweg und in mehreren Sprachen. Daten-Frameworks erleichtern praktische Pipelines für maschinelles Lernen, insbesondere Feature-Transformationen.

    from pyspark.sql import SparkSession
    spark = SparkSession.builder.appName('mlearnsample').getOrCreate()
    df = spark.read.csv('loan_bank.csv', header = True, inferSchema = True)
    df.printSchema()
  4. Beharrlichkeit:

    Persistenz hilft beim Speichern und Laden von Algorithmen, Modelle und Pipelines. Dies hilft, Zeit und Aufwand zu reduzieren, Da das Modell persistent ist, kann geladen werden / Wiederverwendung jederzeit bei Bedarf.

    from pyspark.ml.classification import LogisticRegression
    lr = LogisticRegression(FunktionenCol="Merkmale", labelCol="Etikett")
    lrModel = lr.fit(Bahn)

    aus pyspark.ml.evaluation importieren BinaryClassificationEvaluator

    Evaluator = BinaryClassificationEvaluator ()

    drucken (‚Testbereich unter ROC‘, evaluator.evaluate (Vorhersagen))

    
    
    Vorhersagen = lrModel.transform(Prüfung)
    Vorhersagen.select('age', 'label', 'roheVorhersage', 'Vorhersage').zeigen()
  5. Dienstprogramme:

    Dienstprogramme für lineare Algebra, Statistik und Datenverarbeitung. Beispiel: mllib.linalg sind die MLlib-Dienstprogramme für lineare Algebra.

Referenzmaterial:

https://spark.apache.org/docs/latest/ml-guide.html

Abschließende Anmerkungen

Spark MLlib ist notwendig, wenn es sich um Big Data und maschinelles Lernen handelt. In diesem Beitrag, Erfahren Sie mehr über die Details von Spark MLlib, Daten-Frameworks und Pipelines. Im zukünftigen Beitrag, Wir werden an praktischem Code arbeiten, um Pipelines zu implementieren und Datenmodelle mit MLlib zu erstellen.

Abonniere unseren Newsletter

Wir senden Ihnen keine SPAM-Mail. Wir hassen es genauso wie du.

Datenlautsprecher