推荐系统实战 总结一
推荐系统总结一
- 1. 什么是推荐系统
- 2. 推荐系统实验方法
- 2.1 离线实验
- 2.2 用户调查
- 2.3 在线实验
- 3.评测指标
- 3.1 用户满意度
- 3.2 预测准确度
- 评分预测
- 3.3 覆盖率
- 3.4 多样性
- 3.5 新颖性
- 3.6 惊喜度
- 3.7 信任度
- 3.8 实时性
- 3.9 健壮性
- 3.10 商业目标
- 3.11 总结
- 3.12 评测维度
1. 什么是推荐系统
在这个时代,无论是信息消费者还是信息生产者都遇到了很大的挑战:作为信息消费者,如何从大量信息中找到自己感兴趣的信息是一件非常困难的事情;作为信息生产者, 如何让自己生产的信息脱颖而出,受到广大用户的关注,也是一件非常困难的事情。
推荐系统就是解决这一矛盾的重要工具。推荐系统的任务就是联系用户和信息,一方面帮助用户发现对自己有价值的信息,另一方面让信息能够展现在对它感兴趣的用户面前,从而实现信息消费者和信息 生产者的双赢。
推荐系统不需要用户提供明确的需求,而是通过分析用户的历史行为给用 户的兴趣建模,从而主动给用户推荐能够满足他们兴趣和需求的信息。
个性化推荐的成功应用需要两个条件。
- 第一是存在信息过载,因为如果用户可以很容易地从所有物品中找到喜欢的物品,就不需要个性化推荐了。
- 第二是用户大部分时候没有特别明确的需求,因为用户如果有明确的需求,可以直接通过搜索引擎找到感兴趣的物品。
一个完整的推荐系统一般存在3个参与方:用户、物品提供者和提供推荐系统的网站。以图书推荐为例,
- 首先,推荐系统需要满足用户的需求,给用户推荐那些令他们感兴趣的图书。
- 其次,推荐系统要让各出版社的书都能够被推荐给对其感兴趣的用户,而不是只推荐几个大型出版社的书。
- 最后, 好的推荐系统设计,能够让推荐系统本身收集到高质量的用户反馈,不断完善推荐的质量,增加 用户和网站的交互,提高网站的收入。
- 因此在评测一个推荐算法时,需要同时考虑三方的利益, 一个好的推荐系统是能够令三方共赢的系统。
- 好的推荐系统不仅仅能够准确预测用户的行为,而且能够扩展用户的视野,帮助用户发现那些他们可能会感兴趣,但却不那么容易发现的东西。同时,推荐系统还要能够帮助商家将 那些被埋没在长尾中的好商品(一小部分用户的个性化需求)介绍给可能会对它们感兴趣的用户。
2. 推荐系统实验方法
推荐系统中,主要有3种评测推荐效果的实验方法,即离线实验(offline experiment)、用户调查(user study)和在线实验(online experiment)。
2.1 离线实验
(1) 通过日志系统获得用户行为数据,并按照一定格式生成一个标准的数据集;
(2) 将数据集按照一定的规则分成训练集和测试集;
(3) 在训练集上训练用户兴趣模型,在测试集上进行预测;
(4) 通过事先定义的离线指标评测算法在测试集上的预测结果。
从上面的步骤可以看到,推荐系统的离线实验都是在数据集上完成的,也就是说它不需要一个实际的系统来供它实验,而只要有一个从实际系统日志中提取的数据集即可。
2.2 用户调查
用户调查是推荐系统评测的一个重要工具,很多离线时没有办法评测的与用户主观感受有关的指标都可以通过用户调查获得。在用户调查中,有一些需要注意的事项:
(1)成本控制:用户调查成本很高,需要用户花大量 时间完成一个个任务,并回答相关的问题。有些时候,还需要花钱雇用测试用户。我们在做用户调查时,一方面要控制成本,另一方面又要保证结果的统计意义。
(2)双盲实验:即不要让实验人员和用户事先知道测试的目标,以免用户的回答和实验人员的测试受主观成分的影响。
(3)相同分布:测试用户需要尽量保证测试用户的分布和真实用户的分布相同,比如男女各半,以及年龄、活跃度的分布都和真实用户分布尽量相同。
- 优点是可以获得很多体现用户主观感受的指标,相对在线实验风险很低,出现错误后很容易弥补。
- 缺点是招募测试用户代价较大,很难组织大规模的测试。此外,在很多时候设计双盲实验非常困难,而且用户在测试环境下的行为和真实环境下的行为可能有所不同,因而在测试环境下收集的测试指标可能在真实环境下无法重现。
2.3 在线实验
在完成离线实验和必要的用户调查后,可以将推荐系统上线做AB测试,将它和旧的算法进行比较。
AB测试是一种很常用的在线评测算法的实验方法。它通过一定的规则将用户随机分成几组,并对不同组用户采取不同的算法,然后通过统计不同组用户的各种不同的评测指标比较不同算法的好坏。AB测试那些在离线实验和用户调查中表现很好的算法。其次, 一个大型网站的AB测试系统的设计也是一项复杂的工程。
切分流量是AB测试中的关键,不同的层以及控制这些层的团队需要从一个统一的地方获得自己AB测试的流量,而不同层之间的流量应该是正交的。
AB测试的优点是可以公平获得不同算法实际在线时的性能指标,包括商业上关注的指标。
AB测试的缺点主要是周期比较长,必须进行长期的实验才能得到可靠的结果
3.评测指标
本节将介绍各种推荐系统的评测指标。这些评测指标可用于评价推荐系统各方面的性能。这些指标有些可以定量计算,有些只能定性描述,有些可以通过离线实验计算,有些需要通过用户 调查获得,还有些只能在线评测。
3.1 用户满意度
- 用户作为推荐系统的重要参与者,其满意度是评测推荐系统的最重要指标。但是,用户满意度没有办法离线计算,只能通过用户调查或者在线实验获得。
- 我们可以用点击率、用户停留时间和转化率等指标度量用户的满意度。
3.2 预测准确度
- 是度量一个推荐系统或者推荐算法预测用户行为的能力。这个指标是最重要的推荐系统离线评测指标
- 在计算该指标时需要有一个离线的数据集,该数据集包含用户的历史行为记录。然后,将该数据集通过时间分成训练集和测试集。最后,通过在训练集上建立用户的行为和兴趣模型预测用户在测试集上的行为,并计算预测行为和测试集上实际行为的重合度作为预测准确度。
评分预测
预测用户对物品评分的行为称为评分预测,在评分预测中,预测准确度一般通过均方根误差RMSE 和 平均绝对误差MAE计算,对于测试集中的一个用户u和物品i,令ruir_uirui是用户u对物品i的实际评分,而rˆuirˆuirˆui 是推荐算法给出的预测评分,那么RMSE的定义为:
MAE采用绝对值计算预测误差,它的定义为:
topN推荐
- 网站在提供推荐服务时,一般是给用户一个个性化的推荐列表,这种推荐叫做TopN推荐。TopN推荐的预测准确率一般通过准确率(precision) / 召回率(recall)度量。
- 令R(u)是根据用户在训练集上的行为给用户作出的推荐列表,而T(u)是用户在测试集上的行为列表。那么,推荐结果的召回率定义为:
- 推荐结果的准确率定义为:
- 有的时候,为了全面评测TopN推荐的准确率和召回率,一般会选取不同的推荐列表长度N,计算出一 组准确率/召回率,然后画出准确率/召回率曲线( precision/recall curve )。
3.3 覆盖率
- 覆盖率(coverage)描述一个推荐系统对物品长尾的发掘能力。覆盖率有不同的定义方法,最简单的定义为推荐系统能够推荐出来的物品占总物品集合的比例。假设系统的用户集合为U,推荐系统给每个用户推荐一个长度为N的物品列表R(u)。那么推荐系统的覆盖率可以通过下面的公式计算:
覆盖率是一个内容提供商会关心的指标。一个好的推荐系统不仅需要有比较高的用户满意度,也要有较高的覆盖率。如果所有的s物品都出现在推荐列表中,且出现的次数差不多,那么推荐系统发掘长尾的能力就很好。
因此,可以通过研究物品在推荐列表中出现次数的分布描述推荐系统挖掘长尾的能力。如果这个分布比 较平,那么说明推荐系统的覆盖率较高,而如果这个分布较陡峭,说明推荐系统的覆盖率较低。 在信息论和经济学中有两个著名的指标可以用来定义覆盖率。
第一个是信息熵:
第二个指标是基尼系数(Gini Index):
iji_jij是按照物品流行度p()从小到大排序的物品列表中第j个物品马太效应,即所谓强者更强,弱者更弱的效应 让热门的物品更加热门,不热门的物品更加不热门
- 如果G1是从初始用户行为中计算出的物品流行度的基尼系数,G2是从推存列表中计算出的物品流行度的基尼系数,那么如果G2> G1,就说明推荐算法具有马太效应。
3.4 多样性
为了满足用户广泛的兴趣,推荐列表需要能够覆盖用户不同的兴趣领域,即推荐结果需要具有多样性。
多样性描述了推荐列表中物品两两之间的不相似性。因此,多样性和相似性是对应的。假设s(i, j) ∈[0,1] 定义了物品i和j之间的相似度,那么用户u的推荐列表R(u)的多样性定义如下:
3.5 新颖性
- 新颖的推荐是指给用户推荐那些他们以前没有听说过的物品。新颖的推荐不应该给用户推荐那些他们已经看过、打过分或者浏览过的视频。
- 评测新颖度的最简单方法是利用推荐结果的平均流行度,因为越不热门的物品越可能让用户觉得新颖。因此,如果推荐结果中物品的平均热门程度较低,那么推荐结果就可能有比较高的新颖性。
3.6 惊喜度
- 如果推荐结果和用户的历史兴趣不相似,但却让用户觉得满意,那么就可以说推荐结果的惊喜度很高,而推荐的新颖性仅仅取决于用户是否听说过这个推荐结果。
- 提高推荐惊喜度需要提高推荐结果的用户满意度,同时降低推荐结果和用户历史兴趣的相似度。
3.7 信任度
- 度量推荐系统的信任度只能通过问卷调查的方式,询问用户是否信任推荐系统的推荐结果。
- 提高推荐系统的信任度主要有两种方法。
- 首先需要增加推荐系统的透明度(transparency), 而增加推荐系统透明度的主要办法是提供推荐解释。只有让用户了解推荐系统的运行机制,让用户认同推荐系统的运行机制,才会提高用户对推荐系统的信任度。
- 其次是考虑用户的社交网络信息,利用用户的好友信息给用户做推荐,并且用好友进行推荐解释。这是因为用户对他们的好友一般都比较信任,因此如果推荐的商品是好友购买过的,那么他们对推荐结果就会相对比较信任。
3.8 实时性
- 在很多网站中,因为物品(新闻、微博等)具有很强的时效性,所以需要在物品还具有时效性时就将它们推荐给用户。
- 推荐系统的实时性包括两个方面。
- 首先,推荐系统需要实时地更新推荐列表来满足用户新的 行为变化。
- 需要能够将新加入系统的物品推荐给用户。这主要考验了推荐系统处理物品冷启动的能力。
3.9 健壮性
- 健壮性(即robust,鲁棒 性)指标衡量了一个推荐系统抗击作弊的能力。
- 算法健壮性的评测主要利用模拟攻击。
- 首先,给定一个数据集和一个算法,可以用这个算法 给这个数据集中的用户生成推荐列表。
- 然后,用常用的攻击方法向数据集中注入噪声数据,然后 利用算法在注入噪声后的数据集上再次给用户生成推荐列表。
- 最后,通过比较攻击前后推荐列表 的相似度评测算法的健壮性。如果攻击后的推荐列表相对于攻击前没有发生大的变化,就说明算 法比较健壮。
3.10 商业目标
很多时候,网站评测推荐系统更加注重网站的商业目标是否达成,而商业目标和网站的盈利模式是息息相关的。
3.11 总结
本节提到了很多指标,其中有些指标可以离线计算,有些只能在线获得。下表对指标的获得做出了总结。
3.12 评测维度
增加评测维度的目的就是知道一个算法 在什么情况下性能最好。这样可以为融合不同推荐算法取得最好的整体性能带来参考。
一般来说,评测维度分为如下3种。
1)用户维度:主要包括用户的人口统计学信息、活跃度以及是不是新用户等。
2)物品维度:包括物品的属性信息、流行度、平均分以及是不是新加入的物品等。
3)时间维度:包括季节,是工作日还是周末,是白天还是晚上等。
如果能够在推荐系统评测报告中包含不同维度下的系统评测指标,就能帮我们全面地了解推 荐系统性能,找到一个看上去比较弱的算法的优势,发现一个看上去比较强的算法的缺点。
推荐系统实战 总结一相关推荐
- 搜索推荐系统实战:起始篇
搜索推荐系统实战篇-上半篇 一切源于炼丹笔记,我只是敲了敲代码. 搜索推荐系统实战:起始篇 搜索推荐系统实战:进化篇 搜索推荐系统实战:终极奥秘 在电商搜索中,例如淘宝,拼多多,京东等的搜索的场景往往 ...
- 搜索推荐系统实战:进化篇
搜索推荐系统实战篇-中篇 一切源于炼丹笔记,我只是敲了敲代码. 搜索推荐系统实战:起始篇 搜索推荐系统实战:进化篇 搜索推荐系统实战:终极奥秘 此处我们假设模型训练的大的框架已经固定,同时数据采样的方 ...
- 搜索推荐系统实战:终极奥秘
搜索推荐系统实战篇-下篇 一切源于炼丹笔记,我只是敲了敲代码. 搜索推荐系统实战:起始篇 搜索推荐系统实战:进化篇 搜索推荐系统实战:终极奥秘 Bias问题是推荐系统长期需要考虑的一个问题,举些简单的 ...
- Spark机器学习实战 (十二) - 推荐系统实战
0 相关源码 将结合前述知识进行综合实战,以达到所学即所用.在推荐系统项目中,讲解了推荐系统基本原理以及实现推荐系统的架构思路,有其他相关研发经验基础的同学可以结合以往的经验,实现自己的推荐系统. 1 ...
- 吐血整理!内部包含3980大数据、机器学习、推荐系统实战课程,仅分享一次
在最近几年,大数据(Dig Data )机器学习(Machine Learning)逐渐流行开来,容易让人误以为机器学习并不难.机器学习的流行原因很简单,在一个消费者(以及广告主)需要更多个性化,而计 ...
- Sparklyr与Docker的推荐系统实战
作者:Harry Zhu 链接:https://zhuanlan.zhihu.com/p/21574497 来源:知乎 著作权归作者所有.商业转载请联系作者获得授权,非商业转载请注明出处. 相关内容: ...
- 【阅读笔记】项亮前辈的《推荐系统实战》
推荐系统是个有意思的方向.项亮前辈的<推荐系统实战>来当作入门的第一本书还是很合适的,这段时间在断断续续的抽空阅读了一遍.本书写的浅显易懂,很好的勾勒出了推荐引擎十年前的主流算法,以及工业 ...
- 深度学习推荐系统实战笔记
小广告 (欢迎大家关注我的公众号"机器学习面试基地",之后将在公众号上持续记录本人从非科班转到算法路上的学习心得.笔经面经.心得体会.未来的重点也会主要放在机器学习面试上!) 序 ...
- 推荐系统实战4——EasyRec 搭建DSSM召回模型实现CTR点击平台
推荐系统实战4--EasyRec 搭建DSSM召回模型实现CTR点击平台 学习前言 EasyRec仓库地址 DSSM实现思路 一.DSSM整体结构解析 二.网络结构解析 1.Embedding层的构建 ...
- NLP自然语言处理系列-音乐推荐系统实战 - 数据处理
NLP自然语言处理系列-音乐推荐系统实战 - 数据处理 本文进行音乐推荐系统案例实战,对音乐数据集进行数据清洗和特征提取,基于矩阵分解进行音乐推荐. 数据处理 读取音乐数据集,统计数据指标,选择文本信 ...
最新文章
- 从城市治理到城市“智”理,AI 不仅是城市管理的“眼睛”
- python 英语翻译 excel_python批量将excel内容进行翻译写入功能
- 初识标准库vector
- 《仙剑奇侠传online》游戏后台优化分析:CPU、内存与启动时间
- Cloud for Customer动态控制任意UI element的visibility
- 操作系统,,,也考完了【流坑】
- Android接收系统广播
- 交互式、非交互式,登录式、非登录式Shell
- Python 2.7.5 CentOS 6.4 编译 错误
- 系统辨识与自适应控制
- LTE无线接入网的架构
- 单片机定时器TMOD与TCON
- android通过经纬度获取地址,Android编程实现根据经纬度查询地址并对获取的json数据进行解析的方法...
- 《黑客与画家》-1 为什么书呆子不受欢迎?
- 20192209 Exp2-后门原理与实践
- vue2中watch的使用
- OpenGL绘制框架(Win32版)
- i2c-test使用说明
- linux防火墙关闭与启动命令
- Adobe Photoshop CC 2017 (32 Bit) 软件安装