SlideShare une entreprise Scribd logo
1  sur  21
Spark MLlib
A.Stitou
Data Scientist
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
Architecture de la plateforme
SPARK
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.
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
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
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
Pourquoi MLlib
 Scalability
 Performance
 Large documentation et API en ligne
 Maintenable
Performance
Performance
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.
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
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
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)))
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.
Statistique descriptive
 Supported function:
- count
- max
- min
- mean
- variance
…
 Supported data types
- Dense
- Sparse
- Labeled Point
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])
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
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
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()
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

Contenu connexe

Similaire à Sparkmllib

myXtraction, une solution innovante
myXtraction, une solution innovantemyXtraction, une solution innovante
myXtraction, une solution innovante
LASSA Rafik
 
Azure Data Aspectize
Azure Data AspectizeAzure Data Aspectize
Azure Data Aspectize
Fredy Fadel
 
Data Mining (Partie 2).pdf
Data Mining (Partie 2).pdfData Mining (Partie 2).pdf
Data Mining (Partie 2).pdf
OuailChoukhairi
 

Similaire à Sparkmllib (20)

Introduction à scala
Introduction à scalaIntroduction à scala
Introduction à scala
 
MariaDB une base de donnees NewSQL
MariaDB une base de donnees NewSQLMariaDB une base de donnees NewSQL
MariaDB une base de donnees NewSQL
 
Base de données NoSQL
Base de données NoSQLBase de données NoSQL
Base de données NoSQL
 
GUSPQC Québec Avril 2018 - La passerelle de donnees locale
GUSPQC Québec Avril 2018 - La passerelle de donnees localeGUSPQC Québec Avril 2018 - La passerelle de donnees locale
GUSPQC Québec Avril 2018 - La passerelle de donnees locale
 
myXtraction, une solution innovante
myXtraction, une solution innovantemyXtraction, une solution innovante
myXtraction, une solution innovante
 
Spark RDD : Transformations & Actions
Spark RDD : Transformations & ActionsSpark RDD : Transformations & Actions
Spark RDD : Transformations & Actions
 
Scilab command
Scilab commandScilab command
Scilab command
 
575
575575
575
 
Informatique Décisionnelle décisionnelle
Informatique Décisionnelle décisionnelleInformatique Décisionnelle décisionnelle
Informatique Décisionnelle décisionnelle
 
Azure Data Aspectize
Azure Data AspectizeAzure Data Aspectize
Azure Data Aspectize
 
Distributed computing with Spark 2.x
Distributed computing with Spark 2.xDistributed computing with Spark 2.x
Distributed computing with Spark 2.x
 
expression lambda
expression lambdaexpression lambda
expression lambda
 
Les bibliothèques de calcul scientifiques
Les bibliothèques de calcul scientifiquesLes bibliothèques de calcul scientifiques
Les bibliothèques de calcul scientifiques
 
Serveur web / Base de donnees Langages de développement
Serveur web / Base de donnees Langages de développementServeur web / Base de donnees Langages de développement
Serveur web / Base de donnees Langages de développement
 
Jdbc
JdbcJdbc
Jdbc
 
Partie 5 - Neo4j.pdf bd nosql oriente graphe
Partie 5 - Neo4j.pdf bd nosql oriente graphePartie 5 - Neo4j.pdf bd nosql oriente graphe
Partie 5 - Neo4j.pdf bd nosql oriente graphe
 
Valtech - NoSQL, solution alternative ou complémentaire aux bases de données ...
Valtech - NoSQL, solution alternative ou complémentaire aux bases de données ...Valtech - NoSQL, solution alternative ou complémentaire aux bases de données ...
Valtech - NoSQL, solution alternative ou complémentaire aux bases de données ...
 
chap3 conception et implementation
chap3 conception et implementation chap3 conception et implementation
chap3 conception et implementation
 
Data Mining (Partie 2).pdf
Data Mining (Partie 2).pdfData Mining (Partie 2).pdf
Data Mining (Partie 2).pdf
 
11 visual basic .net - acces aux donnees avec ado .net
11 visual basic .net - acces aux donnees avec ado .net11 visual basic .net - acces aux donnees avec ado .net
11 visual basic .net - acces aux donnees avec ado .net
 

Sparkmllib

  • 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. Architecture de la plateforme SPARK
  • 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. 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. 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. 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. Pourquoi MLlib  Scalability  Performance  Large documentation et API en ligne  Maintenable
  • 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. 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. 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. 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. 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. Statistique descriptive  Supported function: - count - max - min - mean - variance …  Supported data types - Dense - Sparse - Labeled Point
  • 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. 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. 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. 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. 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