Machine learning

10 304 vues

Publié le

Cette conférence a pour objet de partager avec les participants le processus d'intégration d'un système de Machine Learning (ML) dans une application Java / Scala. Elle s'adresse aux développeurs qui souhaitent inclure des services de recommandation en ligne, d'analyse de risque ou d'intelligence client mais qui n'ont pas de connaissances particulières en ML. Nous aborderons :

Le processus global : Choix des échantillons d'apprentissage et de test, sélection de l'algorithme de machine learning, évaluation et optimisation du modèle

La préparation de l'échantillon de données : Les critères de choix des données à collecter, le volume à injecter, les transformations à réaliser en amont de l'application de l'algorithme de ML

La sélection et la construction du modèle : Cette section parcoure les catégories d'algorithmes disponibles dans MLLib et présente les principales règles de sélection et d'ajustement en fonction de l'objectif.

L'évaluation et l'optimisation du modèle : Cette section présente les métriques d'évaluation de la performance prédictive des modèles ML ainsi que les diagrammes D3.js de visualisation adaptés.

Publié dans : Technologie
  • Soyez le premier à commenter

Machine learning

  1. 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. 2. @hayssams  #devoxxml   Machine  Learning  avec  Spark,  MLLib  et  D3.js   Hayssam Saleh blog.ebiznext.com slideshare.net/hayssamsaleh1
  3. 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. 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. 5. @YourTwiDerHandle  @YourTwiDerHandle  @hayssams  #devoxxml   Motivation de l’approche Machine Learning
  6. 6. @hayssams  #devoxxml   Pourquoi  le  Machine  Learning   •  Salaire •  Statut marital •  Propriétaire •  … Prédicteurs Variables indépendantes Réponse / Label Variable dépendante
  7. 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. 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. 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. 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. 11. @YourTwiDerHandle  @YourTwiDerHandle  @hayssams  #devoxxml   Pourquoi Spark / MLLib
  12. 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. 13. @hayssams  #devoxxml   Spark  :  DatascienHst  DevOps   Analytics d’investigation Analytics opérationnelle
  14. 14. @YourTwiDerHandle  @YourTwiDerHandle  @hayssams  #devoxxml   La préparation de l’échantillon de données
  15. 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. 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. 17. @hayssams  #devoxxml   Prédicteurs  mal  choisis   Biaisé Les prédicteurs sont mal choisis •  Nom •  Prénom •  … Changer les prédicteurs
  18. 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. 19. @hayssams  #devoxxml   Modèle  inadapté   Underfitting L’algorithme de ML est inadapté Les outils de visualisation
  20. 20. @YourTwiDerHandle  @YourTwiDerHandle  @hayssams  #devoxxml   La sélection de l’algorithme dans MLLib
  21. 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. 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. 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. 24. @hayssams  #devoxxml   CollaboraHve  filtering   Prédire l’intérêt d’un utilisateur pour un item
  25. 25. @hayssams  #devoxxml   Fréquent  PaDern  Matching   Extraire les produits les plus souvent achetés ensemble dans le même panier
  26. 26. @YourTwiDerHandle  @YourTwiDerHandle  @hayssams  #devoxxml   Scoring avec le meilleur arbre de décision
  27. 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. 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. 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. 30. @hayssams  #devoxxml   Le  meilleur  arbre  de  décision  
  31. 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. 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. 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. 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. 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. 36. @hayssams  #devoxxml   Etape  1  :  Chargement  des  données   Format du fichier Label,Salaire,Statut Marital,Propriétaire
  37. 37. @hayssams  #devoxxml   Etape  2  :  Recherche  de  l’arbre  
  38. 38. @hayssams  #devoxxml   Etape  3  :  EvaluaHon  de  sa  performance  
  39. 39. @YourTwiDerHandle  @YourTwiDerHandle  @hayssams  #devoxxml   Visualisation avec D3.js

×