PySpark - MLlib

Apache Spark ofrece una API de aprendizaje automático llamada MLlib. PySpark también tiene esta API de aprendizaje automático en Python. Admite diferentes tipos de algoritmos, que se mencionan a continuación:

  • mllib.classification - el spark.mllibEl paquete admite varios métodos de clasificación binaria, clasificación multiclase y análisis de regresión. Algunos de los algoritmos de clasificación más populares sonRandom Forest, Naive Bayes, Decision Treeetc.

  • mllib.clustering - La agrupación en clústeres es un problema de aprendizaje no supervisado, en el que el objetivo es agrupar subconjuntos de entidades entre sí en función de alguna noción de similitud.

  • mllib.fpm- La coincidencia de patrones frecuente consiste en extraer elementos frecuentes, conjuntos de elementos, subsecuencias u otras subestructuras que generalmente se encuentran entre los primeros pasos para analizar un conjunto de datos a gran escala. Este ha sido un tema de investigación activo en la minería de datos durante años.

  • mllib.linalg - Utilidades MLlib para álgebra lineal.

  • mllib.recommendation- El filtrado colaborativo se usa comúnmente para los sistemas de recomendación. Estas técnicas tienen como objetivo completar las entradas faltantes de una matriz de asociación de elementos de usuario.

  • spark.mllib- Actualmente es compatible con el filtrado colaborativo basado en modelos, en el que los usuarios y los productos se describen mediante un pequeño conjunto de factores latentes que se pueden utilizar para predecir las entradas que faltan. spark.mllib utiliza el algoritmo de mínimos cuadrados alternos (ALS) para conocer estos factores latentes.

  • mllib.regression- La regresión lineal pertenece a la familia de los algoritmos de regresión. El objetivo de la regresión es encontrar relaciones y dependencias entre variables. La interfaz para trabajar con modelos de regresión lineal y resúmenes de modelos es similar al caso de regresión logística.

Hay otros algoritmos, clases y funciones también como parte del paquete mllib. A partir de ahora, entendamos una demostración enpyspark.mllib.

El siguiente ejemplo es de filtrado colaborativo utilizando el algoritmo ALS para construir el modelo de recomendación y evaluarlo en los datos de entrenamiento.

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 - El comando será el siguiente -

$SPARK_HOME/bin/spark-submit recommend.py

Output - La salida del comando anterior será -

Mean Squared Error = 1.20536041839e-05