The client-side recommender system consists of two parts:
- the recommender model
- the recommender engine
The recommender model is non-personalised data that describes the relationship between all the TV and radio programmes available from iPlayer. We rebuild this model every hour to accommodate new programmes as they become available and remove older content. The recommender engine contains code that makes recommendations using data from the model and user feedback, such as likes and dislikes, expressed via the user interface or past viewing choices recorded in persistent local storage.
In the current implementation we've used a classical weighted K-Nearest Neighbor (KNN) algorithm which can easily accommodate positive and negative user feedback. The recommender model in this algorithm is a sparse correlation matrix which describes the similarity between each programme and its nearest neighbors. The similarity can be based either on the number of common viewers (collaborative filtering) or the number of common attributes (metadata-based filtering). Both options give reasonable personalised recommendations after the user has provided four or five programme preferences or ratings.
We hope to use the client-side recommender in some public experiments later in the year so watch this space for further news.