2015-11-23 1 views
3

Je voudrais créer un service de recommandation à l'aide de prediction.io. Je pense que pour mon besoin Universal Recommender (http://templates.prediction.io/PredictionIO/template-scala-parallel-universal-recommendation) est un bon modèle. Mon site Web montre EPG et je veux faire une recommandation basée sur la vue de la page de l'utilisateur pour un simple PoC. Une page vue est une émission avec un certain genre d'attributs, les acteurs, les tags, canal, bouquet ...Collecte de données dans Universal Recommender

Pour le début, je vous enverrai un seul événement primaire, l'utilisateur voir l'émission:

{ 
    "event" : "view", 
    "entityType" : "user", 
    "entityId" : "userId", 
    "targetEntityType" : "item", 
    "targetEntityId" : "broadcastId", 
    "properties" : {}, 
    "eventTime" : "2015-10-05T21:02:49.228Z" 
} 

Si Je comprends la doc, je vais devoir envoyer à l'aide crontask nouvelles émissions quotidiennes afin d'ajouter des attributs, et d'apprendre à Pío nouveaux éléments:

{ 
    "event" : "$set", 
    "entityType" : "item", 
    "entityId" : "broadcastId", 
    "properties" : { 
     "bouquet" :  ["B1", "B2"], 
     "people": ["P1", "P2"], 
     "channel": ["C1"], 
     "availableDate" :  "2015-11-23T21:02:49.228Z", 
     "expireDate":   "2016-10-05T21:02:49.228Z" 
    }, 
    "eventTime" : "2015-11-23T21:02:49.228Z" 
} 

maintenant, je ne sais pas s'il est préférable d'utiliser des attributs dans l'entité de diffusion ou s'il est préférable d'envoyer des événements secondaires? par exemple:

{ 
    "event" : "view-bouquet", 
    "entityType" : "user", 
    "entityId" : "userId", 
    "targetEntityType" : "item", 
    "targetEntityId" : "bouquetId", 
    "properties" : {}, 
    "eventTime" : "2015-10-05T21:02:49.228Z" 
} 

{ 
    "event" : "view-people", 
    "entityType" : "user", 
    "entityId" : "userId", 
    "targetEntityType" : "item", 
    "targetEntityId" : "peopleId", 
    "properties" : {}, 
    "eventTime" : "2015-10-05T21:02:49.228Z" 
} 

... 

{ 
    "event" : "view-channel", 
    "entityType" : "user", 
    "entityId" : "userId", 
    "targetEntityType" : "item", 
    "targetEntityId" : "channelId", 
    "properties" : {}, 
    "eventTime" : "2015-10-05T21:02:49.228Z" 
} 

Répondre

0

Cela dépend de ce que vous voulez faire. Si vous voulez pouvoir filtrer et/ou augmenter, ajoutez-les en tant que propriétés sur l'élément; Si vous voulez qu'ils influencent/améliorent le modèle par calcul de cooccurrence croisée, envoyez-les comme événements secondaires. [Ou faites les deux si/quand cela a du sens pour vous]

+0

Je n'ai pas besoin de booster et/ou de filtrer dans mon cas car les UR ne permettent que de booster la valeur d'un attribut et je voudrais booster un attribut , pour donner du poids aux attributs. Par exemple "bouquet" pourrait être défini comme plus important que "canal" – jrweb247