[RUBY] J'ai fait une simple fonction de recommandation.

Fonction de recommandation Raisons de s'inquiéter

――J'ai souvent vu des recommandations dans la boutique en ligne. image.png

→ Des recommandations ont été utilisées récemment → C'est intéressant, donc je veux savoir


Articles Liés


Faites d'abord une recommandation de film

--Une fonction qui recommande des films qui semblent intéressants pour les utilisateurs


Algorithme (1)

image.png


Algorithme (2)

image.png


Algorithme (3) -Scoring

--Très lié → Score élevé


J'ai écrit la notation dans Rails.

    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

Affichage dans les rails

https://github.com/phamthanhthuongbk/recommendation-rails

image.png


Tout d'abord, faites la recommandation d'un ami.


Le résultat est

https://github.com/phamthanhthuongbk/recommendation-rails

image.png


Impressions

«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

J'ai fait une simple fonction de recommandation.
[Ruby] J'ai créé un simple client Ping
[Rails] J'ai créé une fonction de brouillon en utilisant enum
J'ai créé une application de chat.
J'ai fait un jeu de problèmes de calcul simple en Java
J'ai créé une application shopify @java
J'ai créé une interface graphique avec Swing
J'ai créé une application correspondante (application Android)
J'ai créé un système d'exemple MVC simple à l'aide de Spring Boot
J'ai créé un outil de génération package.xml.
[Android] J'ai créé une application de podomètre.
[Rails] J'ai créé une mini-application de calendrier simple avec des spécifications personnalisées.
J'ai créé une fonction de réponse pour l'extension Rails Tutorial (Partie 1)
J'ai créé un formulaire de recherche simple avec Spring Boot + GitHub Search API.
J'ai créé une fonction de réponse pour l'extension Rails Tutorial (Partie 5):
[Retrait des rails] Créez une fonction de retrait simple avec des rails
J'ai fait une mort risquée avec Ruby
J'ai créé un plug-in pour IntelliJ IDEA
J'ai créé une application Janken avec kotlin
J'ai créé une application de calculatrice sur Android
J'ai créé un nouvel outil de déploiement Java
J'ai créé une application Janken avec Android
J'ai créé StringUtils.isBlank
J'ai créé une fonction de réponse pour l'extension Rails Tutorial (Partie 2): Changer de modèle
J'ai créé un outil Diff pour les fichiers Java
J'ai créé un programme de jugement des nombres premiers en Java
04. J'ai fait un frontal avec SpringBoot + Thymeleaf
J'ai fait de l'art de la mosaïque avec des images Pokemon
java j'ai essayé de casser un simple bloc
J'ai créé un jeu Janken en Java (CLI)
J'ai créé une application de visualisation qui affiche le PDF
J'ai créé un conteneur Docker pour exécuter Maven
J'ai créé une bibliothèque d'extension Ruby en C
J'ai créé un robot LINE avec Rails + heroku
J'ai fait un portfolio avec Ruby On Rails
J'ai créé une bibliothèque de graphiques simple pour les applications de smartphone [MP Android Chart Kai]
J'ai créé une image Docker pour la version japonaise de SDAPS
J'ai créé un outil de vérification pour le module de version
J'ai fait une méthode pour demander la prime vendredi
[Ruby] J'ai fait un robot avec de l'anémone et du nokogiri.
J'ai fait un chat de dessin "chat de peinture 8 bits" avec WebAssembly
J'ai créé un serveur et un client Restful au printemps.
J'ai créé une bibliothèque qui fonctionne comme un onglet dans Safari !!
J'ai créé une bibliothèque pour afficher des tutoriels sur Android.
J'ai créé un Wrapper qui appelle KNP depuis Java
J'ai créé une fonction pour enregistrer des images avec l'API dans Spring Framework. Partie 1 (édition API)
Je souhaite ajouter une fonction de suppression à la fonction de commentaire
J'ai créé une fonction de réponse pour l'extension Rails Tutorial (Partie 4): une fonction qui rend l'utilisateur unique
J'ai créé une fonction pour enregistrer des images avec l'API dans Spring Framework. Partie 2 (édition client)
J'ai essayé de faire une version japonaise de la transmission automatique du courrier de Rails / devise
J'ai créé le côté serveur du jeu de cartes en ligne ③
J'ai créé un environnement de développement avec rails6 + docker + postgreSQL + Materialise.
Je souhaite implémenter une fonction d'édition des informations produit ~ part1 ~
J'ai créé un plug-in qui exécute jextract avec des tâches Gradle
[Débutant] J'ai créé un programme pour vendre des gâteaux en Java
J'ai créé le côté serveur du jeu de cartes en ligne ⑥