Recommendation systems are useful to personalize experience and find relevant items among huge catalogs.
Recommendations have became signigficant sub topic of machine learning.
Here are some concepts recommended by Google.
Explicit vs implicit feedback for recommendations
In Google terms the feedback can be implicit or explicit.
|Explicit||Movie rating||Negative or positive|
|Implicit||Movie watch time||Always positive, more is more|
Neural networks for recommendations
|Recommendation method||Predictor||Problems||Example||Best when|
|Content-based filtering||Similar to user’s bought or liked items||Not expanding user’s interests||Online shop||Detailed product information|
|Collaborative-based filtering||Similar items and similar users||Yoputube video recommendations||Lots of data|
|Knowledge based filtering||Explicit user attributes and rules||Not so intelligent||Filtering apartments in AirBnB||Little amount of coarce user data|
Creating a user vector
Suppose a user has seen 5 movies and has rated them at scale of 1-10. It would be possible to create a user vector from the movies count per category weighted by the ratings. In the same manner we can create movie vectors based on categories they belong to.
Now it would be possible to calculate the similarity between the user vector and the movie vector. This is the recommendation score.
As a summary, both the user and the recommended items should have the same feature space.
Cold start problem for recommendations
Cold start problem is well-known problem for recommendation systems.
The approach where method depends on the available data is known as a hybrid recommendation system. Here is an example of such situation:
|Total number of user ratings||Number of current user ratings||Recommendation method|
|>100||<10||Collaborative-based from similar users|
|>100||>10||Collaborative-based from the current user|
Some other strategies for collaborative filtering cold start problem:
- Average from the other users or items
- Add user info
- Add item info
- Use other user-item interaction data
Context Aware Recommendation Systems (CARS) utilize a context dimension on top of the user and item/product:
Uses item attributes to recommend new items that are similar to previously liked or purchased.
In many cases a better name would be product-based filtering.
Recommend products to users utilizing only attributes about the products. Relatively detailed production information is preferred. To avoid starting from empty table, it would be possible to ask preferences from the users.
A known problem is that recommendation systems might have difficulties to expand beyond known user interests.
Collaborative-based filtering model
Recommend items that similar users liked. The name of the method indicates that other users “collaborate” to make recommendations for you.
The idea is that similar users like similar items. User interaction features are important for collaborative filters.
Utilizes data from all users so it does not require much data from the users itself. An example use case would be a recommendation algorithm in a video streaming service.
Algorithms for collaborative filtering
Matrix factorization is a class of collaborative filtering algorithms used in recommender systems. The denser the user-item matrix, the better this approach performs.
Many alogrithms can optimize the matrix factorization.
Stochastic Gradient Descent might be slow and struggle with missing values. Singular value decomposition (SVD) implies missing values to zero which is also problematic.
ALS (Altering Least Squares) ignores the missing values. ALS is scalable though, as it can be ran parallely.
WALS (Weighted Altering Least Squares) uses weights instead of zeros. WALS is recommended by Google.
Recommends items that the user explicitly requests.
Suitable for tasks where purchase happens rarely (camera, car). Requires explicit knowledge about the buyer.
Other methods might perform poorly due to low number of ratings.
Reinforcement learning for recommendations
Reinforcement learning is great option for recommendation systems among the other applications.