SlideShare une entreprise Scribd logo
1  sur  45
Télécharger pour lire hors ligne
Moteurs de	
  
recommandation
avec	
  
Neo4j
Qui	
  moi être	
  ?
• Christophe	
  Willemsen
• Software	
  Engineer	
  |	
  Certified	
  Neo4j	
  Expert	
  @GraphAware
• Bruges	
  (Belgique)
Recommandations :	
  Vue globale
• Des	
  nouvelles que vous pourriez lire
• Des	
  livres	
  que vous pourriez acheter
• Des	
  personnesque vous pourriez connaître
• Des	
  personnes	
  que	
  vous	
  pourriez	
  inviter
• Personnes	
  à	
  qui	
  vous	
  pourriez	
  présenter	
  votre	
  produit
• …
Types	
  principaux de	
  recommandation
• Basé sur le	
  contenu (features)
• Filtrage collaboratif (relations	
  utilisateur -­‐>	
  élément)
La	
  bonne	
  nouvelle
Les	
  features tout	
  comme les	
  relations
peuvent être	
  représentées	
  naturellement	
  
dans	
  un	
  graphe.	
  
La	
  bonne	
  nouvelle
La	
  logique	
  de	
  recommendation peut	
  être	
  
représentée	
  en	
  traversée dans	
  le	
  graphe.
Exemple
Recommandation :	
  Business	
  Side
Identification	
  des	
  
règles	
  métier	
  afin	
  de	
  fournir	
  
de	
  la	
  recommandation
Exemple
Recommandation :	
  Business	
  Side
Recommander à	
  Alice	
  les	
  films vus	
  par	
  les	
  
personnes	
  qui	
  ont	
  noté	
  les	
  mêmes	
  films	
  
qu’elle	
  ET qu’elle	
  n’a	
  pas encore	
  noté.
Votre première	
  requête	
  de	
  reco
Recommandation :	
  Business	
  Side
Si	
  le	
  film fait	
  partie	
  d’un	
  Genre qui	
  intéresse
Alice,	
  augmenter	
  le	
  score	
  de	
  1
Votre deuxième première	
  requête	
  de	
  reco
(la	
  deuxième	
  quoi)
La	
  vraie vie	
  c’est compliqué…
Les	
  spécificités de	
  moteur	
  de	
  
recommandations	
  dans	
  le	
  monde	
  réel	
  sont	
  
beaucoup	
  plus	
  complexes.
La	
  vraie vie	
  c’est compliqué…
Imaginez	
  que	
  vous	
  devez	
  implémenter	
  la	
  
fonctionnalité	
  
“Personnes	
  que	
  vous	
  pourriez	
  connaître”	
  
sur	
  LinkedIn
La	
  vraie vie	
  c’est compliqué…
Après	
  une	
  session	
  de	
  brainstorming,	
  votre	
  
équipe	
  a	
  défini	
  les	
  différentes	
  possibilités	
  
pour	
  trouver des	
  personnes	
  que	
  quelqu’un	
  
pourrait	
  connaître.
La	
  vraie vie	
  c’est compliqué…
• Contacts	
  en	
  commun
• Amis	
  Facebook	
  en	
  commun
• Contacts	
  email/mobile	
  en	
  commun
• Les	
  contacts	
  de	
  tous	
  vos	
  contacts
• A	
  travaillé	
  pour	
  la	
  même	
  entreprise
• A	
  étudié	
  à	
  la	
  même	
  école
• Partagent	
  le	
  même	
  intérêt
• Vivent	
  dans	
  la	
  même	
  ville
La	
  vraie vie	
  c’est compliqué…
Mais	
  c’est	
  seulement	
  le	
  début !	
  
Revenons	
  en	
  arrière	
  et	
  regardons	
  
cela	
  de	
  plus	
  près!
La	
  vraie vie	
  c’est compliqué…
Plus	
  de	
  contacts	
  en	
  commun	
  :	
  
plus	
  rélévant?
La	
  vraie vie	
  c’est compliqué…
Même	
  ville	
  ou	
  école	
  :	
  
Est-­‐ce	
  que	
  la	
  taille	
  compte ?
