Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

Sparkmllib

219 views

Published on

MLlib est une librairie de machine Learning qui contient la plus part des algorithmes d’apprentissage classiques (SVMs, naive Bayes, decision tree,régression linéaire, logistic regression,k-means....)

Published in: Data & Analytics
  • Be the first to comment

Sparkmllib

  1. 1. Spark MLlib A.Stitou Data Scientist
  2. 2. Sommaire  Architecture de la plateforme Spark  La librairie MLlib  Les algorithmes de la librairie MLlib  Pourquoi MLlib  Performance  Types de données  Exemples  Fonctions des statistiques descriptives  Application sur python  Matrices distribuées  Références
  3. 3. Architecture de la plateforme SPARK
  4. 4. Architecture de Spark Spark Streaming :  utilisé pour traitement temps-réel des données en flux.  s’appuie sur un mode de traitement en "micro batch"  utilisé pour les données temps-réel DStream, c’est-à-dire une série de RDD (Resilient Distributed Dataset). Spark SQL :  Permet d’exposer les jeux de données Spark via API JDBC et d’exécuter des requêtes de type SQL en utilisant les outils BI et de visualisation traditionnels.  Permet d’extraire, transformer et charger des données sous différents formats (JSON, Parquet, base de données) et les exposer pour des requêtes ad-hoc.
  5. 5. Architecture de Spark Spark GraphX :  GraphX Permet les traitements et de parallélisassions de graphes.  GraphX étend les RDD de Spark en introduisant le Resilient Distributed Dataset Graph, un multi-graphe orienté avec des propriétés attachées aux nœuds et aux arrêtes.  GraphX inclut une collection toujours plus importante d’algorithmes et de builders pour simplifier les tâches d’analyse de graphes
  6. 6. Librairie MLlib  MLlib est une librairie de machine learning qui contient tous les algorithmes d’apprentissage classiques  Traite la classification, la régression, le clustering, le filtrage collaboratif, la réduction de dimensions…  Developé par MLbase team dans le laboratoire AMPLab  Plus de 80 contributions par divers organisations  Supporter par Scala, Python, and Java APIs
  7. 7. Les algorithmes de MLLIB  Statistics: Description, correlation  Clustering: k-means  Collaborative filtering: ALS  Classification: SVMs, naive Bayes, decision tree.  Regression: régression linéaire, logistic regression  Dimensionality: SVD, PCA
  8. 8. Pourquoi MLlib  Scalability  Performance  Large documentation et API en ligne  Maintenable
  9. 9. Performance
  10. 10. Performance
  11. 11. Types de données  MLlib propose des vecteurs locaux et matrices locales (stockés sur un seul nœud de calcul), ainsi que des matrices distribuées sous forme de RDD  Dense vector: Un vecteur dense emploie un seul tableau (array) de valeurs  Sparse vector : deux tableaux sont mis en correspondance, un d’indices et l’autre de valeurs.
  12. 12. Types de données  Labeled point Ce type est spécifique aux algorithmes d’apprentissage et associe un "label", en fait un réel, et un vecteur.  Ce "label" est soit la valeur de la variable Y quantitative à modéliser en régression, soit un code de classe : 0.0, 1.0... en classification supervisée ou discrimination
  13. 13. Exemples scala> import org.apache.spark.mllib.linalg.Vectors // Créer un vecteur dense (1.5, 0.0, 3.5) • scala> val vectDense = new DenseVector(Array(1.5, 0.0, 3.5)) //Créer un vecteur creux (1.5, 0.0, 3.5) en indiquant les indices et valeurs correspondant aux composantes non nulles • scala> val vectCreux1 = new SparseVector(3, Array(0, 2), Array(1.5, 3.5)) • scala> val vectCreux2 = new SparseVector(3, Array(0, 2), Array(1.5, 3.5)) // Accès à une valeur • scala> println(vectCreux1(1)) //Taille des vecteurs • scala> vectDense.size // la méthode size n'a pas d'arguments //Copie profonde d'un vecteur • scala> val vectCreux3 = vectCreux1.copy // la méthode copy n'a pas d'arguments
  14. 14. Labeled Point  C est un type spécifique aux algorithmes d’apprentissage et associe un "label", en fait un réel, et un vecteur.  Ce "label" est soit la valeur de la variable Y quantitative à modéliser en régression, soit un code de classe : 0.0, 1.0... en classification supervisée ou discrimination. •scala> import org.apache.spark.mllib.linalg.Vectors // •scala> import org.apache.spark.mllib.regression.LabeledPoint •// Créer un point étiquetté avec une étiquette positive et un vecteur dense •scala> val pointPos = LabeledPoint(1.0, Vectors.dense(1.0, 0.0, 3.0)) •// Créer un point étiquetté avec une étiquette négative et un vecteur creux • scala> val pointNeg = LabeledPoint(0.0, Vectors.sparse(3, Array(0, 2), Array(1.0, 3.0)))
  15. 15. Rating, Model Rating  Type de données (note d’un article par un client) spécifique aux systèmes de recommandation et donc à l’algorithme de factorisation (ALS) disponible. Model  Model La classe Model est le résultat d’un algorithme d’apprentissage qui dispose de la fonction predict() pour appliquer le modèle à une nouvelle observation ou à une table de données résiliente de nouvelles observations.
  16. 16. Statistique descriptive  Supported function: - count - max - min - mean - variance …  Supported data types - Dense - Sparse - Labeled Point
  17. 17. Application sur python from pyspark.mllib.stat import Statistics from pyspark.mllib.linalg import Vectors import numpy as np ## example data(2 x 2 matrix at least) data= np.array([[1.0,2.0,3.0,4.0,5.0],[1.0,2.0,3.0,4.0,5.0]]) ## to RDD distData = sc.parallelize(data) ## Compute Statistic Value summary = Statistics.colStats(distData) print "Duration Statistics:" print " Mean: {}".format(round(summary.mean()[0],3)) print " St. deviation: {}".format(round(sqrt(summary.variance()[0]),3)) print " Max value: {}".format(round(summary.max()[0],3)) print " Min value: {}".format(round(summary.min()[0],3)) print " Total value count: {}".format(summary.count()) print " Number of non-zero values: {}".format(summary.numNonzeros()[0])
  18. 18. Matrices distribuées  Une matrice distribuée a des indices de type Long dont la valeur commence à 0 pour les lignes et pour les colonnes, et des valeurs de type Double.  MLlib propose trois types de matrices distribuées .  RowMatrix:  IndexedRowMatrix  CoordinateMatrix
  19. 19. Matrices distribuées RowMatrix  Matrice sans indices de lignes.  Une RowMatrix a comme support un RDD de ses lignes, chaque ligne étant suffisamment courte pour être représentée par un vecteur local. Le nombre de lignes peut en revanche être très élevé. IndexedRowMatrix :  possède des indices des lignes, pour le reste est comme RowMatrix CoordinateMatrix  matrice qui utilise comme support un RDD de ses éléments ; format adapté aux matrices qui ont à la fois un grand nombre de lignes et un grand nombre de colonnes mais sont très creuses
  20. 20. Exemples •scala> import org.apache.spark.mllib.linalg.Vector •scala> import org.apache.spark.mllib.linalg.distributed.{IndexedRow, IndexedRowMatrix, RowMatrix} • // Créer une RowMatrix à partir d'un RDD[Vector] •scala> val matLignes: RowMatrix = new RowMatrix(lignes) •// Déterminer la taille de la matrice •scala> val m = matLignes.numRows() • scala> val n = matLignes.numCols() •// Créer une IndexedRowMatrix à partir d'un RDD[IndexedRow] •scala> val idxRows: RDD[IndexedRow] = sc.parallelize(Seq((0L, Vectors.dense(0.0, 1.0, 2.0)),(1L, Vectors.dense(3.0, 4.0, 5.0)),(2L, Vectors.dense(6.0, 7.0, 8.0))).map(x => IndexedRow(x._1, x._2))) •scala> val matLignesIndexees: IndexedRowMatrix = new IndexedRowMatrix(idxRows) •// Déterminer la taille de la matrice •scala> val m = matLignesIndexees.numRows() •scala> val n = matLignesIndexees.numCols()
  21. 21. Réfèrences  Machine Learning Library (MLlib) Guide http://cedric.cnam.fr/vertigo/Cours/RCP216/tpDonneesNumeri ques.html  MLlib: Spark's Machine Learning Library http://www.slideshare.net/jeykottalam/mllib  http://www.math.univ-toulouse.fr/~besse/Wikistat/pdf/st-tutor4- pyspark-mllib.pdf Introduction to Machine Learning  http://www.slideshare.net/rahuldausa/introduction-to-machine- learning

×