Is there such a thing as collaborative and content based filtering in tensorflow recommenders?

In the basic literature for recommender systems collaborative and content based filters are often referenced. Whilst collaborative filters often use similarity of items or users to predict items, content filters use item features to find items similar to what the user has already liked.

Is such a distinction relevant in tensorflow retrieval and ranking models here Recommending movies: retrieval  |  TensorFlow Recommenders, or do these models act as both collaborative and content based filters if the schemas supplied include item features?

Additionally, in basic recommender systems, content based filters are often used to overcome the cold start problem. How do tensorflow retrieval and ranking recommender systems overcome this?

Yes, you may use user, item, and context features to address “cold start” challenges and to effectively implement both collaborative and content filtering.

The بهره گیری از ویژگی های زمینه  |  TensorFlow Recommenders tutorial shows how you can incorporate user, item, and context features in your model(s).

Hi @rcauvin . I have a question related to the item cold start. How can I add a new item to recommend? Is it possible to do it without retraining the model? I was watching this video, but it doesn’t say how to address the problem using the TF recommenders library. Do you know where can i get some info about it?

Yes, a trained recommender model can make predictions on items it hasn’t seen during training. (For these predictions to be meaningful, you’ll want to include item features, not just item IDs, in the input for the training.)

The key to including new items in the retrieval pool is to create an index on the already-trained query and candidate models as follows:

index = tfrs.layers.factorized_top_k.BruteForce(query_model = query_model, k = k)
candidates = candidate_ds.batch(100).map(lambda c: (c["item_id"], candidate_model(c)))
top_k_retriever = index.index_from_dataset(candidates  = candidates)

where candidate_ds contains all the candidate records (including the new ones that the model wasn’t trained on). It maps item IDs to the full candidate records that include item features.

Then you can retrieve recommendations for a user:

logits, items = top_k_retriever(query, k)

Thank you!!!. I see… Since you can save both models (query and candidate), it is possible to update the item catalogue (candidate _ds) without training again with new items.