In this series of articles, I will cover the evolution of personalized search and recommender systems. Making search and recommendations adapt to the user and the context has been the biggest driver for growth in many consumer tech industries. For context, "search" means the results you get on entering a search term and "recommendations" here refers to the results you get on the home page without searching anything.
Initially recommendations were not personalized. Users would be presented with top 10 items or top 10 trending items. There could be recommendations that are mildly personalized like, top 10 items in the user's country.
From a product perspective, adding personalization has increased user activation, engagement and retention. Perhaps this is because personalization has allowed recommender systems to understand the different journeys users could be seeking and cater to them and also diversify between these intents.
One of the earliest efforts towards personalized recommendations were on the lines of:
Item-item similarity (I2I): If a user A comes to the service, it recommends items to A which are similar to what A has liked earlier. (See "Taking user feedback..." below to understand what like refers to.)
User-user similarity (U2U): If a user A comes to the service, it recommends items to A which are liked by other users who are similar to A.
Taking user feedback to improve recommendations
Recommender systems have used implicit and explicit feedback to both measure recommendation quality and also to improve recommendations in subsequent sessions. The verb "like" above has been used as a general placeholder for a user action that conveys user satisfaction. Depending on the platform, the exact nature of a positive interaction can vary and also be multi-faceted. For instance in a podcast app, while listening to the episode till the end is a positive interaction, listening to 10 minutes of it may also be a positive interaction, subscribing to the show/channel might also be a modality of positive interaction, and even tapping to see details of the episode might indicate that we are striking a chord with the user's need. Apart from these implicit cues, the app may have explicit like and dislike buttons as well. Also, recommender systems have learned immensely from item-level surveys, both in-app and external.
I2I
Some examples of item-item similarity are:
Co-watched video: recommending video v2 if the user being served, A, has liked v1 and other users who have liked v1 have also liked v2. Hence similarity of v1 to v2 is based on Prob(liking v2 | liking v1). Note that this probability will seem naturally higher if v2 is a globally popular item. For instance if we are trying to find the list of movies watched after watching "Shawshank Redemption" and we find that for a number of users, who have watched Shawshank Redemption they have also watched "Star Wars", we should probably discount this by the fact that a lot of users watched Star Wars regardless of whether they watched "Shawshank Redemption" earlier. For this, one could also use a lift model would demote this conditional probability Prob(liking v2 | liking v1) by the global popularity of v2, i.e. Prob(liking v2). Demoting by the Sqrt(Prob(liking v2)) typically woks better than tempting by Prob(liking v2), otherwise we might recommend too niche items. Hence a lift score of v2, given v1 has been liked, could be Num(users liked v2 after liking v1) / Sqrt(Num(users liked v2)).
Topic-based: recommending video v2 if it is a top video in the topic t where t is the topic that has the largest overlap with the videos A has previously watched. Hence, Score(v2) = Sum over topics of A ( Score(v2 for topic) * Score(topic for A) ). Like the lift modeling discussion above, this could be adjusted to Sum over topics of A ( Score(v2 for topic) * Score(topic for A) / Sqrt(Score(topic over all users) ))
U2U
Some examples of U2U models are:
Local: Recommending locally popular items to a user. This might appear to be more about user-location similarity. However, we can consider the closeness of the location of two users as a measure of similarity. If so, recommending locally popular items is same as ranking with the score Score(user A, item) = Sum over users {v} who are close by ( Score(v, item) * Closeness(A, v) ). Here, Closeness of two users (A, B) could simply be 1 if they are in the same zip code / city / state and 0 otherwise.
Inferring an influencer set for each user: For each user A, we could find a set of users {v} such that correlation of the liked item vectors of A and v are high, i.e. A and v exhibit affinity towards same items. We could also make this directional, that {v} is the set of users with whom A has the highest causal correlation with.
Clustering-based: Recommending items to a user which are popular with the cluster of users this user is closest to. This clustering of users could be based on items liked (in this domain) or based on patterns from another domain (see item 4 below).
Transfer-learning of U2U from another domain: Suppose we have embeddings describing a user (User embeddings will be covered in the fourth post in this series. However, DNN for You Tube recs is a wonderful, seminal work covering user embeddings in recommendations.) built based on recommendations from another domain, for example from a video recommendation service. Now suppose we are building a recommendation service in a new domain, say podcast recommendations. One could (a) compute clusters of all the video user embeddings (b) for each user compute the nearest k clusters for the user and a probability of belonging to that cluster based on the distance of the embedding of the user and the cluster centroid (c) compute a score of an item for the user being served, say A, by summing over the clusters of the user ( ClusterScore(A, cluster) * ItemScore( cluster, item) ) where the score of the item for a cluster could be computed by a lift model.
U2U vs I2I
In general item-item similarity based recommendations performs better, perhaps because users are more multifaceted than items. I2I is particularly well suited to multiple visits of the same user, since they will probably have enough recent interaction history to infer their needs from.
U2U is weaker but there are cases where it can help more. For instance, the transfer learning approach U2U is often a great way of providing a delightful experience on first visit of a user. It provides a great initial set of recommendations to start getting the feedback of the user on.
This was originally posted on Linkedin.
Disclaimer: These are my personal opinions only. Any assumptions, opinions stated here are mine and not representative of my current or any prior employer(s).
Minor Typo:
In the line, "User-user similarity (U2U): If a user A comes to the service, it recommends items to a" could you please capitalise the last 'a'?