Introduzione a Spark MLlib per Big Data e Machine Learning

Contenuti

Questo post è stato pubblicato come parte del Blogathon sulla scienza dei dati.

Panoramica

introduzione

Apache Spark è un framework di elaborazione dati in grado di eseguire rapidamente attività di elaborazione su set di dati molto grandi e può anche distribuire attività di elaborazione dati su più computer., da solo o in combinazione con altri strumenti IT distribuiti. È un motore di analisi unificato ultraveloce per big data e machine learning.

Per supportare Python con Spark, La community di Apache Spark ha rilasciato uno strumento, PySpark. Con PySpark, puoi lavorare con RDD nel linguaggio di programmazione Python.

I componenti di Spark sono:

  1. Nucleo Scintilla
  2. Spark SQL
  3. Spark in streaming
  4. Spark MLlib
  5. GraficoX
  6. Scintilla R
Spark MLlib

Nucleo Scintilla

Tutte le funzionalità fornite da Apache Spark sono centrate su Spark Core. Gestisci tutte le funzionalità di E / S essenziale. Utilizzato per l'invio delle attività e il ripristino in caso di arresto anomalo. Spark Core è integrato con una collezione speciale chiamata RDD (set di dati distribuiti resilienti). RDD è tra le astrazioni di Spark. Spark RDD gestisce il partizionamento dei dati su tutti i nodi in un cluster. Li mantiene nel pool di memoria del cluster come una singola unità. Ci sono due operazioni eseguite in RDD:

Trasformazione: È una funzione che produce nuovi RDD da RDD esistenti.

Azione: in trasformazione, Gli RDD si creano a vicenda. Ma quando vogliamo lavorare con il set di dati effettivo, poi, a quel punto, usiamo Action.

Spark SQL

Il componente Spark SQL è un framework distribuito per l'elaborazione di dati strutturati. Spark SQL lavora per inserire informazioni strutturate e semi-strutturate. Consente inoltre applicazioni analitiche potenti e interattive su dati storici e in streaming.. DataFrame e SQL forniscono un modo comune per accedere a una serie di origini dati. La sua caratteristica principale è quella di essere un ottimizzatore basato su costi e tolleranza ai guasti di media query.

Spark in streaming

È un plug-in per l'API di base di Spark che consente l'elaborazione di flussi scalabili, alte prestazioni e tolleranza ai guasti delle trasmissioni di dati in tempo reale. Spark in streaming, raggruppa i dati in tempo reale in piccoli batch. Viene quindi consegnato al sistema batch per l'elaborazione.. Fornisce inoltre caratteristiche di tolleranza agli errori.

Grafico scintilla X:

GraphX ​​su Spark è un'API per grafici ed esecuzione parallela di grafici. È un motore di analisi della grafica di rete e un data warehouse. Nei grafici è anche possibile raggruppare, classificare, viaggiare, cerca e trova percorsi.

SparkR:

SparkR fornisce un'implementazione di frame di dati distribuiti. Supporta operazioni come selezione, filtrato, aggregazione, ma in grandi set di dati.

Spark MLlib:

Spark MLlib viene utilizzato per eseguire l'apprendimento automatico su Apache Spark. MLlib è costituito da algoritmi e utilità popolari. MLlib su Spark è una libreria di machine learning scalabile che analizza algoritmi sia di alta qualità che ad alta velocità. Algoritmi di apprendimento automatico come regressione, classificazione, raggruppamento, estrazione di modelli e filtraggio collaborativo. Primitive di apprendimento automatico di livello inferiore, come algoritmo generico di ottimizzazione della discesa del gradiente, sono presenti anche in MLlib.

Spark.ml è l'API di apprendimento automatico principale per Spark. Biblioteca Spark.ml offre un'API di primo livello basata su DataFrames per creare pipeline ML.

