Moteurs de recommendation avec Neo4j et GraphAwareReco

Post on 12-Apr-2017

1.066 views 0 download

Transcript of Moteurs de recommendation avec Neo4j et GraphAwareReco

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  personnes que 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  relationspeuvent ê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éresseAlice,  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  quine  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é

#GraphAwareRecoThe  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  ?

#GraphAidedSearchElasticSearch  and  Graphs.The  best  of  both  worlds

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

GraphAidedSearch

GraphAidedSearch

Questions  ?

#MerciTwitter  :  @ikwattro  -­‐ @graph_aware

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