――J'ai souvent vu des recommandations dans la boutique en ligne.
→ Des recommandations ont été utilisées récemment → C'est intéressant, donc je veux savoir
--Une fonction qui recommande des films qui semblent intéressants pour les utilisateurs
--Très lié → Score élevé
def recommend_movies # recommend movies to a user
# find all other users, equivalent to .where(‘id != ?’, self.id)
other_users = self.class.all.where.not(id: self.id)
# instantiate a new hash, set default value for any keys to 0
recommended = Hash.new(0)
# for each user of all other users
other_users.each do |user|
# find the movies this user and another user both liked
common_movies = user.movies & self.movies
# calculate the weight (recommendation rating)
weight = common_movies.size.to_f / user.movies.size
# add the extra movies the other user liked
common_movie_ids = common_movies.pluck(:id)
user.movies.each do |movie|
next if common_movie_ids.include? movie.id
# put the movie along with the cumulative weight into hash
recommended[movie] += weight
end
end
# sort by weight in descending order
sorted_recommended = recommended.sort_by { |key, value| value }.reverse
end
https://github.com/phamthanhthuongbk/recommendation-rails
https://github.com/phamthanhthuongbk/recommendation-rails
«L'algorithme est facile à comprendre, et j'ai vu l'effet. ――J'ai une image du mouvement recommandé. ――Pour la notation, vous devez regarder toutes les bases de données, alors qu'en est-il d'un gros système?
Recommended Posts