推荐系统(一) —— 好的推荐系统

原创 2016年04月16日 12:21:58

ML方向初步计划学习下推荐系统,感谢灵哥和宇哥推荐的书——《推荐系统实践》,书一到手,迫不及待的就把第一章看完了,感觉确实很有意思,值得投入去学习。本书并没有打算写成handbook式的巨著或者事无巨细的基础教材,内容相对琐碎松散,当然,这应该是由于领域特点所限,因此,自己打算在学习之余,抽时间将所学内容进行整理总结,做成阅读笔记,也方便自己以后查阅补充。
——题记


一、推荐系统简介

1. 为何要用推荐系统

核心是面对信息过载问题,解决方案由分类目录(Yahoo)到搜索引擎(Google),由于以下两个优点,又到了推荐系统,当然推荐系统并没有取代搜索引擎,两者可以互补使用。
(1)推荐系统能够在用户没有明确目的的时候帮助他们发现感兴趣的新内容
(2)推荐系统可以更好地发掘物品的长尾

2. 推荐系统是什么

推荐系统的基本任务是联系用户与物品(可供用户消费的东西的统称),解决信息过载的问题。推荐算法的本质是通过一定的方式将用户与物品联系起来,大致有三种方式:
(1)社会化推荐
(2)基于内容的推荐
(3)基于协同过滤的推荐

二、应用领域

几乎所有的推荐系统应用都是由以下三部分组成:
- 前台的展示页面
- 后台的日志系统
- 推荐算法系统
广泛应用个性化推荐系统的领域
(1)电子商务 —— Amazon
个性化推荐列表;相关推荐列表(打包销售)
(2)电影和视频网站 —— Netflix
(3)个性化音乐网络电台 —— Pandora 豆瓣
注意音乐推荐具有很多特殊点
(4)社交网络 —— Facebook
Facebook有个推荐API
(5)个性化阅读 —— GoogleReader Zite
(6)基于位置的服务
位置是一种很重要的上下文信息
(7)个性化邮件 —— Tapestry
(8)个性化广告 —— Facebook
广告定向投放是很多互联网公司的核心技术

三、评测方式

1. 推荐系统参与方

(1)用户
(2)物品
(3)提供推荐系统的网站

2. 推荐系统试验方法 —— 评测推荐效果

一般来说,一个新的推荐算法最终上线,需要依次完成下述试验:
(1)通过离线实验证明其在很多离线指标上优于现有算法
(2)通过用户调查确定其用户满意度不低于现有算法
(3)通过在线AB测试确定其在我们关心的指标上优于现有算法

2.1 离线实验

(1)特点:通过日志系统获取用户行为数据集即可
(2)优点: 不需要真实用户参与,只要有一个从实际系统日志中提取的数据集即可,计算迅速
(3)缺点: 适合评测“预测准确度”,对很多商业上关注的指标“用户满意度”“点击率”“转化率”等无法获得

2.2 用户调查

(1)特点:在做用户调查时,一方面要控制成本,另一方面又要保证结果的统计意义
(2)优点:可以获得很多体现用户主观感受的指标,相对在线实验风险很低,出现错误容易弥补
(3)缺点:组织大规模测试难,致使测试结果统计意义不足;设计双盲实验困难,测试环境和真实环境下用户行为差异,导致测试环境下收集的测试指标可能在真实环境中难以复现

2.3 在线实验

(1)特点:AB测试是一种很常见的在线评测算法的试验方法。AB测试中流量切分至关重要,不同层以及控制这些层的团队需要从一个统一的地方获得自己AB测试的流量,不同层之间的流量应该是正交的。
(2)优点:可以公平获得不同算法实际在线时的性能指标
(3)缺点:周期比较长,必须进行长期的实验才能得到可靠的结果

3. 推荐系统评测指标

3.1 用户满意度

(1)最重要指标
(2)只能用户调查(首要)或者在线实验(通过用户行为统计,例如点击率、用户停留时间和转化率等)获得

3.2 预测准确度

(1)最重要的离线评测指标
(2)离线试验和问卷调查都可
(3)评分评测系统 —— RMSE 或 MAE
这里写图片描述
这里写图片描述
RMSE标准更加严苛。如果评分系统是基于整数建立的(即用户给的评分都是整数),那么对预测结果取整会降低MAE的误差。
(4)TopN推荐系统 —— 准确率 或 召回率
这里写图片描述
这里写图片描述
(5)选择评分评测还是TopN主要看推荐网站的内容。

3.3 覆盖率

(1)覆盖率描述一个推荐系统对物品长尾的发掘能力。三种方式都可实现。是内容提供商比较关心的指标可以通过研究物品在推荐列表中出现次数的分布描述推荐系统发掘长尾的能力
(2)可以通过研究物品在推荐列表中出现次数的分布描述推荐系统发掘长尾的能力,可以用信息熵和基尼系数两个指标衡量
这里写图片描述
这里写图片描述
其中,p(i)是物品i的流行度比上所有物品的流行度之和(关于流行度的计算公式尚未出现);i_j是按照物品流行度p()由小到大排序后的物流表中的第j个物品
(3)现在主流的推荐算法都具有马太效应,推荐系统的初衷是要消除马太效应的。
评测推荐系统是否具有马太效应的简单方法就是使用基尼系数,如果G1是从初始用户行为中计算出的物品流行度的基尼系数,G2是从推荐列表中计算出的物品流行度的基尼系数,那么当G2>G1时,就说明推荐算法具有马太效应。

3.4 多样性