La	
  vraie vie	
  c’est compliqué…
Qu’est-­‐ce	
  qu’on	
  fait	
  avec	
  les	
  é-­‐mails	
  qui
ne	
  représentent	
  pas	
  une	
  personne	
  ?
On	
  recommande	
  info@zenika.it ?
La	
  vraie vie	
  c’est compliqué…
Et	
  on	
  fait	
  quoi	
  avec	
  les	
  contacts	
  
qui	
  sont	
  en	
  attente	
  ?
qui	
  sont	
  rejetés	
  ?
qui	
  sont	
  ignorés	
  tout	
  le	
  temps	
  ?
La	
  vraie vie	
  c’est compliqué…
Etapes	
  de	
  base	
  d’un	
  moteur	
  de	
  reco
• Trouver	
  
• Qualifier
• Supprimer	
  les	
  non	
  rélévants
• Mesurer	
  la	
  qualité
#GraphAwareReco
The	
  Open-­‐Source Recommendation	
  Engine	
  Skeleton
GraphAwareReco
• Plugin	
  pour	
  Neo4j	
  (utilise	
  GraphAware	
  Framework)
• Vous	
  pouvez	
  utiliser	
  Cypher	
  ou	
  n’importe	
  quel	
  langage	
  JVM
• Architecture	
  opnionated
• Ultra	
  rapide
• Ultra	
  flexible
• Se	
  charge	
  de	
  toute	
  la	
  glue
GraphAwareReco
Votre premier	
  moteur de	
  reco..	
  yeahhh
Votre premier	
  moteur de	
  reco
Imaginons	
  qu’on	
  a	
  un	
  graphe de	
  personnes.
Votre premier	
  moteur de	
  reco
Notre	
  intention	
  est	
  de	
  recommander	
  des	
  personnes	
  que	
  vous	
  pourriez	
  
être	
  ami	
  avec	
  :
• Plus	
  d’amis	
  en	
  commun	
  =>	
  meilleur	
  score
• Vivent	
  dans	
  la	
  meme	
  ville	
  =>	
  plus	
  de	
  rélévance
• Même	
  sexe	
  =>	
  meilleure	
  chance
• Pénaliser	
  la	
  différence	
  d’âge
• Ceux	
  qui	
  sont	
  déjà	
  amis	
  ne	
  doivent	
  pas	
  être	
  recommandés
Votre premier	
  moteur de	
  reco
Notre	
  intention	
  est	
  de	
  recommander	
  des	
  personnes	
  que	
  vous	
  pourriez	
  
être	
  ami	
  avec	
  :
• Plus	
  d’amis	
  en	
  commun	
  =>	
  meilleur	
  score
• Vivent	
  dans	
  la	
  meme	
  ville	
  =>	
  plus	
  de	
  rélévance
• Même	
  sexe	
  =>	
  meilleure	
  chance
• Pénaliser	
  la	
  différence	
  d’âge
• Ceux	
  qui	
  sont	
  déjà	
  amis	
  ne	
  doivent	
  pas	
  être	
  recommandés
Découverte!
Qualification	
  (score)	
  :	
  même	
  ville
Qualification	
  (score)	
  :	
  même	
  sexe
Qualification	
  (score)	
  :	
  pénaliser	
  différence	
  âge
Blacklists	
  et	
  filtres
On	
  pourrait	
  créer	
  une	
  blacklist pour	
  ne	
  pas	
  
retourner	
  les	
  Personnes	
  déjà	
  connectées	
  de	
  
la	
  même	
  manière	
  que	
  les	
  PostProcessors,	
  
mais	
  on	
  va	
  utiliser	
  une	
  fonctionalité toute	
  
prête.
Et	
  on	
  colle	
  tout	
  ensemble
La	
  suite	
  ?
#GraphAidedSearch
ElasticSearch	
  and	
  Graphs.
The	
  best	
  of	
  both	
  worlds
#GraphAidedSearch
Processus	
  qui	
  permet	
  de	
  trouver	
  les	
  résultats	
  les	
  plus	
  
rélévants	
  d’une	
  requête	
  de	
  recherche	
  en	
  combinant les	
  
