tensorflow / tensorflow/recommenders

Approach for Content Recommendation Usecase

Open
#507 1 comment 0 reactions 0 assignees View on GitHub

Nobody has claimed this yet.

Dominant language
Python
Stars
2k
Forks
300
PR merge metrics
No merged PRs in 30d

Description

Hello folks, thanks for the great package. I'm looking to build a Content Recommendation Engine. The task is to recommend content to the sales representatives based on their role, skills, skill level, ongoing deal status, etc. In the future, these recommendations would be served within a chatbot.

  • I've decided to use Twin Tower Model for building the Retrieval Model (using positive interactions i.e. user clicked on the content). From my understanding, the negative interactions would automatically get sampled by the package during the computation of the scores matrix. Is it true? If yes, how many positive interactions per user are required for a good model?

  • Then use the Ranking Model with MMR (using users' explicit feedback on the consumed content) in order to obtain the best content predictions. Initially, I'm looking to use an XGBoost as it works well on tabular datasets and due to explainability reasons in contrast to Neural Network. Any suggestions?

  • Later, in order to explain these recommendations, I've decided to use a model explainability approach like SHAP to obtain feature importance and use sentence templates to fill in the values like: "Hey, I think you need to improve at <-feature-value-> <-feature-type->, check this out <-content-info->".

Few questions:

  1. What do you think of the entire approach? Does it seem feasible?
  2. Which concerns in terms of data collection, and model training should I adhere to?
  3. For new userIDs/itemIDs, as it's not an e-commerce platform, using a large enough hashing function seems reasonable in the beginning, that can be replaced by items-interacted with (in case of users) in the future. What should be done for new itemIDs?
  4. Initially when we don't have interaction data at all, how do we approach content recommendation? Should we use basic features and create user and content embeddings, and look to create UserKNN or ItemKNN-based retrieval? Thoughts on this?
  5. What changes are to be made for every new user and content added? Index to be updated or entire re-training should be triggered?
  6. How can we collect negative interactions when only a single recommendation is to be served within the chatbot? Should we rely on post recommendation feedback (for example, please rate it on a scale of 1-5) other than clicks and use that as negative interaction?

Your suggestions would be really helpful: @maciejkula @patrickorlando

Contributor guide

Open the contributing guide

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

Research direction

No file, test, or entry point is named. Start by narrowing the broad recommendation-system questions into one concrete TensorFlow Recommenders change with a defined data or training scenario; done would require an agreed scope and an implementation target rather than general architectural advice.

Written by the indexing model from the issue text.

Assessment

Tech stack
python, tensorflow
Domain
machine-learning
Issue type
Feature
Difficulty
5/5
Estimated time
Over a week
Activity status
Stale
Clarity
Needs clarification
Newbie friendliness
15/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.