Maison  >  Article  >  base de données  >  Parlons de la façon d'utiliser MySQL pour implémenter rapidement un algorithme de recommandation

Parlons de la façon d'utiliser MySQL pour implémenter rapidement un algorithme de recommandation

藏色散人
藏色散人avant
2023-01-04 16:14:331759parcourir

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.

Parlons de la façon d'utiliser MySQL pour implémenter rapidement un algorithme de recommandation

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!

Déclaration:
Cet article est reproduit dans:. en cas de violation, veuillez contacter admin@php.cn Supprimer