1
#yTechParis
Machine Learning sur hybris
ecommerce
[Y]recommender
Présenté par Yawo KPOTUFE
Hybris expert / Solution arch...
2
#yTechParis
Notre cible en image
3
#yTechParis
 Partie I – Savoir plus pour vendre plus
 Partie II – Hybris Business Events data
 Partie III – Data Mini...
4
#yTechParis
 1 – Le merchandising
 2 – Outils Hybris pour le merchandising
 3 – Solutions tierces (compario, fredhopp...
5
#yTechParis
Le merchandising
 Une politique efficace de
prix, de discounts et de
promotions
 Ensemble des efforts, moy...
6
#yTechParis
 Un design et un packaging
séduisants
Le merchandising
7
#yTechParis
 Et surtout la combinaison du tout.
Décider à quel moment,
à quel utilisateur présenter
tel produit, telle ...
8
#yTechParis SAP Hybris Marketing extensions
 Classiques: PDP, PLP, Facets
 Product References sur le Product (adminis...
9
#yTechParis
Solutions tierces: Sparkow (ex compario)
10
#yTechParis
Solutions tierces: SDL (ex Fredhopper)
11
#yTechParis
Concept: Collaborative Filtering, Similarités
 Détecter des similarités
à partir des actions et
comporteme...
12
#yTechParis
Success stories: Netflix & Amazon
AmazonProduct recommandation system
NetflixMovie recommender engine
13
#yTechParis
 Capture les actions des utilisateurs (view, buy, …)
 Similaire à un certain degré à google analytics
 P...
14
#yTechParis
Hybris Business events
Events supportés Out Of The Box
15
#yTechParis
Hybris Business events
Architecture
16
#yTechParis
Recommandations avec Business events
a. Récolter des
business events
b. Calculer les
recommandations
17
#yTechParis
 1 – Préparation des données
 2 – Le stockage des données
 3 – Hbase, une solution Big Data
 4 – Schema...
18
#yTechParis
 Phase très importante de Machine Learning
 Données erronées ou mal structurées = Big Fail !
 Collecte d...
19
#yTechParis
 Problématique de taille illimitée (terabytes en quelques années)
 Limites du modèle relationnel :
 Scal...
20
#yTechParis
 Solution basée sur les recherches de Google Big Table
 Supporte des milliards lignes X des millions de c...
21
#yTechParis
 Les column families (cf) sont définies dans le schema
 Chaque couple row/cf est une sorte de HashMap lib...
22
#yTechParis
 Row key construite à partir des infos de chaque event
 3 columns families (cf) définies: u,p, et c (user...
23
#yTechParis
 1 – Le framework de calcul distribué Spark
 2 – Concepts: RDD
 3 – Quelques algorithmes: ALS, FP-Growth...
24
#yTechParis
 Framework de calcul très rapide en cluster
 Pionner dans le monde du Machine Learning
 100x plus rapide...
25
#yTechParis
 Spark utilise une abstraction de collection parallèle
 File, Array, Hbase table, MySQL, etc. -> RDD
 RD...
26
#yTechParis ALS pour Alternating Least Squares
 Algorithme phare de recommendation
 ALS opère sur un RDD de Rating
...
27
#yTechParis
 FP-Growth pour Frequent Pattern Growth
 Algorithme phare de détection de fréquence
 Intérêt: détecte le...
28
#yTechParis
 Charger les view events depuis Hbase dans Spark
 Mapper les codes produits à des Int
 Récupérer les rat...
29
#yTechParis
 Le Machine Learning ne vient pas des Mayas! (pas une prophétie)
 Méthodes d’évaluation d’erreurs d’un mo...
30
#yTechParis
 1 – Batch mode: Génération des résultats en csv
 2 – => Exploitation dans Hybris via Hotfolder
 3 – Rea...
31
#yTechParis
 Les models restent internes à la JVM Spark (classes java)
 Besoin de formats exploitables depuis Hybris
...
32
#yTechParis
 Une nouvelle extension de plus sur terre: yrecommender
 Config hotfolder (code source: https://goo.gl/Me...
33
#yTechParis
 Apache Thrift = sorte de corba, avec idl, cross language
 Outils de génération server/client vers plusie...
34
#yTechParis
 Ajouter le client Thrift généré (sous forme de jar) à Hybris
 Exposer le client sous forme de service vi...
35
#yTechParis
 Exposer un serveur Rest
 Embarqué avec finagle
 Externe avec tomcat
 Indexer les résultats de models d...
36
#yTechParis
 Outils: Hybris, Spark 1.5, Hbase, Bash (ou powershell)
 Environnement de démo : Ubuntu, Hybris 5.7, scal...
37
#yTechParis
Questions
Prochain SlideShare
Chargement dans…5
×

Yrecommender, machine learning sur Hybris

450 vues

Publié le

Construction d'un moteur de recommandation pour Hybris, à partir des actions de l'utilisateur sur le sites (Business events, Collaborative filtering, Spark MLLib)

Publié dans : Technologie

Yrecommender, machine learning sur Hybris

  1. 1. 1 #yTechParis Machine Learning sur hybris ecommerce [Y]recommender Présenté par Yawo KPOTUFE Hybris expert / Solution architect
  2. 2. 2 #yTechParis Notre cible en image
  3. 3. 3 #yTechParis  Partie I – Savoir plus pour vendre plus  Partie II – Hybris Business Events data  Partie III – Data Mining, création des Modèles  Partie IV – Exploitation dans Hybris  Partie V – Perspectives & Live Demo  Partie VI – Questions Agenda
  4. 4. 4 #yTechParis  1 – Le merchandising  2 – Outils Hybris pour le merchandising  3 – Solutions tierces (compario, fredhopper)  4 – Concept: Collaborative Filtering, Similarités  5 – Exemples de Netflix, Amazon  6 – Hybris Business Events  7 – Recommandations avec Business events Savoir plus pour vendre plus
  5. 5. 5 #yTechParis Le merchandising  Une politique efficace de prix, de discounts et de promotions  Ensemble des efforts, moyens et techniques mis en œuvre pour vendre
  6. 6. 6 #yTechParis  Un design et un packaging séduisants Le merchandising
  7. 7. 7 #yTechParis  Et surtout la combinaison du tout. Décider à quel moment, à quel utilisateur présenter tel produit, telle promotion… Le merchandising
  8. 8. 8 #yTechParis SAP Hybris Marketing extensions  Classiques: PDP, PLP, Facets  Product References sur le Product (administrable en hmc)  Similar, Accessory  Up-sell, Cross-sell, …  Hot Folders pour l’intégration de ProductReferences  CMS Components Outils Hybris pour le merchandising
  9. 9. 9 #yTechParis Solutions tierces: Sparkow (ex compario)
  10. 10. 10 #yTechParis Solutions tierces: SDL (ex Fredhopper)
  11. 11. 11 #yTechParis Concept: Collaborative Filtering, Similarités  Détecter des similarités à partir des actions et comportements des utilisateurs dans la vraie vie.  Détecter des similarités à partir des caractéristiques (product features/categories) des produits Merchandising par recommandation
  12. 12. 12 #yTechParis Success stories: Netflix & Amazon AmazonProduct recommandation system NetflixMovie recommender engine
  13. 13. 13 #yTechParis  Capture les actions des utilisateurs (view, buy, …)  Similaire à un certain degré à google analytics  Possibilité de définir de nouveaux events  Tracking basé sur Piwik (un puissant moteur gratuit d’analytics)  Gestion du flux d’events via Spring integration  Plusieurs outputs possibles  Stream (ex: Storm, Spark Stream)  File (ex: Logger)  Queue (ex: RabbitMQ, Kafka)  Database (ex: MySQL, Oracle, Mongo, Hbase, Cassandra)… Hybris Business events
  14. 14. 14 #yTechParis Hybris Business events Events supportés Out Of The Box
  15. 15. 15 #yTechParis Hybris Business events Architecture
  16. 16. 16 #yTechParis Recommandations avec Business events a. Récolter des business events b. Calculer les recommandations
  17. 17. 17 #yTechParis  1 – Préparation des données  2 – Le stockage des données  3 – Hbase, une solution Big Data  4 – Schema des tables Hbase  5 – Yrecommender: notre table ‘view’ Hybris Business Events data
  18. 18. 18 #yTechParis  Phase très importante de Machine Learning  Données erronées ou mal structurées = Big Fail !  Collecte des données des events via Spring integration  Transformation aux structures de données des algorithmes  Nettoyage des données erronées  Stockage persistant des données (Databases, files, …) Préparation des données
  19. 19. 19 #yTechParis  Problématique de taille illimitée (terabytes en quelques années)  Limites du modèle relationnel :  Scalability  Distribution  Fast query  Schema-flexibles tables Le stockage des données
  20. 20. 20 #yTechParis  Solution basée sur les recherches de Google Big Table  Supporte des milliards lignes X des millions de colonnes !  Ecriture et lecture strictement consistents  Schéma flexible en famille de colonne …  Supporte Hadoop (Jobs MapReduce)  Failover automatique sur le cluster de servers (region servers)  Partitionnement automatique des tables (sharding)  Offre un shell en ruby, une API Java et un accès Thrift Hbase, une solution NoSQL - Big Data
  21. 21. 21 #yTechParis  Les column families (cf) sont définies dans le schema  Chaque couple row/cf est une sorte de HashMap libre  La cf peut contenir ainsi des champs différents par row Schema des tables Hbase
  22. 22. 22 #yTechParis  Row key construite à partir des infos de chaque event  3 columns families (cf) définies: u,p, et c (user, product et cart)  Chaque row peut définir les champs de ses cfs  Données vérifiables via le shell hbase (requête de scan)  Script shell Yrecommender: > transforme les derniers business events, les charge dans Hbase et les archive: https://github.com/yawo/yreco/blob/master/scripts/tsv.extract.sh [Y]recommender: notre table ‘view’ Rows Column families u (user) p (product) c (cart/order) Row key • id • name • … • id • name • … • id • total • …
  23. 23. 23 #yTechParis  1 – Le framework de calcul distribué Spark  2 – Concepts: RDD  3 – Quelques algorithmes: ALS, FP-Growth  4 – L’approche Yrecommender  5 – Evaluation d’erreurs et ajustements Data Mining, création des Modèles
  24. 24. 24 #yTechParis  Framework de calcul très rapide en cluster  Pionner dans le monde du Machine Learning  100x plus rapide que Hadoop sur certains algorithmes  Dispose de plusieurs composants dont:  Spark core pour le processing en parallèle de données  MLLib, une librairie d’algorithmes de machine learning  Fournit les algorithmes dont nous avons besoin:  Recommandations par Collaborative filtering  Similarités  Bundles frequents par FP-Growth Le framework de calcul distribué Apache Spark
  25. 25. 25 #yTechParis  Spark utilise une abstraction de collection parallèle  File, Array, Hbase table, MySQL, etc. -> RDD  RDD supporte des fonctions parallélisées comme: • foreach, map, flatMap, collect, filter, count, aggregate, reduce, … Concept: RDD
  26. 26. 26 #yTechParis ALS pour Alternating Least Squares  Algorithme phare de recommendation  ALS opère sur un RDD de Rating  Rating = note (action) d’un utilisateur sur un élement  Modélisation Rating pour Yrecommender:  user = colonne u:id de la table ‘view’ de Hbase  item = colonne p:id de la table ‘view’ de Hbase  rating = 1 (indique que la PDP est vue).  En scala: class Rating(user:Int, item:Int, rating:Double) Quelques Algorithmes: ALS
  27. 27. 27 #yTechParis  FP-Growth pour Frequent Pattern Growth  Algorithme phare de détection de fréquence  Intérêt: détecte les bundles/promos intéressants  FP-Growth opère sur un RDD de Transactions (liste de produits)  Transactions = liste des produits d’un utilisateur  Modélisation Transactions pour Yrecommender:  liste des colonnes p:id de la table ‘view’ de Hbase groupés par u:id  En scala: class List[Int]( item1, item2, item3,…) Quelques Algorithmes: FP-Growth
  28. 28. 28 #yTechParis  Charger les view events depuis Hbase dans Spark  Mapper les codes produits à des Int  Récupérer les ratings et les transactions  Appliquer les algorithmes  Calculer les recommandations  Calculer les similarités  Calculer les patterns (bundles) fréquents  Générer des outputs csv pour exploitation  Code source: https://github.com/yawo/yreco/blob/master/src/main/scala/com/yreco/RecommenderDemo.scala L’approche générale Yrecommender
  29. 29. 29 #yTechParis  Le Machine Learning ne vient pas des Mayas! (pas une prophétie)  Méthodes d’évaluation d’erreurs d’un model  À vue d’oeil  L’erreur quadratique moyenne (MSE, utilisé en statistique)  Les algorithmes permettent le “Tuning” des paramètres  Diminuer les erreurs en affinant les paramètres  Tester différentes facettes de models Evaluation d’erreurs et ajustements
  30. 30. 30 #yTechParis  1 – Batch mode: Génération des résultats en csv  2 – => Exploitation dans Hybris via Hotfolder  3 – Real time mode: Finagle ThriftServer  4 – => Exploitation dans Hybris via Spring  5 – Possibilités: Solr, RestServer / Cronjob, Crontab… Exploitation dans Hybris
  31. 31. 31 #yTechParis  Les models restent internes à la JVM Spark (classes java)  Besoin de formats exploitables depuis Hybris  Compiler les résultats les plus significatifs  Définir des seuils de pertinence (en fonction des algorithmes)  Tenir compte de l’aspect distribué des données…  Plusieurs options d’output possibles: csv, parquet, sql, etc  Approche Yrecommender:  Ex format = productCode, similarProductCode Batch mode: Génération des résultats en csv
  32. 32. 32 #yTechParis  Une nouvelle extension de plus sur terre: yrecommender  Config hotfolder (code source: https://goo.gl/MeSNae)  Importer des ProductReferences (relation dans les deux sens) Exploitation dans Hybris via Hotfolder
  33. 33. 33 #yTechParis  Apache Thrift = sorte de corba, avec idl, cross language  Outils de génération server/client vers plusieurs langages  Twitter Finagle = framework de services RPC  Destiné à la JVM  Basé sur les Futures pour un multithreading clean…  Supporte thrift, rest http, sockets, …  Supporte des filters,  Yrecommender expose les models via un server Thrift code source: https://goo.gl/bCQmIp Real time mode: Finagle Thrift Server
  34. 34. 34 #yTechParis  Ajouter le client Thrift généré (sous forme de jar) à Hybris  Exposer le client sous forme de service via Spring code source: https://goo.gl/6acykF Exploitation dans Hybris via Spring
  35. 35. 35 #yTechParis  Exposer un serveur Rest  Embarqué avec finagle  Externe avec tomcat  Indexer les résultats de models dans Solr ou Elasticsearch  Streamer les events vers Spark (par ex avec Kafka et Spark Streaming)  Automatiser tout le process depuis les events jusqu’aux csvs  Unix crontab (ou équivalent windows) pour la mise à jour des models  Hybris dynamic cronjob avec triggers Possibilités: Solr, RestServer / Cronjob, Crontab
  36. 36. 36 #yTechParis  Outils: Hybris, Spark 1.5, Hbase, Bash (ou powershell)  Environnement de démo : Ubuntu, Hybris 5.7, scala 2.11  Github code spark:  Github extension yrecommender: Live Demo
  37. 37. 37 #yTechParis Questions

×