>  기사  >  데이터 베이스  >  Redis와 Python을 사용하여 추천 시스템 구축: 개인화된 추천을 제공하는 방법

Redis와 Python을 사용하여 추천 시스템 구축: 개인화된 추천을 제공하는 방법

王林
王林원래의
2023-07-29 15:33:331599검색

Redis와 Python을 활용한 추천 시스템 구축: 개인화된 추천을 제공하는 방법

인터넷 시대에 추천 시스템은 주요 플랫폼의 핵심 기능 중 하나가 되었습니다. 추천 시스템은 사용자 행동과 개인 선호도를 분석하여 사용자에게 개인화된 콘텐츠 추천을 제공할 수 있습니다. 이 문서에서는 Redis와 Python을 사용하여 간단한 추천 시스템을 구축하는 방법을 소개하고 관련 코드 예제를 제공합니다.

  1. Redis 소개

Redis는 오픈 소스, 고성능 키-값 스토리지 시스템입니다. 문자열, 목록, 집합, 순서 집합 등 다양한 데이터 구조를 지원하며, 다양한 시나리오에 적합한 풍부한 명령과 기능을 제공합니다. 추천 시스템에서 Redis를 사용하면 사용자 행동 데이터와 추천 결과를 저장하고 데이터 쿼리 및 계산을 신속하게 수행할 수 있습니다.

  1. 사용자 행동 기록 모듈 구축

추천 시스템의 첫 번째 단계는 사용자 행동 데이터를 수집하고 기록하는 것입니다. 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 명령은 순서가 지정된 세트의 지정된 구성원에 대해 자동 증가 작업을 수행할 수 있으므로 다양한 항목에 대한 사용자 작업 수를 더 쉽게 계산할 수 있습니다. zincrby命令将用户的行为记录在user_behavior有序集合中,并使用用户ID和物品ID作为有序集合的成员进行标识。zincrby命令可以对有序集合的指定成员进行自增操作,方便我们统计用户在不同物品上的行为次数。

  1. 构建推荐模型并计算推荐结果

推荐系统的核心是推荐模型和推荐算法。在本文中,我们将使用协同过滤算法来实现一个基于用户的推荐系统。以下是一个简单示例:

# 构建协同过滤推荐模型
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

    추천 모델 구축 및 추천 결과 계산
    1. 추천 시스템의 핵심은 추천 모델과 추천 알고리즘입니다. 이번 글에서는 협업 필터링 알고리즘을 사용해 사용자 기반 추천 시스템을 구현해보겠습니다. 다음은 간단한 예입니다.
    # 记录用户行为
    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)

    위 예에서는 build_collaborative_filtering_model 함수를 통해 협업 필터링 추천 모델을 구축하고 사용자 간 유사도를 계산한 후 recommend_items를 사용합니다. > 추천을 위한 유사성 매트릭스를 기반으로 하는 함수입니다. 이는 유사성 계산 및 추천 결과 획득을 단순화하고 실제 프로젝트의 특정 요구에 따라 최적화 및 개선될 수 있습니다.

    호출 예시🎜🎜rrreee🎜호출 예시에서는 먼저 두 사용자의 행동을 기록한 후 추천 모델을 구축하고 사용자 1의 추천 결과를 얻었습니다. 출력은 사용자 1이 관심을 가질 수 있는 항목 목록을 반환합니다. 🎜🎜Redis와 Python의 결합을 통해 간단한 개인화 추천 시스템을 빠르게 구축할 수 있습니다. 물론 실제 추천 시스템에는 더 복잡한 알고리즘과 모델이 포함되며, 이 기사에서는 참조용 기본 프레임워크와 예시만 제공합니다. 독자는 실제 필요에 따라 추가 개선 및 확장을 수행할 수 있습니다. 🎜

위 내용은 Redis와 Python을 사용하여 추천 시스템 구축: 개인화된 추천을 제공하는 방법의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.