(1)多样性描述了推荐列表中物品两两之间的不相似性,主要靠问卷调查获取
(2)推荐系统的整体多样性可以定义为所有用户推荐列表多样性的平均值,即
这里写图片描述
,其中用户u在推荐列表R(u)下的多样性为
这里写图片描述
其中,s(i,j)定义了物品i与j之间的相似度。

3.5 新颖性

(1)新颖的推荐是指给用户推荐那些他们之前没有听说过的物品,主要靠问卷调查获取
(2)最简单的实现方式,即吧那些用户之前在网站中对其有过行为的物品从推荐列表中过滤掉
(3)如果推荐结果中物品的平均热门程度较低,则推荐结果可具有较高的新颖性。

3.6 惊喜性

注意与新颖性进行区别,尚没有公认的定义指标,只能通过问卷调查获取

3.7 信任性

(1)只能通过问卷调查得到
(2)提高推荐系统的信任度主要在于需要增加推荐系统的透明度,即提供对推荐系统的解释,让用户明白其运行机制
考虑用户的社交网络信息,利用好友信息进行推荐,利用好友进行解释等

3.8 实时性

(1)推荐系统需要实时地更新推荐列表来满足用户新的行为变化 —— 通过推荐列表的变化速率来评测
(2)推荐系统需要能够将新加入系统的物品推荐给用户 —— 利用用户推荐列表中多大比例的物品是当天新加入的来评测

3.9 健壮性

(1)健壮性衡量一个推荐系统抗击作弊(人为攻击)的能力
(2)评测主要利用模拟攻击
(3)可以通过以下手段提高系统健壮性:
设计推荐系统时尽量使用代价比较高的用户行为,例如将浏览行为换为购买行为
在使用数据前,进行攻击测试,从而对数据进行清理

3.10 商业目标

与网站的盈利模式相关

3.11 总结

(1)对于离线优化来说,一般在给定覆盖率、多样性、新颖性等约束条件下,优化预测准确度。
(2)为了充分了解一个算法的性能,应该在多个维度上进行评测:
用户维度:主要包括用户的人口统计信息、活跃度以及是不是新用户等
物品维度:包括物品的属性信息、流行度、平均分以及时不时新加入的物品等
时间维度:包括季节、是工作日还是周末,是白天还是晚上等

版权声明:本文为博主原创文章,未经博主允许不得转载。

推荐系统

文章摘要:   主要介绍协同过滤推荐系统(cf): 一 基于用户的cf 二 基于项的的cf 三 user CF 对比 item CF (1)适用场景。 user CF适合于数据较多而用...
  • u010220089
  • u010220089
  • 2016年02月01日 18:13
  • 1160

推荐系统

本文结构: 1. 推荐系统 2. 常用方法 1. 简介 2. 模型 cost, gradient 表达式 3. 代码实现 3. 应用实例参考: Coursera-...
  • aliceyangxi1987
  • aliceyangxi1987
  • 2017年05月02日 11:35
  • 4681

推荐系统

推荐系统评价标准准确度:打分系统,top N推荐 覆盖率:表示对物品长尾的发掘能力 多样性:表示推荐列表中物品两两之间的不相似性 新颖度:给用户suprise 惊喜度:推荐和用户历史兴趣不相似...
  • u011826745
  • u011826745
  • 2016年07月20日 21:21
  • 759

推荐系统测评指标

一个完整的推荐系统一般含3个参与方:用户、物品提供者和提供推荐系统的网站。一个好的推荐系统是能令三方共赢的系统。好的推荐系统不仅能准确预测用户的行为,还能扩展用户的视野,帮助用户发现那些他们可能会感兴...
  • u014570574
  • u014570574
  • 2016年05月17日 16:16
  • 2745

推荐系统与应用

七月在线4月机器学习算法班课程笔记——No.9 前言  推荐系统——我早就很感兴趣的一个方向,可以说是机器学习在各个公司广泛应用的一个内容,从求职招聘就可以感觉到。另外,我们也经常在使用推荐系统,比如...
  • JoyceWYJ
  • JoyceWYJ
  • 2016年06月20日 16:42
  • 3909

协同过滤算法:基于用户和基于物品的优缺点比较

定义 UserCF:基于用户的协同过滤算法 ItemCF:基于物品的协同过滤算法 UserCF和ItemCF优缺点的对比 UserCF ItemCF 性能 适用于用户较少的场合,如...
  • u010043538
  • u010043538
  • 2017年05月05日 14:16
  • 2687

[推荐算法]基于用户的协同过滤算法

什么是推荐算法 推荐算法最早在1992年就提出来了,但是火起来实际上是最近这些年的事情,因为互联网的爆发,有了更大的数据量可以供我们使用,推荐算法才有了很大的用武之地。 最开始,所以我...
  • ygrx
  • ygrx
  • 2013年11月12日 14:12
  • 66851

数据挖掘笔记-基于项目协同过滤推荐的简单实现

基本思想:预先根据所有用户的历史偏好数据计算项目之间的相似性,然后把与用户喜欢的项目相类似的项目推荐给用户。...
  • wulinshishen
  • wulinshishen
  • 2015年01月02日 11:24
  • 1078

基于物品的协同过滤推荐系统实现

  • 2018年02月04日 11:05
  • 513KB
  • 下载

【推荐算法】协同过滤算法——基于用户 Java实现

只是简单谢了一个Demo,先贴上GitHub地址。 https://github.com/wang135139/recommend-system基本概念就不过多介绍了,相信能看明白的都了解。如果想了...
  • wang135139
  • wang135139
  • 2016年01月21日 14:17
  • 6257
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:推荐系统(一) —— 好的推荐系统
举报原因:
原因补充:

(最多只允许输入30个字)