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.

Feedback typeExampleRange
ExplicitMovie ratingNegative or positive
ImplicitMovie watch timeAlways positive, more is more

Neural networks for recommendations

Recommendation methodPredictorProblemsExampleBest when
Content-based filteringSimilar to user’s bought or liked itemsNot expanding user’s interestsOnline shopDetailed product information
Collaborative-based filteringSimilar items and similar usersYoputube video recommendationsLots of data
Knowledge based filteringExplicit user attributes and rulesNot so intelligentFiltering apartments in AirBnBLittle 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 ratingsNumber of current user ratingsRecommendation method
>100<10Collaborative-based from similar users
>100>10Collaborative-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

Recommendation context

Context Aware Recommendation Systems (CARS) utilize a context dimension on top of the user and item/product:

  • Time
  • Location
  • Mood

Content-based filtering

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.

Knowledge-based filtering

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.