Créer un système de recommandation à l'aide de Redis et Python : comment fournir des recommandations personnalisées
À l'ère d'Internet, les systèmes de recommandation sont devenus l'une des fonctions essentielles des principales plateformes. En analysant le comportement des utilisateurs et leurs préférences personnelles, les systèmes de recommandation peuvent fournir aux utilisateurs des recommandations de contenu personnalisées. Cet article expliquera comment utiliser Redis et Python pour créer un système de recommandation simple et fournira des exemples de code pertinents.
Redis est un système de stockage clé-valeur open source et hautes performances. Il prend en charge diverses structures de données, telles que des chaînes, des listes, des ensembles, des ensembles ordonnés, etc., et fournit une multitude de commandes et de fonctions adaptées à divers scénarios. Dans les systèmes de recommandation, Redis peut être utilisé pour stocker les données sur le comportement des utilisateurs et les résultats des recommandations, et effectuer rapidement des requêtes et des calculs de données.
La première étape du système de recommandation consiste à collecter et à enregistrer les données sur le comportement des utilisateurs. Nous pouvons utiliser la structure de données d'ensemble ordonné de Redis pour implémenter un module d'enregistrement du comportement des utilisateurs. Voici un exemple simple :
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)
Dans l'exemple ci-dessus, nous enregistrons le comportement de l'utilisateur dans la collection ordonnée user_behavior
via la commande zincrby
, et utilisons l'ID utilisateur et L'ID d'article identifie en tant que membre d'un ensemble ordonné. La commande zincrby
peut effectuer une opération d'auto-incrémentation sur le membre spécifié de l'ensemble ordonné, ce qui nous permet de compter facilement le nombre d'actions de l'utilisateur sur différents éléments. 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)
Dans l'exemple ci-dessus, nous construisons un modèle de recommandation de filtrage collaboratif via la fonction build_collaborative_filtering_model
, calculons la similarité entre les utilisateurs et utilisons le recommend_items
fonction basée sur une matrice de similarité pour recommandation. Cela simplifie le calcul de similarité et l'acquisition des résultats de recommandation, et peut être optimisé et amélioré en fonction des besoins spécifiques des projets réels.
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!