Gli strumenti Spark MLlib sono forniti di seguito:

  1. Algoritmi ML
  2. Caratterizzazione
  3. Condutture
  4. Persistenza
  5. Utilità
  1. Algoritmi ML

    Gli algoritmi ML costituiscono il nucleo di MLlib. Questi includono algoritmi di apprendimento comuni come la classificazione, regressione, raggruppamento collaborativo e filtraggio.

    MLlib standardizza le API per aiutare a combinare più algoritmi in un'unica pipeline o flusso di lavoro. I concetti chiave sono le API Pipelines, dove il concept della pipeline si ispira al progetto scikit-learn.

    Trasformatore:

    Un trasformatore è un algoritmo che può trasformare un DataFrame in un altro DataFrame. tecnicamente, un trasformatore implementa un metodo di trasformazione (), che converte un DataFrame in un altro, generalmente aggiungendo una o più colonne. Come esempio:

    Un trasformatore di funzionalità può accettare un DataFrame, leggere una colonna (come esempio, testo), assegnalo a una nuova colonna (come esempio, vettori di caratteristiche) e genera un nuovo DataFrame con la colonna mappata allegata.

    Un modello di apprendimento può prendere un DataFrame, leggi la colonna contenente i vettori delle caratteristiche, prevedere l'etichetta per ogni vettore di feature e generare un nuovo DataFrame con etichette previste aggiunte come colonna.

    Estimatore:

    Uno stimatore è un algoritmo che può essere adattato a un DataFrame per produrre un trasformatore. tecnicamente, uno stimatore implementa un metodo di adattamento (), che accetta un DataFrame e produce un Modello, cos'è un trasformatore?. Come esempio, un algoritmo di apprendimento come LogisticRegression è uno stimatore, e chiama in forma () addestrare un modello di regressione logistica, cos'è un modello e, perché, un trasformatore.

    Transformer.transform () e Estimator.fit () sono apolidi. Nel futuro, gli algoritmi stateful possono essere compatibili con concetti alternativi.

    Ogni istanza di un trasformatore o stimatore ha un ID univoco, che è utile per specificare i parametri (descritto sotto).

  2. Caratterizzazione

    La caratterizzazione include l'estrazione, trasformazione, diminuzione della dimensionalità e selezione delle caratteristiche.

    1. L'estrazione delle funzionalità riguarda l'estrazione delle funzionalità dai dati grezzi.
    2. La trasformazione delle feature include il ridimensionamento, rinnovare o modificare le funzionalità
    3. La selezione delle funzionalità implica la scelta di un sottoinsieme di funzionalità indispensabili da un ampio set di funzionalità.

  3. Condutture:

    Una pipeline concatena più trasformatori e stimatori per specificare un flusso di lavoro AA. Fornisce anche strumenti per costruire, esaminare e regolare le pipeline ML.

    Nell'apprendimento automatico, è comune eseguire una sequenza di algoritmi per elaborare e apprendere dai dati. MLlib rappresenta un flusso di lavoro come Pipeline, che è una sequenza di Fasi Pipeline (Trasformatori e Stimatori) da eseguire in un ordine specifico. Useremo questo semplice flusso di lavoro come esempio di esecuzione in questa sezione.

    Esempio: l'esempio di pipeline mostrato di seguito esegue la preelaborazione dei dati in un ordine specifico come indicato di seguito:

    1. Applicare il metodo String Indexer per trovare l'indice delle colonne categoriali

    2. Applicare la codifica OneHot per le colonne categoriali

    3. Applica l'indicizzatore di stringhe per la colonna “etichetta” della variabile di uscita

    4. VectorAssembler si applica sia alle colonne categoriali che alle colonne numeriche. VectorAssembler è un trasformatore che combina un determinato elenco di colonne in un'unica colonna vettoriale.

    Il flusso di lavoro della pipeline eseguirà la modellazione dei dati nell'ordine specifico sopra.

    da pyspark.ml.feature importa oneHotEncoderEstimator, Metodo StringIndexer, VectorAssembler
    categoricoColonne = ['lavoro', «coniugale», «istruzione», 'predefinito', 'abitazione', 'prestito']
    fasi = []
    for categoricalCol in categoricalColumns:
        stringIndexer = StringIndexer(inputCol = categoricicalCol, outputCol = categoricicalCol + 'Indicizzatore')
        encoder = OneHotEncoderEstimator(inputCols=[stringIndexer.getOutputCol()], outputCols=[categoricicalCol + "Vec ·"])
        fasi += [stringIndexer, codificatore]
    label_stringIdx = StringIndexer(inputCol="depositare", outputCol="etichetta")
    fasi += [label_stringIdx]
    numericoColonne = ['età', 'equilibrio', 'durata']
    assemblerInputs = [C + "Vec ·" for c in categoricColumns] + numericColumns
    Vassembler = VectorAssembler(inputCols = assemblerInputs, outputCol="caratteristiche")
    fasi += [Vassembler]
    from pyspark.ml import Pipeline
    pipeline = Pipeline(fasi = fasi)
    pipelineModel = pipeline.fit(df)
    df = pipelineModel.transform(df)
    selectedCols = ['etichetta', 'caratteristiche'] + cols
    df = df.select(selectedCols)

    Cornice dati

    I framework di dati forniscono un'API più facile da usare rispetto agli RDD. L'API basata su DataFrame per MLlib fornisce un'API coerente tra gli algoritmi ML e in più lingue. I framework di dati facilitano le pipeline pratiche di machine learning, in particolare le trasformazioni delle feature.

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

    La persistenza aiuta a salvare e caricare gli algoritmi, modelli e pipeline. Questo aiuta a ridurre i tempi e gli sforzi, Poiché il modello è persistente, può essere caricato / riutilizzare in qualsiasi momento quando necessario.

    from pyspark.ml.classification import LogisticRegression
    lr = LogisticRegression(featuresCol="caratteristiche", labelCol="etichetta")
    lrModel = lr.fit(treno)

    de pyspark.ml.evaluation import BinaryClassificationEvaluator

    valutatore = BinaryClassificationEvaluator ()

    Stampa ("Area di prova sotto ROC", valutatore.valutare (predizioni))

    
    
    previsioni = lrModel.transform(test)
    previsioni.seleziona('età', 'etichetta', 'previsione grezza', 'predizione').mostrare()
  5. Utilità:

    Utilità per l'algebra lineare, statistiche e gestione dei dati. Esempio: mllib.linalg sono le utility MLlib per l'algebra lineare.

Materiale di riferimento:

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

Note finali

Spark MLlib è necessario se si tratta di big data e machine learning. In questo post, appreso i dettagli di Spark MLlib, frame di dati e pipeline. In futuro post, lavoreremo su codice pratico per implementare Pipeline e costruire modelli di dati utilizzando MLlib.

Iscriviti alla nostra Newsletter

Non ti invieremo posta SPAM. Lo odiamo quanto te.