读书笔记:推荐系统实践-第二章-利用用户行为数据

1、用户行为数据简介

用户行为在个性化推荐系统一般会分为两种:显性反馈行为和隐性反馈行为。
在这里插入图片描述
在这里插入图片描述
如何用统一的方式表示这些所有的行为?
在这里插入图片描述
不同行为的不同数据集

  • 无上下文信息的隐性反馈数据集 每一条行为记录仅仅包含用户ID和物品ID。
  • 无上下文信息的显性反馈数据集 每一条记录包含用户ID、物品ID和用户对物品的评分。
  • 有上下文信息的隐性反馈数据集 每一条记录包含用户ID、物品ID和用户对物品产生行。
  • 有上下文信息的显性反馈数据集 每一条记录包含用户ID、物品ID、用户对物品的评分和评分行为发生的时间戳。

2、用户行为分析

2.1 用户活跃度和物品流行度的分布

用户的行为数据是满足长尾分布的,下面两者都满足长尾分布

  • fu(k)为对k个物品产生过行为的用户数
  • fi(k)为被k个用户产生过行为的物品数
    在这里插入图片描述

2.2 用户活跃度和物品流行度的关系

一般认为,新用户倾向于浏览热门的物品,而老用户会之间开始浏览冷门的物品
在这里插入图片描述
基于用户行为数据设计的推荐算法一本称为协同过滤算法,该算法又可以分为:

  • 基于邻域的方法(neighborhood-based)
    • 基于用户的协同过滤算法
    • 基于物品的协同过滤算法
  • 隐语义模型(latent factor model)
  • 基于图的随机游走算法(random walk on graph)

3、实验设计和算法测评

  • 数据集:MovieLens
  • 研究问题:TopN推荐问题
  • 训练集与测试集:N折交叉验证
  • 测评指标
    • 准确率 召回率
    • 覆盖率:最终的推荐列表中包含多大比例的物品
    • 新颖度:推荐列表中物品的平均流行度
  • 在计算平均流行度时对每个物品的流行度取对数。因为物品的流行度分布满足长尾分布,取对数之中,流行度的平均值更加稳定。

4、基于邻域的算法

4.1 基于用户的协同过滤算法

基本的两个步骤
  • 找到和目标用户兴趣相似的用户合集
  • 找到和这个集合中的用户喜欢的,且目标用户没有听说过的物品推荐给用户目标
计算相似度的两个方法:
  • 给定用户u和用户v,令N(u)表示用户u曾经有过正反馈的物品集合,令N(v)为用户v曾经有过正反馈的物品集合。
  • Jaccard公式
    在这里插入图片描述
  • 余弦相似度
    在这里插入图片描述
    计算余弦相似度的方法(降低计算复杂度版):原有的余弦相似度计算方法是直接两两进行计算,每次计算分子和分母。这样计算和节约计算两者都为0的计算,以及分母的重复计算。
    在这里插入图片描述
计算结果和超参
  • 只有一个超参K,即为每个用户选取K个和他兴趣最相似的用户
  • 准确率和召回率:适合的K会影响到模型的精度,但是精度对K不是特别敏感
  • 流行度:K越大,推荐结果越热门
  • 覆盖率:K越大,推荐结果覆盖率越低
用户相似度计算的改进User-IIF
  • 主要思想:两个用户对冷门物品采取过同样的行为更能说明兴趣的相似度
  • 所以将相似度计算改进为如下,从而惩罚了共同的热门物品的影响:
    在这里插入图片描述

4.2 基于物品的协同过滤算法

计算步骤
  • 计算物品之间的相似程度
  • 根据物品的相似度和用户的历史行为给用户生成推荐列表
相似度计算公式
  • 计算公式如下,分母表示喜欢物品i的用户数,分子表示同时喜欢物品i和物品j的用户
    在这里插入图片描述
  • 哈利波特问题:当j是很热门的物品时,会导致Wij计算出来很大,也就是热门物品和任何物品都会有很大的相似度,为了防止这个问题对公式进行修正。
    在这里插入图片描述
  • 为了解决哈利波特问题,进一步可以加大分母上对热门物品的惩罚
    在这里插入图片描述

具体计算的方法

  • 建立用户-物品倒排表
  • 对每个用户建立一个包含他喜欢的物品的列表,将他物品列表中的物品构建单用户的共现矩阵
  • 将这些矩阵相加可以得到C矩阵,将之归一化可以得到余弦相似度矩阵
    在这里插入图片描述
  • 得到物品相似度以后,用下面的公式计算用户u对物品j的兴趣:这里N(u)是用户喜欢的物品的集合,S(j,K)是和物品j最相似的K个物品的集合,wji是物品j和i的相似度,rui是用户u对物品i的兴趣。(对于隐反馈数据集,如果用户u对物品i有过行为,即可令 rui=1。)该公式的含义是,和用户历史上感兴趣的物品越相似的物品,越有可能在用户的推荐列表中获得比较高的排名
    在这里插入图片描述