scores	
  de	
  rélévance	
  fournis	
  par	
  un	
  moteur	
  de	
  recherche	
  
avec	
  ceux	
  produits	
  par	
  un	
  moteur	
  de	
  recommandation.
GraphAidedSearch
GraphAidedSearch
Questions	
  ?
#Merci
Twitter	
  :	
  @ikwattro	
  -­‐ @graph_aware
http://graphaware.com
https://github.com/graphaware

Contenu connexe

En vedette

201301 - Focus Neo4j
201301 - Focus Neo4j201301 - Focus Neo4j
201301 - Focus Neo4j
lyonjug
 
IoT - IT 423 ppt
IoT - IT 423 pptIoT - IT 423 ppt
IoT - IT 423 ppt
Mhae Lyn
 

En vedette (13)

Cassandra pour les développeurs java
Cassandra pour les développeurs javaCassandra pour les développeurs java
Cassandra pour les développeurs java
 
Neo4j - Cas d'usages pour votre métier
Neo4j - Cas d'usages pour votre métierNeo4j - Cas d'usages pour votre métier
Neo4j - Cas d'usages pour votre métier
 
Introduction à Neo4j
Introduction à Neo4jIntroduction à Neo4j
Introduction à Neo4j
 
Base de données graphe et Neo4j
Base de données graphe et Neo4jBase de données graphe et Neo4j
Base de données graphe et Neo4j
 
The Changing Role of Healthcare Data Analysts
The Changing Role of Healthcare Data AnalystsThe Changing Role of Healthcare Data Analysts
The Changing Role of Healthcare Data Analysts
 
Introduction à Apache Cassandra — IppEvent chez OVH 2017-03-02
Introduction à Apache Cassandra — IppEvent chez OVH 2017-03-02Introduction à Apache Cassandra — IppEvent chez OVH 2017-03-02
Introduction à Apache Cassandra — IppEvent chez OVH 2017-03-02
 
4 Best Practices for Analyzing Healthcare Data
4 Best Practices for Analyzing Healthcare Data4 Best Practices for Analyzing Healthcare Data
4 Best Practices for Analyzing Healthcare Data
 
THE INTERNET OF THINGS
THE INTERNET OF THINGSTHE INTERNET OF THINGS
THE INTERNET OF THINGS
 
201301 - Focus Neo4j
201301 - Focus Neo4j201301 - Focus Neo4j
201301 - Focus Neo4j
 
Quelles stratégies de Recherche avec Cassandra ?
Quelles stratégies de Recherche avec Cassandra ?Quelles stratégies de Recherche avec Cassandra ?
Quelles stratégies de Recherche avec Cassandra ?
 
Apache Cassandra - Concepts et fonctionnalités
Apache Cassandra - Concepts et fonctionnalitésApache Cassandra - Concepts et fonctionnalités
Apache Cassandra - Concepts et fonctionnalités
 
Internet-of-things- (IOT) - a-seminar - ppt - by- mohan-kumar-g
Internet-of-things- (IOT) - a-seminar - ppt - by- mohan-kumar-gInternet-of-things- (IOT) - a-seminar - ppt - by- mohan-kumar-g
Internet-of-things- (IOT) - a-seminar - ppt - by- mohan-kumar-g
 
IoT - IT 423 ppt
IoT - IT 423 pptIoT - IT 423 ppt
IoT - IT 423 ppt
 

Similaire à Moteurs de recommendation avec Neo4j et GraphAwareReco

Sondage CROP - Les valeurs des jeunes Québécois
Sondage CROP - Les valeurs des jeunes QuébécoisSondage CROP - Les valeurs des jeunes Québécois
Sondage CROP - Les valeurs des jeunes Québécois
Chrystian Guy - DAC Group
 
doc_actualite_6553267.pdf
doc_actualite_6553267.pdfdoc_actualite_6553267.pdf
doc_actualite_6553267.pdf
MaguyH1
 
Réseau.pptx
Réseau.pptx Réseau.pptx
Réseau.pptx
rlil88
 

Similaire à Moteurs de recommendation avec Neo4j et GraphAwareReco (20)

