Cet article vous apporte des connaissances pertinentes sur MySQL. Il présente principalement ce qu'est un algorithme de recommandation, quels problèmes cet algorithme peut nous aider à résoudre et comment utiliser MySQL pour implémenter un algorithme de recommandation simple : jetons un coup d'œil, j'espère. ça aide tout le monde.
Utilisez MySQL pour implémenter un algorithme de recommandation simple
L'algorithme de recommandation est une technologie souvent rencontrée. En gros, le problème résolu est le suivant : si vous aimez le livre A, alors vous aimerez probablement le livre B.
Dans cet article, nous utilisons MySQL et démontons et implémentons un algorithme de recommandation simple basé sur des statistiques de données.
Tout d'abord, créez un tableau de données des livres que l'utilisateur aime, qui représente user_id aime book_id.
CREATE TABLE user_likes ( user_id INT NOT NULL, book_id VARCHAR(10) NOT NULL, PRIMARY KEY (user_id,book_id), UNIQUE KEY book_id (book_id, user_id) ); CREATE TABLE user_likes_similar ( user_id INT NOT NULL, liked_user_id INT NOT NULL, rank INT NOT NULL, KEY book_id (user_id, liked_user_id) );
Insérez 4 données de test
INSERT INTO user_likes VALUES (1, 'A'), (1, 'B'), (1, 'C'); INSERT INTO user_likes VALUES (2, 'A'), (2, 'B'), (2, 'C'), (2,'D'); INSERT INTO user_likes VALUES (3, 'X'), (3, 'Y'), (3, 'C'), (3,'Z'); INSERT INTO user_likes VALUES (4, 'W'), (4, 'Q'), (4, 'C'), (4,'Z');
La signification est la suivante : l'utilisateur 1 aime A, B, C, l'utilisateur 2 aime A, B, C, D, l'utilisateur 3 aime X, Y, C, Z, l'utilisateur 4 aime W, Q, C, Z.
En prenant l'utilisateur 1 comme exemple pour calculer les livres recommandés, nous devons calculer la similarité entre l'utilisateur 1 et les autres utilisateurs, puis les trier en fonction de la similarité.
Effacez le tableau de données de similarité
DELETE FROM user_likes_similar WHERE user_id = 1;
Calculez le tableau de données de similarité utilisateur
INSERT INTO user_likes_similar SELECT 1 AS user_id, similar.user_id AS liked_user_id, COUNT(*) AS rank FROM user_likes target JOIN user_likes similar ON target.book_id= similar.book_id AND target.user_id != similar.user_id WHERE target.user_id = 1 GROUP BY similar.user_id ;
Vous pouvez voir que le résultat de similarité trouvé est
user_id, liked_user_id, rank 1, 2, 2 1, 3, 1 1, 4, 1
Triez ensuite en fonction de la similarité et prenez le top 10, qui sont les livres recommandés.
SELECT similar.book_id, SUM(user_likes_similar.rank) AS total_rank FROM user_likes_similar JOIN user_likes similar ON user_likes_similar.liked_user_id = similar.user_id LEFT JOIN user_likes target ON target.user_id = 1 AND target.book_id = similar.book_id WHERE user_likes_similar.user_id = 1 AND target.book_id IS NULL GROUP BY similar.book_id ORDER BY total_rank desc LIMIT 10;
【Apprentissage recommandé : tutoriel vidéo mysql】
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!