PySpark - MLlib

Apache Spark offre un'API di Machine Learning chiamata MLlib. PySpark ha anche questa API di machine learning in Python. Supporta diversi tipi di algoritmi, che sono menzionati di seguito:

  • mllib.classification - Il spark.mllibIl pacchetto supporta vari metodi per la classificazione binaria, la classificazione multiclasse e l'analisi di regressione. Alcuni degli algoritmi più popolari nella classificazione sonoRandom Forest, Naive Bayes, Decision Tree, eccetera.

  • mllib.clustering - Il clustering è un problema di apprendimento senza supervisione, in base al quale si mira a raggruppare sottoinsiemi di entità tra loro sulla base di una qualche nozione di somiglianza.

  • mllib.fpm- Il pattern matching frequente consiste nell'estrazione di elementi, set di elementi, sottosequenze o altre sottostrutture frequenti che di solito sono tra i primi passaggi per analizzare un set di dati su larga scala. Questo è stato un argomento di ricerca attivo nel data mining per anni.

  • mllib.linalg - Utilità MLlib per algebra lineare.

  • mllib.recommendation- Il filtraggio collaborativo è comunemente utilizzato per i sistemi di raccomandazione. Queste tecniche mirano a riempire le voci mancanti di una matrice di associazione di elementi utente.

  • spark.mllib- Supporta attualmente il filtraggio collaborativo basato su modello, in cui utenti e prodotti vengono descritti da un piccolo insieme di fattori latenti che possono essere utilizzati per prevedere le voci mancanti. spark.mllib utilizza l'algoritmo ALS (Alternating Least Squares) per apprendere questi fattori latenti.

  • mllib.regression- La regressione lineare appartiene alla famiglia degli algoritmi di regressione. L'obiettivo della regressione è trovare relazioni e dipendenze tra le variabili. L'interfaccia per lavorare con modelli di regressione lineare e riepiloghi dei modelli è simile al caso di regressione logistica.

Ci sono anche altri algoritmi, classi e funzioni come parte del pacchetto mllib. A partire da ora, cerchiamo di capire una dimostrazione supyspark.mllib.

L'esempio seguente riguarda il filtraggio collaborativo che utilizza l'algoritmo ALS per creare il modello di raccomandazione e valutarlo sui dati di addestramento.

Dataset used - test.data

1,1,5.0
1,2,1.0
1,3,5.0
1,4,1.0
2,1,5.0
2,2,1.0
2,3,5.0
2,4,1.0
3,1,1.0
3,2,5.0
3,3,1.0
3,4,5.0
4,1,1.0
4,2,5.0
4,3,1.0
4,4,5.0
--------------------------------------recommend.py----------------------------------------
from __future__ import print_function
from pyspark import SparkContext
from pyspark.mllib.recommendation import ALS, MatrixFactorizationModel, Rating
if __name__ == "__main__":
   sc = SparkContext(appName="Pspark mllib Example")
   data = sc.textFile("test.data")
   ratings = data.map(lambda l: l.split(','))\
      .map(lambda l: Rating(int(l[0]), int(l[1]), float(l[2])))
   
   # Build the recommendation model using Alternating Least Squares
   rank = 10
   numIterations = 10
   model = ALS.train(ratings, rank, numIterations)
   
   # Evaluate the model on training data
   testdata = ratings.map(lambda p: (p[0], p[1]))
   predictions = model.predictAll(testdata).map(lambda r: ((r[0], r[1]), r[2]))
   ratesAndPreds = ratings.map(lambda r: ((r[0], r[1]), r[2])).join(predictions)
   MSE = ratesAndPreds.map(lambda r: (r[1][0] - r[1][1])**2).mean()
   print("Mean Squared Error = " + str(MSE))
   
   # Save and load model
   model.save(sc, "target/tmp/myCollaborativeFilter")
   sameModel = MatrixFactorizationModel.load(sc, "target/tmp/myCollaborativeFilter")
--------------------------------------recommend.py----------------------------------------

Command - Il comando sarà il seguente -

$SPARK_HOME/bin/spark-submit recommend.py

Output - L'output del comando precedente sarà -

Mean Squared Error = 1.20536041839e-05