37
1 #yTechPari s Machine Learning sur hybris ecommerce [Y]recommende r Présenté par Yawo KPOTUFE Hybris expert / Solution architect

Yrecommender, machine learning sur Hybris

Embed Size (px)

Citation preview

Page 1: Yrecommender, machine learning sur Hybris

1

#yTechParis

Machine Learning sur hybris ecommerce

[Y]recommend

erPrésenté par Yawo KPOTUFE Hybris expert / Solution architect

Page 2: Yrecommender, machine learning sur Hybris

2

#yTechParis

Notre cible en image

SAP SAP
Utiliser l'en-tête du template #yTech
SAP SAP
Recadrage de l'imageSuppression de l'effet reflet
Page 3: Yrecommender, machine learning sur Hybris

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

Page 4: Yrecommender, machine learning sur Hybris

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

Page 5: Yrecommender, machine learning sur Hybris

5

#yTechParis

Le merchandising

Une politique efficace deprix, de discounts et de promotions

Ensemble des efforts, moyens et techniques mis en œuvre pour vendre

Page 6: Yrecommender, machine learning sur Hybris

6

#yTechParis Un design et un packaging

séduisants

Le merchandising

Page 7: Yrecommender, machine learning sur Hybris

7

#yTechParis Et surtout la combinaison du tout.

Décider à quel moment,à quel utilisateur présentertel produit, telle promotion…

Le merchandising

Page 8: Yrecommender, machine learning sur Hybris

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

Page 9: Yrecommender, machine learning sur Hybris

9

#yTechParis

Solutions tierces: Sparkow (ex compario)

Page 10: Yrecommender, machine learning sur Hybris

10

#yTechParis

Solutions tierces: SDL (ex Fredhopper)

Page 11: Yrecommender, machine learning sur Hybris

11

#yTechParis

Concept: Collaborative Filtering, Similarités

Détecter des similarités

à partir des actions et comportements desutilisateurs dans la vraie vie.

Détecter des similarités à partir des

caractéristiques (product features/categories) des produits

Merchandising par recommandation

Page 12: Yrecommender, machine learning sur Hybris

12

#yTechParis

Success stories: Netflix & Amazon

AmazonProduct recommandation system

NetflixMovie recommender engine

Page 13: Yrecommender, machine learning sur Hybris

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

Page 14: Yrecommender, machine learning sur Hybris

14

#yTechParis

Hybris Business eventsEvents supportés Out Of The Box

Page 15: Yrecommender, machine learning sur Hybris

15

#yTechParis

Hybris Business eventsArchitecture

Page 16: Yrecommender, machine learning sur Hybris

16

#yTechParis

Recommandations avec Business events

a. Récolter des business events

b. Calculer les recommandations

Page 17: Yrecommender, machine learning sur Hybris

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

(Extract Transform Load)(Big Data

Storage)(Google Big

Tables)

Page 18: Yrecommender, machine learning sur Hybris

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

Page 19: Yrecommender, machine learning sur Hybris

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

Page 20: Yrecommender, machine learning sur Hybris

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

Page 21: Yrecommender, machine learning sur Hybris

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

Page 22: Yrecommender, machine learning sur Hybris

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• …

Page 23: Yrecommender, machine learning sur Hybris

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

Page 24: Yrecommender, machine learning sur Hybris

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

Page 25: Yrecommender, machine learning sur Hybris

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

Page 26: Yrecommender, machine learning sur Hybris

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

Page 27: Yrecommender, machine learning sur Hybris

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

Page 28: Yrecommender, machine learning sur Hybris

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

Page 29: Yrecommender, machine learning sur Hybris

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

Page 30: Yrecommender, machine learning sur Hybris

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

Page 31: Yrecommender, machine learning sur 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

Page 32: Yrecommender, machine learning sur Hybris

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

Page 33: Yrecommender, machine learning sur Hybris

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

Page 34: Yrecommender, machine learning sur Hybris

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

Page 35: Yrecommender, machine learning sur Hybris

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

Page 36: Yrecommender, machine learning sur Hybris

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: https://github.com/yawo/yreco Github extension yrecommender:

Live Demo

https://github.com/yawo/yrecommender-hybris-extension

Page 37: Yrecommender, machine learning sur Hybris

37

#yTechParis

Questions