- Similar user : A user that matches all given user information (gender, age, occupation).
- Secondary similar user: A user that matches given user information only partially.
- Match count : Number of matching properties of secondary similar user.
- Find all similar users according to the given user information. If there's too many of them, sample up to 100 users.
- Calculate average of all ratings for each movie rated by similar users.
- If the number of movie rated by similar user is larger or equal than
N
, return topN
movies. - Otherwise, repeat finding secondary similar users by decrementing match count.
- Append the new rankings obtained from secondary similar users to the ranking list, until the list has
N
movies.
If one person watched a movie, he/she has a relatively high possibility to have watched another movie similar to it and reviewed it. Thus, in a large scale, filtering it by matching number of genres and average ratings from those users will give movies recommendable and similar to the given one.
- Find the movie by given title.
- Find all users who rated the movie. If there's too many of them, sample up to 100 users.
- Find all ratings from users of step 2.
- Group all movies that had ratings in step 3, in decreasing order of number of matching genres.
- Calculate average per movie from all ratings in step 3.
- Return top
limit
movies, in more significant order the matching genres and in less significant order the average rating.