PySpark - MLlib

Apache Spark propose une API de Machine Learning appelée MLlib. PySpark a également cette API d'apprentissage automatique en Python. Il prend en charge différents types d'algorithmes, mentionnés ci-dessous -

  • mllib.classification - Le spark.mllibLe package prend en charge diverses méthodes de classification binaire, de classification multiclasse et d'analyse de régression. Certains des algorithmes de classification les plus populaires sontRandom Forest, Naive Bayes, Decision Tree, etc.

  • mllib.clustering - Le clustering est un problème d'apprentissage non supervisé, dans lequel vous souhaitez regrouper des sous-ensembles d'entités les uns avec les autres sur la base d'une certaine notion de similitude.

  • mllib.fpm- La correspondance de modèles fréquente consiste à extraire des éléments fréquents, des ensembles d'éléments, des sous-séquences ou d'autres sous-structures qui font généralement partie des premières étapes pour analyser un ensemble de données à grande échelle. Cela a été un sujet de recherche actif dans l'exploration de données pendant des années.

  • mllib.linalg - Utilitaires MLlib pour l'algèbre linéaire.

  • mllib.recommendation- Le filtrage collaboratif est couramment utilisé pour les systèmes de recommandation. Ces techniques visent à remplir les entrées manquantes d'une matrice d'association d'élément utilisateur.

  • spark.mllib- Il prend actuellement en charge le filtrage collaboratif basé sur un modèle, dans lequel les utilisateurs et les produits sont décrits par un petit ensemble de facteurs latents qui peuvent être utilisés pour prédire les entrées manquantes. spark.mllib utilise l'algorithme des moindres carrés alternés (ALS) pour apprendre ces facteurs latents.

  • mllib.regression- La régression linéaire appartient à la famille des algorithmes de régression. Le but de la régression est de trouver des relations et des dépendances entre les variables. L'interface pour travailler avec des modèles de régression linéaire et des résumés de modèles est similaire au cas de régression logistique.

Il existe d'autres algorithmes, classes et fonctions qui font également partie du package mllib. A partir de maintenant, comprenons une démonstration surpyspark.mllib.

L'exemple suivant est un filtrage collaboratif utilisant l'algorithme ALS pour créer le modèle de recommandation et l'évaluer sur les données d'entraînement.

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 - La commande sera la suivante -

$SPARK_HOME/bin/spark-submit recommend.py

Output - La sortie de la commande ci-dessus sera -

Mean Squared Error = 1.20536041839e-05