Moteurs de recommendation avec Neo4j et GraphAwareReco

45
Moteurs de recommandation avec Neo4j

Transcript of Moteurs de recommendation avec Neo4j et GraphAwareReco

Page 1: Moteurs de recommendation avec Neo4j et GraphAwareReco

Moteurs de  recommandation

avec  Neo4j

Page 2: Moteurs de recommendation avec Neo4j et GraphAwareReco

Qui  moi être  ?

• Christophe  Willemsen• Software  Engineer  |  Certified  Neo4j  Expert  @GraphAware• Bruges  (Belgique)

Page 3: Moteurs de recommendation avec Neo4j et GraphAwareReco

Recommandations :  Vue globale

• Des  nouvelles que vous pourriez lire• Des  livres  que vous pourriez acheter• Des  personnes que vous pourriez connaître• Des  personnes  que  vous  pourriez  inviter• Personnes  à  qui  vous  pourriez  présenter  votre  produit• …

Page 4: Moteurs de recommendation avec Neo4j et GraphAwareReco

Types  principaux de  recommandation

• Basé sur le  contenu (features)• Filtrage collaboratif (relations  utilisateur -­‐>  élément)

Page 5: Moteurs de recommendation avec Neo4j et GraphAwareReco

La  bonne  nouvelle

Les  features tout  comme les  relationspeuvent être  représentées  naturellement  

dans  un  graphe.  

Page 6: Moteurs de recommendation avec Neo4j et GraphAwareReco

La  bonne  nouvelle

La  logique  de  recommendation peut  être  représentée  en  traversée dans  le  graphe.

Page 7: Moteurs de recommendation avec Neo4j et GraphAwareReco

Exemple

Page 8: Moteurs de recommendation avec Neo4j et GraphAwareReco

Recommandation :  Business  Side

Identification  des  règles  métier  afin  de  fournir  

de  la  recommandation

Page 9: Moteurs de recommendation avec Neo4j et GraphAwareReco

Exemple

Page 10: Moteurs de recommendation avec Neo4j et GraphAwareReco

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é.

Page 11: Moteurs de recommendation avec Neo4j et GraphAwareReco

Votre première  requête  de  reco

Page 12: Moteurs de recommendation avec Neo4j et GraphAwareReco

Recommandation :  Business  Side

Si  le  film fait  partie  d’un  Genre qui  intéresseAlice,  augmenter  le  score  de  1

Page 13: Moteurs de recommendation avec Neo4j et GraphAwareReco

Votre deuxième première  requête  de  reco(la  deuxième  quoi)

Page 14: Moteurs de recommendation avec Neo4j et GraphAwareReco

La  vraie vie  c’est compliqué…

Les  spécificités de  moteur  de  recommandations  dans  le  monde  réel  sont  

beaucoup  plus  complexes.

Page 15: Moteurs de recommendation avec Neo4j et GraphAwareReco

La  vraie vie  c’est compliqué…

Imaginez  que  vous  devez  implémenter  la  fonctionnalité  

“Personnes  que  vous  pourriez  connaître”  sur  LinkedIn

Page 16: Moteurs de recommendation avec Neo4j et GraphAwareReco

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.

Page 17: Moteurs de recommendation avec Neo4j et GraphAwareReco

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

Page 18: Moteurs de recommendation avec Neo4j et GraphAwareReco

La  vraie vie  c’est compliqué…

Mais  c’est  seulement  le  début !  Revenons  en  arrière  et  regardons  

cela  de  plus  près!

Page 19: Moteurs de recommendation avec Neo4j et GraphAwareReco

La  vraie vie  c’est compliqué…

Plus  de  contacts  en  commun  :  

plus  rélévant?

Page 20: Moteurs de recommendation avec Neo4j et GraphAwareReco

La  vraie vie  c’est compliqué…

Même  ville  ou  école  :  

Est-­‐ce  que  la  taille  compte ?

Page 21: Moteurs de recommendation avec Neo4j et GraphAwareReco

La  vraie vie  c’est compliqué…

Qu’est-­‐ce  qu’on  fait  avec  les  é-­‐mails  quine  représentent  pas  une  personne  ?

On  recommande  [email protected] ?

Page 22: Moteurs de recommendation avec Neo4j et GraphAwareReco

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  ?

Page 23: Moteurs de recommendation avec Neo4j et GraphAwareReco

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é

Page 24: Moteurs de recommendation avec Neo4j et GraphAwareReco

#GraphAwareRecoThe  Open-­‐Source Recommendation  Engine  Skeleton

Page 25: Moteurs de recommendation avec Neo4j et GraphAwareReco

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

Page 26: Moteurs de recommendation avec Neo4j et GraphAwareReco

GraphAwareReco

Page 27: Moteurs de recommendation avec Neo4j et GraphAwareReco

Votre premier  moteur de  reco..  yeahhh

Page 28: Moteurs de recommendation avec Neo4j et GraphAwareReco

Votre premier  moteur de  reco

Imaginons  qu’on  a  un  graphe de  personnes.

Page 29: Moteurs de recommendation avec Neo4j et GraphAwareReco

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

Page 30: Moteurs de recommendation avec Neo4j et GraphAwareReco

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

Page 31: Moteurs de recommendation avec Neo4j et GraphAwareReco

Découverte!

Page 32: Moteurs de recommendation avec Neo4j et GraphAwareReco
Page 33: Moteurs de recommendation avec Neo4j et GraphAwareReco

Qualification  (score)  :  même  ville

Page 34: Moteurs de recommendation avec Neo4j et GraphAwareReco

Qualification  (score)  :  même  sexe

Page 35: Moteurs de recommendation avec Neo4j et GraphAwareReco

Qualification  (score)  :  pénaliser  différence  âge

Page 36: Moteurs de recommendation avec Neo4j et GraphAwareReco

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.

Page 37: Moteurs de recommendation avec Neo4j et GraphAwareReco

Et  on  colle  tout  ensemble

Page 38: Moteurs de recommendation avec Neo4j et GraphAwareReco

La  suite  ?

Page 39: Moteurs de recommendation avec Neo4j et GraphAwareReco

#GraphAidedSearchElasticSearch  and  Graphs.The  best  of  both  worlds

Page 40: Moteurs de recommendation avec Neo4j et GraphAwareReco

#GraphAidedSearchProcessus  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.

Page 41: Moteurs de recommendation avec Neo4j et GraphAwareReco
Page 42: Moteurs de recommendation avec Neo4j et GraphAwareReco

GraphAidedSearch

Page 43: Moteurs de recommendation avec Neo4j et GraphAwareReco

GraphAidedSearch

Page 44: Moteurs de recommendation avec Neo4j et GraphAwareReco

Questions  ?

Page 45: Moteurs de recommendation avec Neo4j et GraphAwareReco

#MerciTwitter  :  @ikwattro  -­‐ @graph_aware

http://graphaware.comhttps://github.com/graphaware