PySpark - MLlib

Apache Spark oferece uma API de aprendizado de máquina chamada MLlib. O PySpark também possui essa API de aprendizado de máquina em Python. Ele suporta diferentes tipos de algoritmos, que são mencionados abaixo -

  • mllib.classification - o spark.mllibO pacote suporta vários métodos para classificação binária, classificação multiclasse e análise de regressão. Alguns dos algoritmos mais populares de classificação sãoRandom Forest, Naive Bayes, Decision Treeetc.

  • mllib.clustering - O agrupamento é um problema de aprendizagem não supervisionado, em que você pretende agrupar subconjuntos de entidades entre si com base em alguma noção de similaridade.

  • mllib.fpm- A correspondência de padrão frequente é a mineração de itens frequentes, conjuntos de itens, subsequências ou outras subestruturas que geralmente estão entre as primeiras etapas para analisar um conjunto de dados em grande escala. Este tem sido um tópico ativo de pesquisa em mineração de dados há anos.

  • mllib.linalg - Utilitários MLlib para álgebra linear.

  • mllib.recommendation- A filtragem colaborativa é comumente usada para sistemas de recomendação. Essas técnicas visam preencher as entradas ausentes de uma matriz de associação de itens do usuário.

  • spark.mllib- Suporta atualmente a filtragem colaborativa baseada em modelo, na qual usuários e produtos são descritos por um pequeno conjunto de fatores latentes que podem ser usados ​​para prever entradas ausentes. spark.mllib usa o algoritmo Alternating Least Squares (ALS) para aprender esses fatores latentes.

  • mllib.regression- A regressão linear pertence à família dos algoritmos de regressão. O objetivo da regressão é encontrar relacionamentos e dependências entre variáveis. A interface para trabalhar com modelos de regressão linear e resumos de modelo é semelhante ao caso de regressão logística.

Existem outros algoritmos, classes e funções também como parte do pacote mllib. A partir de agora, vamos entender uma demonstração sobrepyspark.mllib.

O exemplo a seguir é de filtragem colaborativa usando algoritmo ALS para construir o modelo de recomendação e avaliá-lo nos dados de treinamento.

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 - O comando será o seguinte -

$SPARK_HOME/bin/spark-submit recommend.py

Output - A saída do comando acima será -

Mean Squared Error = 1.20536041839e-05