Job dans le social & identité numérique
Job dans le social & identité numériqueJob dans le social & identité numérique
Job dans le social & identité numérique
 
Glissements progressifs du désir
Glissements progressifs du désirGlissements progressifs du désir
Glissements progressifs du désir
 
Atelier sur le networking virtuel et présentiel
Atelier sur le networking virtuel et présentielAtelier sur le networking virtuel et présentiel
Atelier sur le networking virtuel et présentiel
 
Sondage CROP - Les valeurs des jeunes Québécois
Sondage CROP - Les valeurs des jeunes QuébécoisSondage CROP - Les valeurs des jeunes Québécois
Sondage CROP - Les valeurs des jeunes Québécois
 
doc_actualite_6553267.pdf
doc_actualite_6553267.pdfdoc_actualite_6553267.pdf
doc_actualite_6553267.pdf
 
Animer un réseau d'apprenants Journées E-learning Lyon #JELyon
Animer un réseau d'apprenants Journées E-learning Lyon #JELyonAnimer un réseau d'apprenants Journées E-learning Lyon #JELyon
Animer un réseau d'apprenants Journées E-learning Lyon #JELyon
 
LinkedIn pour la recherche d'emploi en sciences de l'information
LinkedIn pour la recherche d'emploi en sciences de l'informationLinkedIn pour la recherche d'emploi en sciences de l'information
LinkedIn pour la recherche d'emploi en sciences de l'information
 
Bénévoles engagés et motivés
Bénévoles engagés et motivésBénévoles engagés et motivés
Bénévoles engagés et motivés
 
Guide introduction aux types de joueurs
Guide introduction aux types de joueursGuide introduction aux types de joueurs
Guide introduction aux types de joueurs
 
Linkedin pour les courtiers immobiliers
Linkedin pour les courtiers immobiliersLinkedin pour les courtiers immobiliers
Linkedin pour les courtiers immobiliers
 
GUIDE Linkedin novembre 2023
GUIDE Linkedin  novembre 2023GUIDE Linkedin  novembre 2023
GUIDE Linkedin novembre 2023
 
Bien utiliser LinkedIn
Bien utiliser LinkedInBien utiliser LinkedIn
Bien utiliser LinkedIn
 
Foursquare
FoursquareFoursquare
Foursquare
 
Flupa UX Days 2017: " La Personnalité et les personas en Expérience Utilisate...
Flupa UX Days 2017: " La Personnalité et les personas en Expérience Utilisate...Flupa UX Days 2017: " La Personnalité et les personas en Expérience Utilisate...
Flupa UX Days 2017: " La Personnalité et les personas en Expérience Utilisate...
 
Réseau.pptx
Réseau.pptx Réseau.pptx
Réseau.pptx
 
Rapid testing - Lean startup day 2017 Paris
Rapid testing -  Lean startup day 2017 ParisRapid testing -  Lean startup day 2017 Paris
Rapid testing - Lean startup day 2017 Paris
 
Personal Branding : Découvrez votre marque personnelle
Personal Branding : Découvrez votre marque personnellePersonal Branding : Découvrez votre marque personnelle
Personal Branding : Découvrez votre marque personnelle
 
Ergonomie web
Ergonomie webErgonomie web
Ergonomie web
 
Recherche emploi & identité numérique
Recherche emploi & identité numériqueRecherche emploi & identité numérique
Recherche emploi & identité numérique
 
À votre marque, prêts, partez! Comment gérer votre marque personnelle à l'ère...
À votre marque, prêts, partez! Comment gérer votre marque personnelle à l'ère...À votre marque, prêts, partez! Comment gérer votre marque personnelle à l'ère...
À votre marque, prêts, partez! Comment gérer votre marque personnelle à l'ère...
 

Plus de Christophe Willemsen

Your own recommendation engine with neo4j and reco4php - DPC16
Your own recommendation engine with neo4j and reco4php - DPC16Your own recommendation engine with neo4j and reco4php - DPC16
Your own recommendation engine with neo4j and reco4php - DPC16
Christophe Willemsen
 

Plus de Christophe Willemsen (11)