效果与超参
  • 精度:选择合适的K对获得最高精度是很重要的
  • 流行度:随着K的增加流行度会提高,但是当增加到一定程度,流行度就不会有明显的变化
  • 覆盖率:K增加会降低系统的覆盖率
用户活跃度对物品相似度的影响-ItemCF-IUF
  • 活跃用户对物品相似度的贡献应该小于不活跃的用户,应该增加IUF(inverse user frequence)参数来修正物品相似度的计算公式
    在这里插入图片描述
  • 可以提升覆盖率,降低流行度
物品相似度的归一化
  • 热门的类其类内相似度一般比较大,如果不进行归一化,就会推荐比较热门的类里面的物品,而这些物品是比较热门的。从而,降低推荐的覆盖率。
    在这里插入图片描述
  • 作用:增加推荐的准确度,提高推荐的覆盖率和多样性

4.3 UserCF和ItemCF的综合比较

在这里插入图片描述

5 隐语义模型

5.1 基础算法

  • 主要思想:对书和物品的兴趣分类,对于某个用户,首先得到他的兴趣分类,然后从分类中挑选他可能喜欢的物品

  • LFM通过如下公式计算用户u对物品i的兴趣
    在这里插入图片描述
    这个公式中 ,pu,k和qi,k 是模型的参数,其中 ,pu,k度量了用户u的兴趣和第k个隐类的关系,而qi,k 度量了第k个隐类和物品i之间的关系

  • 在隐性反馈数据集上的第一个问题:如何给每个用户生成负样本

    • 每个用户要保证正负样本均衡
    • 负样本采样时,需要选取很热门而用户没有行为的物品
  • 利用随机梯度下降法来迭代求得参数的值,损失函数如下:
    在这里插入图片描述

  • 超参

    • 隐特征的个数F
    • 学习速率alpha
    • 正则化参数lambda
    • 负样本/正样本比例ratio:对性能影响最大
      在这里插入图片描述

5.2 基于LFM的实际系统的例子

  • 应用场景:雅虎首页个性化设计方案,以CTR为优化目标,利用LFM来预测用户是否会单击一个链接
  • 主要问题:对新闻而言,实时性很重要,LFM很难实现实时推荐,如何对新文章冷启动是个问题
  • 解决方案:
    在这里插入图片描述

5.3 与基于邻域的方法的比较

理论基础:

基于邻域的方法LFM
理论基础基于统计,没有学习过程一种学习方法
离线计算的空间复杂度用户相关表,需要O(MM)的空间;物品相关表,需要O(NN)的空间如果是F个隐类,那么它需要的存储空间是O(F*(M+N))
离线计算的时间复杂度UserCF是O(N * (K/N)^2),而ItemCF是O(M*(K/M)^2)如果用F个隐类,迭代S次,那么它的计算复杂度 是O(K * F * S)
在线实时推荐UserCF对新物品实时,ItemCF对新用户实时不能实时
推荐解释ItemCF可以不能

6、基于图的模型

6.1 用户行为数据的二分图表示

在这里插入图片描述

6.2 基于图的推荐算法

  • 度量用户顶点 vu和与vu没有边直接相连的物品节点在图上的相关性,相关性越高的物品在推荐列表中的权重就越高

  • 顶点的相关性的影响因素

    • 两个顶点之间的路径数
    • 两个顶点之间路径的长度
    • 两个顶点之间的路径经过的顶点
  • 相关性高的一对顶点一般具有如下特征:

    • 两个顶点之间有很多路径相连;
    • 连接两个顶点之间的路径长度都比较短;
    • 连接两个顶点之间的路径不会经过出度比较大的顶点
PersonalRank算法

假设要给用户u进行个性化推荐,可以从用户u对应的节点vu开始在用户物品二分图上进行随机游走。游走到任何一个节点时,首先按照概率 α 决定:

  • 停止这次游走并从vu节点开始重新游走。
  • 继续游走,那么就从当前节点指向的节点中按照均匀分布随机选择一 个节点作为游走下次经过的节点。

这样,经过很多次随机游走后,每个物品节点被访问到的概率 会收敛到一个数。最终的推荐列表中物品的权重就是物品节点的访问概率。
公式如下:
在这里插入图片描述
算法的缺点,在时间复杂度上有明显的缺点,无法生成实时推荐,而且计算一次推荐结果也很耗时。
改进方案:减少迭代次数;从矩阵论出发,重新设计算法。

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值