推荐系统实践(二)利用用户行为数据

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/qq_20095389/article/details/87560560

一、思维导图

二、基于邻域的算法

基于邻域的算法重点在于如何计算相似性,无论是用户相似性还是物品相似性。

1、基于用户的协同过滤算法

推荐和他相似的其他用户喜欢的物品

算法步骤
  • 找到和目标用户相似的用户集合。
  • 找到这个集合中的用户喜欢的,且目标用户没有听说过的物品推荐给目标用户。
相似性计算
  • 方式一:Jaccard 公式
  • 方式二:余弦相似度公式
  • 方式三:改进,增加对热门物品的惩罚
算法评测
  • TopN评测:召回率&&准确率
  • 覆盖率
  • 流行度
2、基于物品的协同过滤算法

推荐和他之前喜欢的物品相似的物品

算法步骤
  • 计算物品之间的相似度
  • 根据物品的相似度和用户的历史行为给用户生成推荐列表
相似度计算
  • 方式一
  • 方式二:惩罚热门物体
  • 方式三:考虑用户活跃度,IUF(Inverse User Frequency)
  • 小trick:相似度归一化,可以增加推荐的准确度,增加覆盖率和多样性。因为平均了类内相似度大于类外相似度的问题。
计算用户对一个物品的兴趣
  • 其中S(j,K)是和物品j最相似的K个物品的集合。
算法评测
  • TopN评测:召回率&&准确率
  • 覆盖率
  • 流行度
3、UserCF和ItemCF比较

三、隐语义模型

目的:单单依靠用户行为数据,无法解决两个不同领域的最热门的物体具有高度相似性这个问题。因此引入font color=#FF1493 >物品的内容数据解决这个问题。

隐语义可以是多方面的,书中以兴趣分类这个隐变量为例。

1、数据准备
2、兴趣分类
  • 隐含语义技术:采取基于用户行为统计的自动聚类,更加客观。
  • 隐含语义技术:pLSA,LDA,隐含类别模型,隐含主题模型,矩阵分解,LFM等。
3、如何给每个用户生成负样本
  • 对于一个用户,用他所没有过行为的物品作为负样本。缺点,负样本太多
  • 对于一个用户,他没有过行为的物品中均匀采样一些物品作为负样本
  • 对于一个用户,从他没有过行为的物品中采样出一些物品作为负样本,但采样时,保证每个用户的正负样本相当
  • 对于一个用户,从他没有过行为的物品中采样出一些物品作为负样本,但采样时偏重不热门的物品

【作者的经验】

  • 对每个用户,保证正负样本均衡
  • 对每个用户采样负样本时,要选取那些很热门,而用户没有行为的物品。
4、模型

以LFM(Latent Factor Mode)为例;

  • 用户u对物品的兴趣
5、loss 函数
  • r类别,正类为1,负类为0。
6、优化求解
  • 随机梯度下降法等

猜你喜欢

转载自blog.csdn.net/qq_20095389/article/details/87560560