【学习笔记】推荐系统

概述

推荐系统的任务就是联系用户和信息,一方面帮助用户发现对自己有价值的信息,另一方面让信息能够展现在对它感兴趣的用户面前,从而实现信息消费者和信息生产者的双赢。

推荐系统不需要用户提供明确的需求,而是通过分析用户的历史行为给用户的兴趣建模,从而主动给用户推荐能够满足他们兴趣和需求的信息。推荐系统通过发掘用户的行为,找到用户的个性化需求,从而将长尾商品准确地推荐给需要它的用户,帮助用户发现那些他们感兴趣但很难发现的商品。

个性化推荐系统的主要作用是通过分析大量用户行为日志,给不同用户提供不同的个性化页面展示,来提高网站的点击率和转化率。个性化推荐的成功应用需要两个条件,第一是存在信息过载,用户看不完所有物品,第二是用户没有明确需求

定义

没有明确需求的用户访问了服务,且服务的物品对用户构成了信息过载。系统通过一定的规则对物品进行排序,并将排在前面的物品展示给用户

分类

  • 社会化推荐:向朋友咨询,让好友给自己推荐物品
  • 基于内容的推荐:根据查找的内容,看返回结果里有哪些用户是没用过的
  • 基于协同过滤的推荐:找到与用户历史兴趣相似的用户集合,找到这个集合中的用户喜欢的,且目标用户没有使用过的物品推荐给目标用户。
  • 基于流行度的推荐:根据物品的流行程度,推荐热门物品给用户

要素

  • UI和UE(前端界面)
  • 数据(Lambda架构)
  • 业务知识
  • 算法

架构

请添加图片描述
在这里插入图片描述

推荐系统vs搜索引擎

搜索推荐
行为方式主动被动
意图明确模糊
个性化
流量分布马太效应长尾效应
目标快速满足持续服务
评估指标简单复杂

实验方法

离线实验

  1. 通过日志系统获得用户行为数据,生成一个标准数据集;
  2. 在数据集上进行训练,通过事先定义的离线指标评测算法在测试集上预测结果。

优点是速度快、不需要用户参与实验、不需要实际系统
缺点是无法获得点击率、转化率等商业关注指标、离线指标和商业指标存在差距

用户调查

用户调查需要有真实用户,需要用户在推荐系统上完成一些任务,记录用户行为,通过分析他们的行为了解系统性能。

优点是可以获得很多体现用户主观感受的指标
缺点是招募测试用户成本高,需要保证测试用户的分布与真实分布相同,需要保证是双盲实验

在线实验

AB测试通过一定规则将用户随机分成几组,并对不同组的用户采用不同的算法,通过统计不同组用户的各种不同的评测指标比较不同算法。

优点是可以公平获得不同算法实际在线时的性能指标
缺点是周期比较长,需要长期的实验才能得到可靠的结果。需要切分流量控制不同层之间的流量是正交的

评测指标

  • 用户满意度:用户满意度只能通过用户调查或在线实验获得,主要通过调查问卷的形式。
    在在线系统中,用户满意度主要通过一些对用户行为的统计得到。一般情况下可以用点击率、用户停留时长和转化率等指标度量用户的满意度。
  • 预测准确度:通过离线实验计算,需要包含用户历史行为记录的数据集,通过在训练集上建立用户的行为和兴趣模型预测用户在测试集上的行为,并计算预测行为和测试集上实际行为的重合度作为预测准确度。
    一般预测准确度指标有评分预测(通过均方根误差和平均绝对误差计算)、TopN推荐(通过准确率或召回率度量)、覆盖率(推荐出的物品占总物品集合的比例;为了保证所有物品出现次数差不多,用信息熵和基尼系数来衡量)
  • 多样性:提高推荐列表的多样性,覆盖用户绝大多数兴趣点,增加用户找到感兴趣物品的概率。
  • 新颖性:指给用户推荐他们没有听说过的物品。通过牺牲精度来提高多样性和新颖性是很容易的,困难的是如何在不牺牲精度的情况下提高多样性和新颖性。
  • 惊喜度:令用户惊喜的推荐结果是和用户历史上喜欢的物品不相似,但用户却觉得满意的推荐。
  • 信任度:如果用户信任推荐系统就会增加用户和推荐系统的交互。度量信任度只能通过问卷调查的方式,询问用户是否信任推荐系统的推荐结果。提高信任度的方法有增加推荐系统的透明度,提供推荐解释;其次是考虑用户的社交网络信息,利用用户的好友信息给用户做推荐,并用好友进行推荐解释。
  • 实时性:实时性包括两个方面,首先需要实时地更新推荐列表来满足用户新的行为变化;第二是能够将新加入系统的物品推荐给用户,考验处理物品冷启动的能力。
  • 健壮性:衡量推荐系统抗击作弊的能力,主要利用模拟攻击。
  • 商业目标:注重网站的商业目标是否达成。

