1
#yTechParis
Machine Learning sur hybris
ecommerce
[Y]recommender
Présenté par Yawo KPOTUFE
Hybris expert / Solution architect
2
#yTechParis
Notre cible en image
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
#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
#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
#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 promotion…
Le merchandising
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
#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
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
#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
 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
#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 des tables Hbase
 5 – Yrecommender: notre table ‘view’
Hybris Business Events data
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
#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
#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
#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
#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
#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
#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
#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
#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
#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
#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
#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
#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
#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
#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
#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
#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
#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
#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
#yTechParis
Questions

Yrecommender, machine learning sur Hybris

  • 1.
    1 #yTechParis Machine Learning surhybris ecommerce [Y]recommender Présenté par Yawo KPOTUFE Hybris expert / Solution architect
  • 2.
  • 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 #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 #yTechParis Le merchandising  Unepolitique efficace de prix, de discounts et de promotions  Ensemble des efforts, moyens et techniques mis en œuvre pour vendre
  • 6.
    6 #yTechParis  Un designet un packaging séduisants Le merchandising
  • 7.
    7 #yTechParis  Et surtoutla combinaison du tout. Décider à quel moment, à quel utilisateur présenter tel produit, telle promotion… Le merchandising
  • 8.
    8 #yTechParis SAP HybrisMarketing 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.
  • 10.
  • 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 #yTechParis Success stories: Netflix& Amazon AmazonProduct recommandation system NetflixMovie recommender engine
  • 13.
    13 #yTechParis  Capture lesactions 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.
  • 15.
  • 16.
    16 #yTechParis Recommandations avec Businessevents a. Récolter des business events b. Calculer les recommandations
  • 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 #yTechParis  Phase trèsimportante 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 #yTechParis  Problématique detaille 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 #yTechParis  Solution baséesur 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 #yTechParis  Les columnfamilies (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 #yTechParis  Row keyconstruite à 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 #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 #yTechParis  Framework decalcul 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 #yTechParis  Spark utiliseune 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 #yTechParis ALS pourAlternating 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 #yTechParis  FP-Growth pourFrequent 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 #yTechParis  Charger lesview 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 #yTechParis  Le MachineLearning 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 #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 #yTechParis  Les modelsrestent 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 #yTechParis  Une nouvelleextension 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 #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 #yTechParis  Ajouter leclient 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 #yTechParis  Exposer unserveur 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 #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.