SlideShare a Scribd company logo
1 of 46
Download to read offline
@hayssams	
  
#devoxxml	
  
Machine	
  Learning	
  avec	
  Spark,	
  MLLib	
  et	
  D3.js	
  
Datascientist : Une personne
meilleure en statistiques que
n’importe quel développeur et
meilleure en développement
que n’importe quel
Statisticien
- Josh Wills (Cloudera)
Datascientist : Une personne
moins bonne en statistiques que
n’importe quel statisticien et
moins bonne en développement
que n’importe quel développeur
- Will Cukierski (Kaggle)
@hayssams	
  #devoxxml	
  
Machine	
  Learning	
  avec	
  Spark,	
  MLLib	
  et	
  D3.js	
  
Hayssam Saleh
blog.ebiznext.com
slideshare.net/hayssamsaleh1
@hayssams	
  #devoxxml	
  
•  Motivation de l’approche Machine Learning
•  Pourquoi Spark / MLLib
•  La préparation de l’échantillon de données
•  La sélection de l’algorithme MLLib
•  La visualisation avec D3.js
Sommaire	
  
@hayssams	
  #devoxxml	
  
Machine	
  Learning	
  
•  Branche de l’intelligence artificielle
•  Capacité à apprendre sans être explicitement
programmé
•  Exemple : Distinguer les mails de type spam des autres
@YourTwiDerHandle	
  @YourTwiDerHandle	
  @hayssams	
  #devoxxml	
  
Motivation de l’approche Machine Learning
@hayssams	
  #devoxxml	
  
Pourquoi	
  le	
  Machine	
  Learning	
  
•  Salaire
•  Statut marital
•  Propriétaire
•  …
Prédicteurs
Variables indépendantes
Réponse / Label
Variable dépendante
@hayssams	
  #devoxxml	
  
SoluHon	
  1	
  :	
  Manpower	
  
•  Salaire
•  Statut marital
•  Propriétaire
•  …
L  Délai de traitement
L  Coût du traitement
L  Qualité inégale de l’évaluation	
  
@hayssams	
  #devoxxml	
  
SoluHon	
  2	
  :	
  BRMS	
  
•  Salaire
•  Statut marital
•  Propriétaire
•  …
L  La définition de nouvelles règles devient de
plus en plus complexe avec la prise en
compte du contexte
L  Devient opaque rapidement
L  Pas d’évolution avec le pattern de
comportement des clients
Statut	
  ==	
  Marié	
   +1	
  
Statut	
  ==	
  Divorcé	
   -­‐2,25	
  
Salaire	
  >	
  1000	
   +1,4	
  
Propriétaire	
  ==	
  Vrai	
   +4	
  
….	
  
@hayssams	
  #devoxxml	
  
SoluHon	
  3	
  :	
  Machine	
  Learning	
  
•  Salaire
•  Statut marital
•  Propriétaire
•  …
•  Salaire
•  Statut marital
•  Propriétaire
•  …
•  Salaire
•  Statut marital
•  Propriétaire
•  …
•  Salaire
•  Statut marital
•  Propriétaire
•  …
•  Salaire
•  Statut marita
l
•  Propriétaire
•  …
•  => OK / KO
Historique représentatif
+
Prédicteurs significatifs
+
Labels
Calcul du meilleur
Algorithme de prédiction
J  Précision
J  Autonomie
J  Performance
J  Scalabilité
@hayssams	
  #devoxxml	
  
Cas	
  d’uHlisaHon	
  
•  Recommandation
•  Classification de contenu en groupes prédéfinis
•  Regroupement de contenus similaires
•  Recherche d’association/patterns dans les actions/comportements
•  Identification de topics clefs
•  Détection de fraude et d’anomalies
•  Ranking
@YourTwiDerHandle	
  @YourTwiDerHandle	
  @hayssams	
  #devoxxml	
  
Pourquoi Spark / MLLib
@hayssams	
  #devoxxml	
  
Spark	
  :	
  DatascienHst	
  DevOps	
  
Analytics
d’investigation
Analytics
opérationnelle
Echantillon de données
Poste de travail
Requête Ad Hoc offline
Métrique : La précision
Facilité de développement
Données de production
Cluster de serveurs
Sollicitation online continue
Métrique : Le temps de réponse
Performance
Données
Infrastructure
Contexte
Métrique
Langage
@hayssams	
  #devoxxml	
  
Spark	
  :	
  DatascienHst	
  DevOps	
  
Analytics
d’investigation
Analytics
opérationnelle
@YourTwiDerHandle	
  @YourTwiDerHandle	
  @hayssams	
  #devoxxml	
  
La préparation de l’échantillon de données
@hayssams	
  #devoxxml	
  
Démarche	
  
• Le modèle est considéré satisfaisant lorsque le niveau de
précision est considéré comme étant satisfaisant
EchanHllon	
  
EchanHllon	
  labéllisé	
  
EchanHllon	
  non	
  
labellisé	
  
Algorithme	
  
d’apprenHssage	
  
Modèle	
  
Performance	
  
Entrainement Test
génère est appliqué
Performance d’entrainement Performance dans les cas réels
Historique	
  +	
  Prédicteurs	
  +	
  Labels	
  
@hayssams	
  #devoxxml	
  