Knowledge graphs + Chatbots with Neo4j
Knowledge graphs + Chatbots with Neo4jKnowledge graphs + Chatbots with Neo4j
Knowledge graphs + Chatbots with Neo4j
 
Chatbots and Voice Conversational Interfaces with Amazon Alexa, Neo4j and Gra...
Chatbots and Voice Conversational Interfaces with Amazon Alexa, Neo4j and Gra...Chatbots and Voice Conversational Interfaces with Amazon Alexa, Neo4j and Gra...
Chatbots and Voice Conversational Interfaces with Amazon Alexa, Neo4j and Gra...
 
Management des issues Github avec Neo4j et NLP
Management des issues Github avec Neo4j et NLPManagement des issues Github avec Neo4j et NLP
Management des issues Github avec Neo4j et NLP
 
Your own recommendation engine with neo4j and reco4php - DPC16
Your own recommendation engine with neo4j and reco4php - DPC16Your own recommendation engine with neo4j and reco4php - DPC16
Your own recommendation engine with neo4j and reco4php - DPC16
 
Recommendation Engines with Neo4j, Symfony and Reco4PHP
Recommendation Engines with Neo4j, Symfony and Reco4PHPRecommendation Engines with Neo4j, Symfony and Reco4PHP
Recommendation Engines with Neo4j, Symfony and Reco4PHP
 
Neo4j au secours de l'Internet of Connected Things
Neo4j au secours de l'Internet of Connected ThingsNeo4j au secours de l'Internet of Connected Things
Neo4j au secours de l'Internet of Connected Things
 
Graph Database Prototyping made easy with Graphgen
Graph Database Prototyping made easy with GraphgenGraph Database Prototyping made easy with Graphgen
Graph Database Prototyping made easy with Graphgen
 
Graphgen - le générateur de graphes
Graphgen - le générateur de graphesGraphgen - le générateur de graphes
Graphgen - le générateur de graphes
 
Analysing Github events with Neo4j
Analysing Github events with Neo4jAnalysing Github events with Neo4j
Analysing Github events with Neo4j
 
Présentation symfony drupal
Présentation symfony drupalPrésentation symfony drupal
Présentation symfony drupal
 
GMDSS - Practice1
GMDSS - Practice1GMDSS - Practice1
GMDSS - Practice1
 

