Redis と Python を使用したレコメンデーション システムの構築: パーソナライズされたレコメンデーションを提供する方法
インターネット時代において、レコメンデーション システムは主要なプラットフォームの中核機能の 1 つになりました。ユーザーの行動と個人の好みを分析することにより、推奨システムはユーザーにパーソナライズされたコンテンツの推奨を提供できます。この記事では、Redis と Python を使用して簡単なレコメンデーション システムを構築する方法を紹介し、関連するコード例を示します。
Redis は、オープンソースの高性能 Key-Value ストレージ システムです。文字列、リスト、セット、順序付きセットなどのさまざまなデータ構造をサポートし、さまざまなシナリオに適した豊富なコマンドと関数を提供します。レコメンデーション システムでは、Redis を使用してユーザーの行動データとレコメンデーションの結果を保存し、データのクエリと計算を迅速に実行できます。
レコメンデーション システムの最初のステップは、ユーザー行動データを収集して記録することです。 Redis の順序付きセット データ構造を使用して、ユーザー行動記録モジュールを実装できます。以下は簡単な例です:
import redis # 连接Redis r = redis.Redis(host='localhost', port=6379, db=0) # 记录用户行为 def record_user_behavior(user_id, item_id): r.zincrby('user_behavior', 1, f'{user_id}:{item_id}') # 获取用户行为排行榜 def get_user_behavior_ranking(): return r.zrevrange('user_behavior', 0, -1, withscores=True)
上の例では、zincrby
コマンドを使用して、ユーザーの行動を user_behavior
順序付きコレクションに記録し、ユーザーID と項目 ID は、順序付きセットのメンバーとして識別されます。 zincrby
コマンドは、順序付きセットの指定されたメンバーに対して自動インクリメント操作を実行できるため、さまざまな項目に対するユーザー アクションの数をカウントするのに便利です。
推奨システムの中核は、推奨モデルと推奨アルゴリズムです。この記事では、協調フィルタリング アルゴリズムを使用して、ユーザーベースの推奨システムを実装します。以下は簡単な例です:
# 构建协同过滤推荐模型 def build_collaborative_filtering_model(): # 获取用户行为数据 behavior_data = get_user_behavior_ranking() # 构建用户相似度矩阵 similarity_matrix = {} for i in range(len(behavior_data)): user1, behavior1 = behavior_data[i] user1 = user1.split(':')[0] for j in range(i+1, len(behavior_data)): user2, behavior2 = behavior_data[j] user2 = user2.split(':')[0] # 计算用户相似度(这里简化为用户行为次数的比较) similarity = abs(int(behavior1) - int(behavior2)) # 更新用户相似度矩阵 if user1 not in similarity_matrix: similarity_matrix[user1] = {} similarity_matrix[user1][user2] = similarity if user2 not in similarity_matrix: similarity_matrix[user2] = {} similarity_matrix[user2][user1] = similarity return similarity_matrix # 根据用户行为和相似度矩阵进行推荐 def recommend_items(user_id, similarity_matrix): user_similarities = similarity_matrix[user_id] items = {} for user, similarity in user_similarities.items(): for item in r.zscan_iter(f'user_behavior', match=f'{user}:*'): item_id = item.decode().split(':')[1] items[item_id] = items.get(item_id, 0) + similarity sorted_items = sorted(items.items(), key=lambda x: x[1], reverse=True) return [item[0] for item in sorted_items[:5]]
上の例では、build_collaborative_filtering_model
関数を通じて協調フィルタリング推奨モデルを構築し、ユーザー間の類似性を計算し、recommend_items# を使用します。 ## この関数は類似性行列に基づいて推奨事項を作成します。これにより、類似度の計算や推奨結果の取得が簡素化され、実際のプロジェクトの具体的なニーズに応じて最適化および改善することができます。
# 记录用户行为 record_user_behavior(1, 'item1') record_user_behavior(1, 'item2') record_user_behavior(2, 'item2') record_user_behavior(2, 'item3') # 构建推荐模型 similarity_matrix = build_collaborative_filtering_model() # 获取推荐结果 recommendations = recommend_items(1, similarity_matrix) print(recommendations)
以上がRedis と Python を使用したレコメンデーション システムの構築: パーソナライズされたレコメンデーションを提供する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。