Améliorer	
  la	
  modèle	
  
Trois causes possibles à la défaillance d’un modèle
Overfitting
Biaisé
Underfitting
L’échantillon n’est pas représentatif
L’algorithme de ML n’est pas généralisable
Les prédicteurs sont mal choisis
L’algorithme de ML est inadapté
Un mixte des 3 causes ci-dessus
@hayssams	
  #devoxxml	
  
Prédicteurs	
  mal	
  choisis	
  
Biaisé Les prédicteurs sont mal choisis
•  Nom
•  Prénom
•  …
Changer les prédicteurs
@hayssams	
  #devoxxml	
  
Traiter	
  l’overfi`ng	
  :	
  Variance	
  importante	
  
Overfitting
L’échantillon n’est pas représentatif
L’algorithme de ML n’est pas généralisable
Echan1llon	
  
d’entrainement	
  
Célibataire	
  
Célibataire	
  
Célibataire	
  
Célibataire	
  
Echan1llon	
  de	
  
test	
  
Célibataire	
  
Marié	
  
Divorcé	
  
Marié	
  
Taux d’erreur faible Taux d’erreur important
Augmenter la représentativité de l’échantillon
Ou réduire les prédicteurs
@hayssams	
  #devoxxml	
  
Modèle	
  inadapté	
  
Underfitting L’algorithme de ML est inadapté
Les outils de visualisation
@YourTwiDerHandle	
  @YourTwiDerHandle	
  @hayssams	
  #devoxxml	
  
La sélection de l’algorithme dans MLLib
@hayssams	
  #devoxxml	
  
ClassificaHon	
  :	
  ApprenHssage	
  supervisé	
  
Le résultat est une valeur parmi N sans ordre
quelconque et dans un ensemble prédéfini
Exemple : Ce film est-il un film d’horreur ou un film
d’actions ou un film romantique ?
Prédire le label de nouvelles données à partir des
labels des données existantes
@hayssams	
  #devoxxml	
  
Régression	
  :	
  ApprenHssage	
  supervisé	
  
Le résultat est une valeur dans un ensemble de
valeurs continues
Exemple : Quel est le prix prévisionnel de cet
appartement dans les 6 prochains mois ?
Prédire le label de nouvelles données à partir des
labels des données existantes
@hayssams	
  #devoxxml	
  
Clustering	
  :	
  ApprenHssage	
  non	
  supervisé	
  
Les données en entrée de l’algorithme d’apprentissage
ne sont pas labellisées
Grouper les consommateurs en fonction de leur
similarité
Prédire le label de données existantes à partir de leurs
prédicteurs
@hayssams	
  #devoxxml	
  
CollaboraHve	
  filtering	
  
Prédire l’intérêt d’un utilisateur pour un item
@hayssams	
  #devoxxml	
  
Fréquent	
  PaDern	
  Matching	
  
Extraire les produits les plus souvent achetés
ensemble dans le même panier
@YourTwiDerHandle	
  @YourTwiDerHandle	
  @hayssams	
  #devoxxml	
  
Scoring avec le meilleur arbre de décision
@hayssams	
  #devoxxml	
  
Recherche	
  du	
  meilleur	
  arbre	
  
Prédire les labels de données futures à partir de labels de données existantes
Salaire	
   Statut	
  Marital	
   Propriétaire	
   OK/KO	
  
100	
   Célibataire	
   Oui	
   OK	
  
120	
   Marié	
   Non	
   OK	
  
100	
   Divorcé	
   Non	
   KO	
  
80	
   Célibataire	
   Non	
   KO	
  
70	
   Marié	
   Non	
   KO	
  
100	
   Célibataire	
   Oui	
   OK	
  
x	
   y	
  
ConHnue	
   Catégorie	
   Binaire	
   Label	
  
x1	
   x2	
   x3	
  
@hayssams	
  #devoxxml	
  
Recherche	
  du	
  meilleur	
  arbre	
  
Statut	
  
?	
  
1	
  
1	
  
2	
  
2	
  
Marié	
   Célibataire	
  /	
  Divorcé	
  
Marié	
   Célibataire	
  /	
  
Divorcé	
  
Label	
  
1	
   2	
   OK	
  
1	
   2	
   KO	
  
Proprié
taire	
  ?	
  
Non	
  Oui	
  
1	
  
1	
  
0	
  
0	
  
…	
  
@hayssams	
  #devoxxml	
  
Le	
  meilleur	
  arbre	
  de	
  décision	
  
OK	
   3	
  
KO	
   3	
  
Impureté	
  =	
  0,5	
  
Statut	
  
Statut	
  ?	
   Marié	
   Célibataire	
  /	
  Divorcé	
  
OK	
   1	
   2	
  
KO	
   1	
   2	
  
Gini	
  (marié)	
  =	
  1-­‐	
  ((1/2)2	
  +	
  (1/2)2)	
  =	
  0,5	
  
Gini(Cél/Div)	
  =	
  1-­‐((2/2)2	
  +	
  (2/2)2)	
  =	
  0,5	
  
Impureté	
  	
  =	
  ((1+1)/6)	
  *	
  Gini(marié)	
  +	
  ((2+2)/6)	
  *	
  Gini(Cél/Div)	
  =	
  0,5	
  
1	
  
1	
  
2	
  
2	
  
Marié	
   Célibataire	
  /	
  Divorcé	
  
@hayssams	
  #devoxxml	
  
Le	
  meilleur	
  arbre	
  de	
  décision	
  
@hayssams	
  #devoxxml	
  
Le	
  meilleur	
  arbre	
  de	
  décision	
  
Propriétaire	
  ?	
   Oui	
   Non	
  
OK	
   2	
   1	
  
KO	
   0	
   3	
  
Gini	
  (Oui)	
  =	
  1-­‐	
  ((2/2)2	
  +	
  (0/2)2)	
  =	
  0	
  
Gini(Non)	
  =	
  1-­‐((1/4)2	
  +	
  (3/4)2)	
  =	
  0,375	
  
Impureté	
  	
  =	
  ((2+0)/6)	
  *	
  Gini(Oui)	
  +	
  ((1+3)/6)	
  *	
  Gini(Non)	
  =	
  0,25	
  
Marge	
  d’erreur	
   1	
  -­‐	
  max(2/2,	
  0/2)	
  =	
  0	
   1	
  –	
  max(1/4,	
  3/4)	
  =	
  0,25	
  
OK	
   3	
  
KO	
   3	
  
Impureté	
  =	
  0,5	
  
Propriétaire	
  
2	
  
0	
  
1	
  
3	
  
Oui	
   Non	
  
UHlisaHon	
  de	
  l’index	
  Gini	
  
@hayssams	
  #devoxxml	
  
Le	
  meilleur	
  arbre	
  de	
  décision	
  	
  
Propriétaire	
  ?	
   Oui	
   Non	
  
OK	
   2	
   1	
  
KO	
   0	
   3	
  
Entropie(Oui)	
  =	
  -­‐(2/2)log2	
  (2/2)	
  –	
  (0/2)log2(0/2)	
  =	
  0	
  
Entropie(Non)	
  =	
  -­‐(1/4)log2(1/4)	
  –	
  (3/4)log2(3/4)	
  =	
  0,5	
  +	
  0,31	
  =	
  0,81	
  
Gain=	
  ((2+0)/6)	
  *	
  Entropie(Oui)	
  +	
  ((1+3)/6)	
  *	
  Entropie(Non)	
  =	
  0,4	
  
Marge	
  d’erreur	
   1	
  -­‐	
  max(2/2,	
  0/2)	
  =	
  0	
   1	
  –	
  max(1/4,	
  3/4)	
  =	
  0,25	
  
OK	
   3	
  
KO	
   3	
  
Impureté	
  =	
  0,5	
  
Propriétaire	
  
2	
  
0	
  
1	
  
3	
  
Oui	
   Non	
  
UHlisaHon	
  de	
  l’entropie	
  
@hayssams	
  #devoxxml	
  
Le	
  meilleur	
  arbre	
  de	
  décision	
  	
  
Recherche de la meilleure condition de segmentation en s’appuyant
sur l’impureté
Qu’est ce que la mesure d’impureté ? Mesure la qualité de la
séparation
La segmentation s’arrête lorsque :
- Tous les échantillons d’un nœud appartiennent à la même classe
- Il n’y a plus de nouveaux attributs
@hayssams	
  #devoxxml	
  
ApprenHssage	
  supervisé	
  
Prédire les labels de données futures à partir de labels de données existantes
Salaire	
   Statut	
  Marital	
   Propriétaire	
   OK/KO	
  
100	
   Célibataire	
   Oui	
   OK	
  
120	
   Marié	
   Non	
   OK	
  
100	
   Divorcé	
   Non	
   KO	
  
80	
   Célibataire	
   Non	
   KO	
  
70	
   Marié	
   Non	
   KO	
  
100	
   Célibataire	
   Oui	
   OK	
  
x	
   y	
  
ConHnue	
   Catégorie	
   Binaire	
   Label	
  
x1	
   x2	
   x3	
  
@hayssams	
  #devoxxml	
  
TraducHon	
  en	
  points	
  labélisés	
  
Traduire les valeurs continues en valeurs discrètes
Salaire	
   Statut	
  Marital	
   Propriétaire	
   OK/KO	
  
2	
   1	
   2	
   1	
  
3	
   2	
   1	
   1	
  
2	
   3	
   1	
   0	
  
1	
   1	
   1	
   0	
  
1	
   2	
   1	
   0	
  
2	
   3	
   2	
   1	
  
x	
   y	
  
Catégorie	
   Catégorie	
   Binaire	
   Label	
  
x1	
   x2	
   x3	
  
Salaire	
   Valeur	
  discrète	
  
<	
  90	
   1	
  
>=	
  90	
  et	
  <	
  110	
  	
  	
   2	
  
>=110	
  et	
  <=	
  130	
   3	
  
>	
  130	
   4	
  
Statut	
  marital	
   Valeur	
  discrète	
  
Célibataire	
   1	
  
Marié	
   2	
  
Divorcé	
   3	
  
Propriétaire	
   Valeur	
  discrète	
  
Non	
   1	
  
Oui	
   2	
  
Label	
   Valeur	
  discrète	
  
OK	
   1	
  
KO	
   0	
  
@hayssams	
  #devoxxml	
  
Etape	
  1	
  :	
  Chargement	
  des	
  données	
  
Format du fichier
Label,Salaire,Statut Marital,Propriétaire
@hayssams	
  #devoxxml	
  
Etape	
  2	
  :	
  Recherche	
  de	
  l’arbre	
  
@hayssams	
  #devoxxml	
  
Etape	
  3	
  :	
  EvaluaHon	
  de	
  sa	
  performance	
  
@YourTwiDerHandle	
  @YourTwiDerHandle	
  @hayssams	
  #devoxxml	
  
Visualisation avec D3.js
Librairie statapss
http://mih5.github.io/statapps/
@hayssams	
  #devoxxml	
  
Choix	
  du	
  diagramme	
  de	
  visualisaHon	
  
Label	
  
Catégorie	
   Numérique	
  
Prédicteur	
   Catégorie	
   Mosaic	
  Plot	
   Density	
  Plot	
  
Numérique	
   BoxPlot	
   ScaDer	
  Plot	
  
Permet de visualiser la force
de la relation entre le prédicteur et le label
@hayssams	
  #devoxxml	
  
Mosaic	
  Plot	
  	
  
Prédicteur	
  et	
  label	
  catégoriels	
  
50%
Célibataire
50%
Marié / divorcé
2/3descélibataires
ontunlabelOK
2/3desmariés/divorcés
ontunlabelKO
Prédicteur è Statut marital
Label è OK/KO
Etre célibataire a un impact sur la valeur du label
@hayssams	
  #devoxxml	
  
BoxPlot	
  	
  
Prédicteur	
  numérique	
  et	
  label	
  catégoriel	
  
Prédicteur è Salaire
Label è OK/KO
Il vaut mieux avoir un salaire élevé
@hayssams	
  #devoxxml	
  
DensityPlot	
  
Prédicteur	
  catégoriel	
  et	
  label	
  numérique	
  
Prédicteur è Région d’origine du véhicule
Label è Miles / Galon (Autonomie)
Les véhicules asiatiques ont plus d’autonomie
@hayssams	
  #devoxxml	
  
ScaDerPlot	
  
Prédicteur	
  numérique	
  et	
  label	
  numérique	
  
Prédicteur è Poids
Label è Autonomie
La poids a un impact important sur la consommation
@hayssams	
  #devoxxml	
  
•  Motivation de l’approche Machine Learning
è Précision, autonomie et performance
•  Pourquoi Spark / MLLib
è Briser le mur qui sépare le Datascientist du développeur
•  La préparation de l’échantillon de données
è Qualité des prédicteurs, Adéquation du modèle, Représentativité des échantillons
•  La sélection de l’algorithme MLLib
è Classification / Régression / Clustering / Collaborative Filtering / Frequent Pattern mining
•  La visualisation avec D3.js
è Déterminer la nature du prédicteur et du label pour sélectionner le diagramme correspondant
Conclusion	
  
@YourTwiDerHandle	
  @YourTwiDerHandle	
  @hayssams	
  #devoxxml	
  
Q  A

More Related Content

Viewers also liked

Machine intelligente d’analyse financiere
Machine intelligente d’analyse financiereMachine intelligente d’analyse financiere
Machine intelligente d’analyse financiereSabrine MASTOURA
 
Analyse financière
Analyse financièreAnalyse financière
Analyse financièreAbdo attar
 
Ia project Apprentissage Automatique
Ia project Apprentissage AutomatiqueIa project Apprentissage Automatique
Ia project Apprentissage AutomatiqueNizar Bechir
 
Cours Big Data Chap4 - Spark
Cours Big Data Chap4 - SparkCours Big Data Chap4 - Spark
Cours Big Data Chap4 - SparkAmal Abid
 
TP2 Big Data HBase
TP2 Big Data HBaseTP2 Big Data HBase
TP2 Big Data HBaseAmal Abid
 
Machine Learning and Apache Mahout : An Introduction
Machine Learning and Apache Mahout : An IntroductionMachine Learning and Apache Mahout : An Introduction
Machine Learning and Apache Mahout : An IntroductionVarad Meru
 
Cours Big Data Chap1
Cours Big Data Chap1Cours Big Data Chap1
Cours Big Data Chap1Amal Abid
 

Viewers also liked (7)

Machine intelligente d’analyse financiere
Machine intelligente d’analyse financiereMachine intelligente d’analyse financiere
Machine intelligente d’analyse financiere
 
Analyse financière
Analyse financièreAnalyse financière
Analyse financière
 
Ia project Apprentissage Automatique
Ia project Apprentissage AutomatiqueIa project Apprentissage Automatique
Ia project Apprentissage Automatique
 
Cours Big Data Chap4 - Spark
Cours Big Data Chap4 - SparkCours Big Data Chap4 - Spark
Cours Big Data Chap4 - Spark
 
TP2 Big Data HBase
TP2 Big Data HBaseTP2 Big Data HBase
TP2 Big Data HBase
 
Machine Learning and Apache Mahout : An Introduction
Machine Learning and Apache Mahout : An IntroductionMachine Learning and Apache Mahout : An Introduction
Machine Learning and Apache Mahout : An Introduction
 
Cours Big Data Chap1
Cours Big Data Chap1Cours Big Data Chap1
Cours Big Data Chap1
 

Similar to Machine learning

Les SERPs ont parlé: comment font ceux qui performent en 2018?
Les SERPs ont parlé: comment font ceux qui performent en 2018?Les SERPs ont parlé: comment font ceux qui performent en 2018?
Les SERPs ont parlé: comment font ceux qui performent en 2018?512banque
 
"En SEO, améliorer son maillage interne grâce au test & learn : étude de cas ...
"En SEO, améliorer son maillage interne grâce au test & learn : étude de cas ..."En SEO, améliorer son maillage interne grâce au test & learn : étude de cas ...
"En SEO, améliorer son maillage interne grâce au test & learn : étude de cas ...Dan Bernier
 
Diginova - Session sur le machine learning avec ML.NET
Diginova - Session sur le machine learning avec ML.NETDiginova - Session sur le machine learning avec ML.NET
Diginova - Session sur le machine learning avec ML.NETJulien Chable
 
Comment faire parler les data des candidats ?
Comment faire parler les data des candidats ?Comment faire parler les data des candidats ?
Comment faire parler les data des candidats ?Jeremy Greze
 
Intelligence artificielle, l'avènement du marketing augmenté
Intelligence artificielle, l'avènement du marketing augmentéIntelligence artificielle, l'avènement du marketing augmenté
Intelligence artificielle, l'avènement du marketing augmentéFrederic CAVAZZA
 
Introduction au Machine Learning
Introduction au Machine Learning Introduction au Machine Learning
Introduction au Machine Learning Novagen Conseil
 
3 enjeux imprévus pour produire de la valeur avec la donnée
3 enjeux imprévus pour produire de la valeur avec la donnée3 enjeux imprévus pour produire de la valeur avec la donnée
3 enjeux imprévus pour produire de la valeur avec la donnéeCory Chaplin
 
Synodiance > SEO, vocal et sémantique - Performance Digitale Expo - 06/11/2014
Synodiance > SEO, vocal et sémantique - Performance Digitale Expo - 06/11/2014Synodiance > SEO, vocal et sémantique - Performance Digitale Expo - 06/11/2014
Synodiance > SEO, vocal et sémantique - Performance Digitale Expo - 06/11/2014Search Foresight
 

Similar to Machine learning (9)

Les SERPs ont parlé: comment font ceux qui performent en 2018?
Les SERPs ont parlé: comment font ceux qui performent en 2018?Les SERPs ont parlé: comment font ceux qui performent en 2018?
Les SERPs ont parlé: comment font ceux qui performent en 2018?
 
"En SEO, améliorer son maillage interne grâce au test & learn : étude de cas ...
"En SEO, améliorer son maillage interne grâce au test & learn : étude de cas ..."En SEO, améliorer son maillage interne grâce au test & learn : étude de cas ...
"En SEO, améliorer son maillage interne grâce au test & learn : étude de cas ...
 
Diginova - Session sur le machine learning avec ML.NET
Diginova - Session sur le machine learning avec ML.NETDiginova - Session sur le machine learning avec ML.NET
Diginova - Session sur le machine learning avec ML.NET
 
Comment faire parler les data des candidats ?
Comment faire parler les data des candidats ?Comment faire parler les data des candidats ?
Comment faire parler les data des candidats ?
 
Intelligence artificielle, l'avènement du marketing augmenté
Intelligence artificielle, l'avènement du marketing augmentéIntelligence artificielle, l'avènement du marketing augmenté
Intelligence artificielle, l'avènement du marketing augmenté
 
Introduction au Machine Learning
Introduction au Machine Learning Introduction au Machine Learning
Introduction au Machine Learning
 
3 enjeux imprévus pour produire de la valeur avec la donnée
3 enjeux imprévus pour produire de la valeur avec la donnée3 enjeux imprévus pour produire de la valeur avec la donnée
3 enjeux imprévus pour produire de la valeur avec la donnée
 
Data Mining
Data MiningData Mining
Data Mining
 
Synodiance > SEO, vocal et sémantique - Performance Digitale Expo - 06/11/2014
Synodiance > SEO, vocal et sémantique - Performance Digitale Expo - 06/11/2014Synodiance > SEO, vocal et sémantique - Performance Digitale Expo - 06/11/2014
Synodiance > SEO, vocal et sémantique - Performance Digitale Expo - 06/11/2014
 

More from ebiznext

Spark / Mesos Cluster Optimization
Spark / Mesos Cluster OptimizationSpark / Mesos Cluster Optimization
Spark / Mesos Cluster Optimizationebiznext
 
EBIZNEXT-RIAK
EBIZNEXT-RIAKEBIZNEXT-RIAK
EBIZNEXT-RIAKebiznext
 
Elasticsearch performance tuning
Elasticsearch performance tuningElasticsearch performance tuning
Elasticsearch performance tuningebiznext
 
Realtime Web avec Kafka, Spark et Mesos
Realtime Web avec Kafka, Spark et MesosRealtime Web avec Kafka, Spark et Mesos
Realtime Web avec Kafka, Spark et Mesosebiznext
 
Les modèles NoSQL
Les modèles NoSQLLes modèles NoSQL
Les modèles NoSQLebiznext
 
Scala io2013 : Our journey from UML/MDD to Scala macros
Scala io2013 : Our journey from UML/MDD to Scala macrosScala io2013 : Our journey from UML/MDD to Scala macros
Scala io2013 : Our journey from UML/MDD to Scala macrosebiznext
 

More from ebiznext (6)

Spark / Mesos Cluster Optimization
Spark / Mesos Cluster OptimizationSpark / Mesos Cluster Optimization
Spark / Mesos Cluster Optimization
 
EBIZNEXT-RIAK
EBIZNEXT-RIAKEBIZNEXT-RIAK
EBIZNEXT-RIAK
 
Elasticsearch performance tuning
Elasticsearch performance tuningElasticsearch performance tuning
Elasticsearch performance tuning
 
Realtime Web avec Kafka, Spark et Mesos
Realtime Web avec Kafka, Spark et MesosRealtime Web avec Kafka, Spark et Mesos
Realtime Web avec Kafka, Spark et Mesos
 
Les modèles NoSQL
Les modèles NoSQLLes modèles NoSQL
Les modèles NoSQL
 
Scala io2013 : Our journey from UML/MDD to Scala macros
Scala io2013 : Our journey from UML/MDD to Scala macrosScala io2013 : Our journey from UML/MDD to Scala macros
Scala io2013 : Our journey from UML/MDD to Scala macros
 

Machine learning

  • 1. @hayssams   #devoxxml   Machine  Learning  avec  Spark,  MLLib  et  D3.js   Datascientist : Une personne meilleure en statistiques que n’importe quel développeur et meilleure en développement que n’importe quel Statisticien - Josh Wills (Cloudera) Datascientist : Une personne moins bonne en statistiques que n’importe quel statisticien et moins bonne en développement que n’importe quel développeur - Will Cukierski (Kaggle)
  • 2. @hayssams  #devoxxml   Machine  Learning  avec  Spark,  MLLib  et  D3.js   Hayssam Saleh blog.ebiznext.com slideshare.net/hayssamsaleh1
  • 3. @hayssams  #devoxxml   •  Motivation de l’approche Machine Learning •  Pourquoi Spark / MLLib •  La préparation de l’échantillon de données •  La sélection de l’algorithme MLLib •  La visualisation avec D3.js Sommaire  
  • 4. @hayssams  #devoxxml   Machine  Learning   •  Branche de l’intelligence artificielle •  Capacité à apprendre sans être explicitement programmé •  Exemple : Distinguer les mails de type spam des autres
  • 5. @YourTwiDerHandle  @YourTwiDerHandle  @hayssams  #devoxxml   Motivation de l’approche Machine Learning
  • 6. @hayssams  #devoxxml   Pourquoi  le  Machine  Learning   •  Salaire •  Statut marital •  Propriétaire •  … Prédicteurs Variables indépendantes Réponse / Label Variable dépendante
  • 7. @hayssams  #devoxxml   SoluHon  1  :  Manpower   •  Salaire •  Statut marital •  Propriétaire •  … L  Délai de traitement L  Coût du traitement L  Qualité inégale de l’évaluation  
  • 8. @hayssams  #devoxxml   SoluHon  2  :  BRMS   •  Salaire •  Statut marital •  Propriétaire •  … L  La définition de nouvelles règles devient de plus en plus complexe avec la prise en compte du contexte L  Devient opaque rapidement L  Pas d’évolution avec le pattern de comportement des clients Statut  ==  Marié   +1   Statut  ==  Divorcé   -­‐2,25   Salaire  >  1000   +1,4   Propriétaire  ==  Vrai   +4   ….  
  • 9. @hayssams  #devoxxml   SoluHon  3  :  Machine  Learning   •  Salaire •  Statut marital •  Propriétaire •  … •  Salaire •  Statut marital •  Propriétaire •  … •  Salaire •  Statut marital •  Propriétaire •  … •  Salaire •  Statut marital •  Propriétaire •  … •  Salaire •  Statut marita l •  Propriétaire •  … •  => OK / KO Historique représentatif + Prédicteurs significatifs + Labels Calcul du meilleur Algorithme de prédiction J  Précision J  Autonomie J  Performance J  Scalabilité
  • 10. @hayssams  #devoxxml   Cas  d’uHlisaHon   •  Recommandation •  Classification de contenu en groupes prédéfinis •  Regroupement de contenus similaires •  Recherche d’association/patterns dans les actions/comportements •  Identification de topics clefs •  Détection de fraude et d’anomalies •  Ranking
  • 11. @YourTwiDerHandle  @YourTwiDerHandle  @hayssams  #devoxxml   Pourquoi Spark / MLLib
  • 12. @hayssams  #devoxxml   Spark  :  DatascienHst  DevOps   Analytics d’investigation Analytics opérationnelle Echantillon de données Poste de travail Requête Ad Hoc offline Métrique : La précision Facilité de développement Données de production Cluster de serveurs Sollicitation online continue Métrique : Le temps de réponse Performance Données Infrastructure Contexte Métrique Langage
  • 13. @hayssams  #devoxxml   Spark  :  DatascienHst  DevOps   Analytics d’investigation Analytics opérationnelle
  • 14. @YourTwiDerHandle  @YourTwiDerHandle  @hayssams  #devoxxml   La préparation de l’échantillon de données
  • 15. @hayssams  #devoxxml   Démarche   • Le modèle est considéré satisfaisant lorsque le niveau de précision est considéré comme étant satisfaisant EchanHllon   EchanHllon  labéllisé   EchanHllon  non   labellisé   Algorithme   d’apprenHssage   Modèle   Performance   Entrainement Test génère est appliqué Performance d’entrainement Performance dans les cas réels Historique  +  Prédicteurs  +  Labels  
  • 16. @hayssams  #devoxxml   Améliorer  la  modèle   Trois causes possibles à la défaillance d’un modèle Overfitting Biaisé Underfitting L’échantillon n’est pas représentatif L’algorithme de ML n’est pas généralisable Les prédicteurs sont mal choisis L’algorithme de ML est inadapté Un mixte des 3 causes ci-dessus
  • 17. @hayssams  #devoxxml   Prédicteurs  mal  choisis   Biaisé Les prédicteurs sont mal choisis •  Nom •  Prénom •  … Changer les prédicteurs
  • 18. @hayssams  #devoxxml   Traiter  l’overfi`ng  :  Variance  importante   Overfitting L’échantillon n’est pas représentatif L’algorithme de ML n’est pas généralisable Echan1llon   d’entrainement   Célibataire   Célibataire   Célibataire   Célibataire   Echan1llon  de   test   Célibataire   Marié   Divorcé   Marié   Taux d’erreur faible Taux d’erreur important Augmenter la représentativité de l’échantillon Ou réduire les prédicteurs
  • 19. @hayssams  #devoxxml   Modèle  inadapté   Underfitting L’algorithme de ML est inadapté Les outils de visualisation
  • 20. @YourTwiDerHandle  @YourTwiDerHandle  @hayssams  #devoxxml   La sélection de l’algorithme dans MLLib
  • 21. @hayssams  #devoxxml   ClassificaHon  :  ApprenHssage  supervisé   Le résultat est une valeur parmi N sans ordre quelconque et dans un ensemble prédéfini Exemple : Ce film est-il un film d’horreur ou un film d’actions ou un film romantique ? Prédire le label de nouvelles données à partir des labels des données existantes
  • 22. @hayssams  #devoxxml   Régression  :  ApprenHssage  supervisé   Le résultat est une valeur dans un ensemble de valeurs continues Exemple : Quel est le prix prévisionnel de cet appartement dans les 6 prochains mois ? Prédire le label de nouvelles données à partir des labels des données existantes
  • 23. @hayssams  #devoxxml   Clustering  :  ApprenHssage  non  supervisé   Les données en entrée de l’algorithme d’apprentissage ne sont pas labellisées Grouper les consommateurs en fonction de leur similarité Prédire le label de données existantes à partir de leurs prédicteurs
  • 24. @hayssams  #devoxxml   CollaboraHve  filtering   Prédire l’intérêt d’un utilisateur pour un item
  • 25. @hayssams  #devoxxml   Fréquent  PaDern  Matching   Extraire les produits les plus souvent achetés ensemble dans le même panier
  • 26. @YourTwiDerHandle  @YourTwiDerHandle  @hayssams  #devoxxml   Scoring avec le meilleur arbre de décision
  • 27. @hayssams  #devoxxml   Recherche  du  meilleur  arbre   Prédire les labels de données futures à partir de labels de données existantes Salaire   Statut  Marital   Propriétaire   OK/KO   100   Célibataire   Oui   OK   120   Marié   Non   OK   100   Divorcé   Non   KO   80   Célibataire   Non   KO   70   Marié   Non   KO   100   Célibataire   Oui   OK   x   y   ConHnue   Catégorie   Binaire   Label   x1   x2   x3  
  • 28. @hayssams  #devoxxml   Recherche  du  meilleur  arbre   Statut   ?   1   1   2   2   Marié   Célibataire  /  Divorcé   Marié   Célibataire  /   Divorcé   Label   1   2   OK   1   2   KO   Proprié taire  ?   Non  Oui   1   1   0   0   …  
  • 29. @hayssams  #devoxxml   Le  meilleur  arbre  de  décision   OK   3   KO   3   Impureté  =  0,5   Statut   Statut  ?   Marié   Célibataire  /  Divorcé   OK   1   2   KO   1   2   Gini  (marié)  =  1-­‐  ((1/2)2  +  (1/2)2)  =  0,5   Gini(Cél/Div)  =  1-­‐((2/2)2  +  (2/2)2)  =  0,5   Impureté    =  ((1+1)/6)  *  Gini(marié)  +  ((2+2)/6)  *  Gini(Cél/Div)  =  0,5   1   1   2   2   Marié   Célibataire  /  Divorcé  
  • 30. @hayssams  #devoxxml   Le  meilleur  arbre  de  décision  
  • 31. @hayssams  #devoxxml   Le  meilleur  arbre  de  décision   Propriétaire  ?   Oui   Non   OK   2   1   KO   0   3   Gini  (Oui)  =  1-­‐  ((2/2)2  +  (0/2)2)  =  0   Gini(Non)  =  1-­‐((1/4)2  +  (3/4)2)  =  0,375   Impureté    =  ((2+0)/6)  *  Gini(Oui)  +  ((1+3)/6)  *  Gini(Non)  =  0,25   Marge  d’erreur   1  -­‐  max(2/2,  0/2)  =  0   1  –  max(1/4,  3/4)  =  0,25   OK   3   KO   3   Impureté  =  0,5   Propriétaire   2   0   1   3   Oui   Non   UHlisaHon  de  l’index  Gini  
  • 32. @hayssams  #devoxxml   Le  meilleur  arbre  de  décision     Propriétaire  ?   Oui   Non   OK   2   1   KO   0   3   Entropie(Oui)  =  -­‐(2/2)log2  (2/2)  –  (0/2)log2(0/2)  =  0   Entropie(Non)  =  -­‐(1/4)log2(1/4)  –  (3/4)log2(3/4)  =  0,5  +  0,31  =  0,81   Gain=  ((2+0)/6)  *  Entropie(Oui)  +  ((1+3)/6)  *  Entropie(Non)  =  0,4   Marge  d’erreur   1  -­‐  max(2/2,  0/2)  =  0   1  –  max(1/4,  3/4)  =  0,25   OK   3   KO   3   Impureté  =  0,5   Propriétaire   2   0   1   3   Oui   Non   UHlisaHon  de  l’entropie  
  • 33. @hayssams  #devoxxml   Le  meilleur  arbre  de  décision     Recherche de la meilleure condition de segmentation en s’appuyant sur l’impureté Qu’est ce que la mesure d’impureté ? Mesure la qualité de la séparation La segmentation s’arrête lorsque : - Tous les échantillons d’un nœud appartiennent à la même classe - Il n’y a plus de nouveaux attributs
  • 34. @hayssams  #devoxxml   ApprenHssage  supervisé   Prédire les labels de données futures à partir de labels de données existantes Salaire   Statut  Marital   Propriétaire   OK/KO   100   Célibataire   Oui   OK   120   Marié   Non   OK   100   Divorcé   Non   KO   80   Célibataire   Non   KO   70   Marié   Non   KO   100   Célibataire   Oui   OK   x   y   ConHnue   Catégorie   Binaire   Label   x1   x2   x3  
  • 35. @hayssams  #devoxxml   TraducHon  en  points  labélisés   Traduire les valeurs continues en valeurs discrètes Salaire   Statut  Marital   Propriétaire   OK/KO   2   1   2   1   3   2   1   1   2   3   1   0   1   1   1   0   1   2   1   0   2   3   2   1   x   y   Catégorie   Catégorie   Binaire   Label   x1   x2   x3   Salaire   Valeur  discrète   <  90   1   >=  90  et  <  110       2   >=110  et  <=  130   3   >  130   4   Statut  marital   Valeur  discrète   Célibataire   1   Marié   2   Divorcé   3   Propriétaire   Valeur  discrète   Non   1   Oui   2   Label   Valeur  discrète   OK   1   KO   0  
  • 36. @hayssams  #devoxxml   Etape  1  :  Chargement  des  données   Format du fichier Label,Salaire,Statut Marital,Propriétaire
  • 37. @hayssams  #devoxxml   Etape  2  :  Recherche  de  l’arbre  
  • 38. @hayssams  #devoxxml   Etape  3  :  EvaluaHon  de  sa  performance  
  • 39. @YourTwiDerHandle  @YourTwiDerHandle  @hayssams  #devoxxml   Visualisation avec D3.js Librairie statapss http://mih5.github.io/statapps/
  • 40. @hayssams  #devoxxml   Choix  du  diagramme  de  visualisaHon   Label   Catégorie   Numérique   Prédicteur   Catégorie   Mosaic  Plot   Density  Plot   Numérique   BoxPlot   ScaDer  Plot   Permet de visualiser la force de la relation entre le prédicteur et le label
  • 41. @hayssams  #devoxxml   Mosaic  Plot     Prédicteur  et  label  catégoriels   50% Célibataire 50% Marié / divorcé 2/3descélibataires ontunlabelOK 2/3desmariés/divorcés ontunlabelKO Prédicteur è Statut marital Label è OK/KO Etre célibataire a un impact sur la valeur du label
  • 42. @hayssams  #devoxxml   BoxPlot     Prédicteur  numérique  et  label  catégoriel   Prédicteur è Salaire Label è OK/KO Il vaut mieux avoir un salaire élevé
  • 43. @hayssams  #devoxxml   DensityPlot   Prédicteur  catégoriel  et  label  numérique   Prédicteur è Région d’origine du véhicule Label è Miles / Galon (Autonomie) Les véhicules asiatiques ont plus d’autonomie
  • 44. @hayssams  #devoxxml   ScaDerPlot   Prédicteur  numérique  et  label  numérique   Prédicteur è Poids Label è Autonomie La poids a un impact important sur la consommation
  • 45. @hayssams  #devoxxml   •  Motivation de l’approche Machine Learning è Précision, autonomie et performance •  Pourquoi Spark / MLLib è Briser le mur qui sépare le Datascientist du développeur •  La préparation de l’échantillon de données è Qualité des prédicteurs, Adéquation du modèle, Représentativité des échantillons •  La sélection de l’algorithme MLLib è Classification / Régression / Clustering / Collaborative Filtering / Frequent Pattern mining •  La visualisation avec D3.js è Déterminer la nature du prédicteur et du label pour sélectionner le diagramme correspondant Conclusion