ホームページ  >  記事  >  データベース  >  MySQL を使用して推奨アルゴリズムを迅速に実装する方法について話しましょう

MySQL を使用して推奨アルゴリズムを迅速に実装する方法について話しましょう

藏色散人
藏色散人転載
2023-01-04 16:14:331759ブラウズ

この記事は、MySQL に関する関連知識を提供します。主に、推奨アルゴリズムとは何か、このアルゴリズムが解決に役立つ問題、および 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');

の意味: ユーザー 1 は A、B、C が好き、ユーザー 2 は A、B、C、D が好き、ユーザー 3 は X、Y 、C が好き、Z、ユーザー 4 は W、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

であり、それに基づいていることがわかります。 on 類似度順に並べ替え、上位 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 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事はlearnku.comで複製されています。侵害がある場合は、admin@php.cn までご連絡ください。