Moteurs de recommendation avec Neo4j et GraphAwareReco

  • 2. Qui  moi être  ? • Christophe  Willemsen • Software  Engineer  |  Certified  Neo4j  Expert  @GraphAware • Bruges  (Belgique)
  • 3. Recommandations :  Vue globale • Des  nouvelles que vous pourriez lire • Des  livres  que vous pourriez acheter • Des  personnesque vous pourriez connaître • Des  personnes  que  vous  pourriez  inviter • Personnes  à  qui  vous  pourriez  présenter  votre  produit • …
  • 4. Types  principaux de  recommandation • Basé sur le  contenu (features) • Filtrage collaboratif (relations  utilisateur -­‐>  élément)
  • 5. La  bonne  nouvelle Les  features tout  comme les  relations peuvent être  représentées  naturellement   dans  un  graphe.  
  • 6. La  bonne  nouvelle La  logique  de  recommendation peut  être   représentée  en  traversée dans  le  graphe.
  • 8. Recommandation :  Business  Side Identification  des   règles  métier  afin  de  fournir   de  la  recommandation
  • 10. Recommandation :  Business  Side Recommander à  Alice  les  films vus  par  les   personnes  qui  ont  noté  les  mêmes  films   qu’elle  ET qu’elle  n’a  pas encore  noté.
  • 12. Recommandation :  Business  Side Si  le  film fait  partie  d’un  Genre qui  intéresse Alice,  augmenter  le  score  de  1
  • 13. Votre deuxième première  requête  de  reco (la  deuxième  quoi)
  • 14. La  vraie vie  c’est compliqué… Les  spécificités de  moteur  de   recommandations  dans  le  monde  réel  sont   beaucoup  plus  complexes.
  • 15. La  vraie vie  c’est compliqué… Imaginez  que  vous  devez  implémenter  la   fonctionnalité   “Personnes  que  vous  pourriez  connaître”   sur  LinkedIn
  • 16. La  vraie vie  c’est compliqué… Après  une  session  de  brainstorming,  votre   équipe  a  défini  les  différentes  possibilités   pour  trouver des  personnes  que  quelqu’un   pourrait  connaître.
  • 17. La  vraie vie  c’est compliqué… • Contacts  en  commun • Amis  Facebook  en  commun • Contacts  email/mobile  en  commun • Les  contacts  de  tous  vos  contacts • A  travaillé  pour  la  même  entreprise • A  étudié  à  la  même  école • Partagent  le  même  intérêt • Vivent  dans  la  même  ville
  • 18. La  vraie vie  c’est compliqué… Mais  c’est  seulement  le  début !   Revenons  en  arrière  et  regardons   cela  de  plus  près!
  • 19. La  vraie vie  c’est compliqué… Plus  de  contacts  en  commun  :   plus  rélévant?
  • 20. La  vraie vie  c’est compliqué… Même  ville  ou  école  :   Est-­‐ce  que  la  taille  compte ?
  • 21. La  vraie vie  c’est compliqué… Qu’est-­‐ce  qu’on  fait  avec  les  é-­‐mails  qui ne  représentent  pas  une  personne  ? On  recommande  info@zenika.it ?
  • 22. La  vraie vie  c’est compliqué… Et  on  fait  quoi  avec  les  contacts   qui  sont  en  attente  ? qui  sont  rejetés  ? qui  sont  ignorés  tout  le  temps  ?
  • 23. La  vraie vie  c’est compliqué… Etapes  de  base  d’un  moteur  de  reco • Trouver   • Qualifier • Supprimer  les  non  rélévants • Mesurer  la  qualité
  • 25. GraphAwareReco • Plugin  pour  Neo4j  (utilise  GraphAware  Framework) • Vous  pouvez  utiliser  Cypher  ou  n’importe  quel  langage  JVM • Architecture  opnionated • Ultra  rapide • Ultra  flexible • Se  charge  de  toute  la  glue
  • 27. Votre premier  moteur de  reco..  yeahhh
  • 28. Votre premier  moteur de  reco Imaginons  qu’on  a  un  graphe de  personnes.
  • 29. Votre premier  moteur de  reco Notre  intention  est  de  recommander  des  personnes  que  vous  pourriez   être  ami  avec  : • Plus  d’amis  en  commun  =>  meilleur  score • Vivent  dans  la  meme  ville  =>  plus  de  rélévance • Même  sexe  =>  meilleure  chance • Pénaliser  la  différence  d’âge • Ceux  qui  sont  déjà  amis  ne  doivent  pas  être  recommandés
  • 30. Votre premier  moteur de  reco Notre  intention  est  de  recommander  des  personnes  que  vous  pourriez   être  ami  avec  : • Plus  d’amis  en  commun  =>  meilleur  score • Vivent  dans  la  meme  ville  =>  plus  de  rélévance • Même  sexe  =>  meilleure  chance • Pénaliser  la  différence  d’âge • Ceux  qui  sont  déjà  amis  ne  doivent  pas  être  recommandés
  • 32.
  • 33. Qualification  (score)  :  même  ville
  • 34. Qualification  (score)  :  même  sexe
  • 35. Qualification  (score)  :  pénaliser  différence  âge
  • 36. Blacklists  et  filtres On  pourrait  créer  une  blacklist pour  ne  pas   retourner  les  Personnes  déjà  connectées  de   la  même  manière  que  les  PostProcessors,   mais  on  va  utiliser  une  fonctionalité toute   prête.
  • 37. Et  on  colle  tout  ensemble
  • 40. #GraphAidedSearch Processus  qui  permet  de  trouver  les  résultats  les  plus   rélévants  d’une  requête  de  recherche  en  combinant les   scores  de  rélévance  fournis  par  un  moteur  de  recherche   avec  ceux  produits  par  un  moteur  de  recommandation.
  • 41.
  • 45. #Merci Twitter  :  @ikwattro  -­‐ @graph_aware http://graphaware.com https://github.com/graphaware