【推荐系统】第二章 利用用户行为数据

本文深入探讨了利用用户行为数据构建推荐系统的方法,包括用户行为分析,如用户活跃度与商品流行度的长尾分布。介绍了基于邻域的协同过滤算法,如基于用户的协同过滤(UserCF)和基于物品的协同过滤(ItemCF),以及UserCF的改进算法User-IIF。此外,还讨论了隐语义模型LFM及其优缺点。最后,提到了基于图的模型(PersonalRank)在推荐系统中的应用。
摘要由CSDN通过智能技术生成

2.1 用户行为数据简介

用户行为在个性化推荐系统种一般分为两种,显性反馈和隐形反馈。显示反馈包含明确的用户喜好行为,如点赞和讨厌等。隐形反馈是不明确的,如用户浏览记录等。
在这里插入图片描述

2.2 用户行为分析

2.2.1 用户活跃度与商品流行度——长尾分布

大部分用户只关注到热门物品,非热门物品无人问津。且用户越活跃越关心冷门物品。

仅仅根据用户行为数据设计的推荐算法一般称为协同过滤算法。可以分为基于邻域的方法,隐语义方法,基于图的随机游走算法等。

2.3 实验设计和算法测评

评价指标

  1. 准确率与召回率
    在这里插入图片描述
    在这里插入图片描述

R ( u ) R(u) R(u)表示对用户u推荐的N个物品。而 T ( u ) T(u) T(u)表示u确实喜欢的物品。
准确率(precision)反映了,预测的东西中真实被喜欢的占的比例。
召回率(recall)反映了,喜欢的东西被准确预测的比例。

  1. 覆盖率——反应算法挖掘长尾问题的能力
    在这里插入图片描述
  2. 新颖度——平均流行度进行度量
    某个物品被cue到的频率为流行度,一般会取对数,保证流行度的平均值更加稳定。

基于邻域的算法

基于用户的协同过滤

基本思想是,当用户A需要个性化推荐时,可以找到与该用户兴趣接近的用户,然后把那些用户喜欢的但是A用户没有听说过的物品推荐给A。

主要包括两个步骤,1.找到相似兴趣的用户,2.找到这个集合的用户喜欢的,且目标用户没有听说过的物品推荐给目标用户。

兴趣相似度的度量一般采用余弦相似度。
在这里插入图片描述

在具体的代码实现上,一般采用首先建立物品倒排表的方法。假设用户u和用户v都同属于倒排表中K个物品对应的用户列表,有C[u][v] = K。最终计算处用户的兴趣相似性矩阵W

def UserSimilarity(train, K, N):
    '''
    :params: train, 训练数据集
    :params: K, 超参数,设置取TopK相似用户数目
    :params: N, 超参数,设置取TopN推荐物品数目
    :return: GetRecommendation, 推荐接口函数
    '''
    # 计算item->user的倒排索引
    item_users = {
   }
    for user, items in train.items():
        for i in items.keys():
            if i not in item_users:
                item_users[i] = set()
            item_users[i].add(user)

    # 计算用户间的互动次数
    sim = {
   }
    num = {
   }
    W = {
   }
    for i, users in item_users.items
  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值