All widely used Recommender Systems can be roughly put into two sections:
- Content filtering
- Collaborative filtering
Content-based filtering relies upon the similarities between the items themselves (i.e. two movies or songs or purchased items etc.)
If we see some of the above movies, we can generate a list of qualities and features of those movies. We can have features like:
- Animated: animated movies
- Marvel: Marvel movies
- Super Villain: do those movies have a super villain?
- Bechdel Test: do they pass the Bechdel test?
for content-based filtering, we will consider two columns in the table and see how similar they are. If I went to see Inside Out, I might ask what other movies I would be interested in seeing?
We can find this by comparing the features of inside out with other movies and see how many of these features match. Movies with the highest matching features will be selected.
The content-based filtering systems rely just on the properties of the movies. So these can be built just by knowing the products’ content. All content-based filtering systems have a basic structure they rely upon the item in question and nothing about the user preferences.
Collaborative filtering relies upon the qualities of the object and on how the different users respond to these same objects.
Let’s consider the previous movies and add a bunch of users and their preferences on watching those movies. Now based on the customer preference for a new user we can predict the probability of liking the other movies if the user has watched some movies. So, If a user liked Inside Out which other movies the user would want to see based on what similar people liked?
Going through the user list we can find other users who also liked Inside Out and matched the user’s preferences.
For collaborative filtering, the data we are using is not about the movie itself but the preferences of other users. Quality of data is essential to start making these recommendations. Collecting more and more data we will bring more accurate recommendations.