评测维度

  • 用户维度:用户的人口统计学信息、活跃度、是不是新用户
  • 物品维度:物品的属性信息、流行度、平均分、是不是新物品
  • 时间维度:季节、工作日或周末、白天或晚上

用户行为

用户行为数据在网站上最简单的存在形式是日志。网站运行过程中会产生大量原始日志,多种原始日志可以按照用户行为汇总成会话日志,每个会话标识一次用户行为和对应的服务。
用户行为在个性化推荐系统中一般分为显性反馈行为(用户明确表示对物品喜好)和隐性反馈行为(页面浏览行为等)

一个用户行为数据集通常含有用户ID、物品ID、行为种类、行为上下文(时间和地点等)、行为的权重、行为的内容。产生行为的用户和行为的对象是必须包含的。

冷启动问题

  • 用户冷启动:为新用户做个性化推荐。收集用户特征,引导用户填写兴趣,使用其他站点的行为数据,构建用户画像;根据用户的标签做人群聚类;基于流行度推荐
  • 物品冷启动:给物品打标签,利用物品的内容信息,基于内容推荐
  • 系统冷启动:系统早期先使用基于内容的推荐;随着用户行为积累,逐渐过渡到协同过滤;基于内容的推荐和协同过滤的推荐结果进行加权

Lambda架构

请添加图片描述

推荐算法架构

请添加图片描述请添加图片描述

常用推荐算法

协同过滤算法

仅仅基于用户行为数据设计的推荐算法一般称为协调过滤算法。学术界提出的有基于邻域的方法、隐语义模型、基于图的随机游走算法等。业界最广泛应用的是基于邻域的方法,包括基于用户的协调过滤算法(给用户推荐和他兴趣相似的其他用户喜欢的 物品)、基于物品的协同过滤算法(给用户推荐和他之前喜欢的物品相似的物品)

基于用户的协同过滤算法
  1. 找到和目标用户兴趣相似的用户集合。
  2. 找到这个集合中用户喜欢的,且目标用户没有听说过的物品推荐给目标用户。
基于物品的协同过滤算法
  1. 计算物品之间的相似度
  2. 根据物品的相似度和用户的历史行为给用户生成推荐列表
相似度计算方法
  • 余弦相似度 c o s θ = X ⋅ Y ∥ X ∥ ∥ Y ∥ cos\theta=\frac{X \cdot Y}{\|X\|\|Y\|} cosθ=XYXY
  • 皮尔逊相关系数 p = E [ ( X − μ x ) ( Y − μ y ) ] σ x σ y p=\frac{E[(X-\mu_x)(Y-\mu_y)]}{\sigma_x\sigma_y} p=σxσyE[(Xμx)(Yμy)]
  • Jaccard相似度 J = ∣ X ∩ Y ∣ ∣ X ∪ Y ∣ J=\frac{|X \cap Y|}{|X \cup Y|} J=XYXY

基于图的模型

  • 将用户行为数据表示为二分图,基于二分图为用户进行推荐
  • 根据两个顶点之间的路径数、路径长度和经过的顶点数来评价两个顶点的相关性。

基于矩阵分解的方法

  • 根据用户与物品的潜在表现,可以预测用户对未评分的物品的喜爱程度
  • M × N M \times N M×N维的用户-物品评分矩阵近似分解成两个小矩阵的乘积,可以实现数据降维
  • 两个小矩阵分别是用户对商品隐含特征的偏好矩阵,另一个是商品所包含的隐含特征的矩阵
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值