>  기사  >  데이터 베이스  >  MySQL을 사용하여 추천 알고리즘을 빠르게 구현하는 방법에 대해 이야기해 보겠습니다.

MySQL을 사용하여 추천 알고리즘을 빠르게 구현하는 방법에 대해 이야기해 보겠습니다.

藏色散人
藏色散人앞으로
2023-01-04 16:14:331707검색

이 기사에서는 추천 알고리즘이 무엇인지, 이 알고리즘이 해결하는 데 도움이 되는 문제는 무엇인지, MySQL을 사용하여 간단한 추천 알고리즘을 구현하는 방법을 주로 소개합니다. 그것은 모두에게 도움이 됩니다.

MySQL을 사용하여 추천 알고리즘을 빠르게 구현하는 방법에 대해 이야기해 보겠습니다.

MySQL을 사용하여 간단한 추천 알고리즘 구현

추천 알고리즘은 자주 접하는 기술입니다. 기본적으로 해결된 문제는 다음과 같습니다. 만약 당신이 책 A를 좋아한다면 아마도 책 B도 좋아할 것입니다.

이 기사에서는 MySQL을 사용하여 데이터 통계 기반의 간단한 추천 알고리즘을 분해하고 구현합니다.

먼저 user_id가 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)
);

4개의 테스트 데이터를 삽입하세요

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');

의미: User 1은 A, B, C를 좋아하고, User 2는 A, B, C, D를 좋아하고, User 3은 X, Y, C, Z를 좋아하고, User 4는 좋아합니다. 승, Q, C, Z.

추천 도서를 계산하기 위해 사용자 1을 예로 들면, 사용자 1과 다른 사용자 간의 유사성을 계산한 다음 유사성에 따라 정렬해야 합니다.

유사도 데이터 테이블 지우기

DELETE FROM user_likes_similar WHERE user_id = 1;

사용자 유사도 데이터 테이블 계산

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 ;

검색된 유사도 결과가

user_id, liked_user_id, rank
1, 2, 2
1, 3, 1
1, 4, 1

임을 알 수 있습니다. 그런 다음 유사도에 따라 정렬하여 상위 10권의 추천 도서를 가져옵니다.

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;

【추천 학습: mysql 비디오 튜토리얼

위 내용은 MySQL을 사용하여 추천 알고리즘을 빠르게 구현하는 방법에 대해 이야기해 보겠습니다.의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
이 기사는 learnku.com에서 복제됩니다. 침해가 있는 경우 admin@php.cn으로 문의하시기 바랍니다. 삭제