推荐系统核心要素与实践要点清单
一、推荐系统基础概念
- 定义与本质
- 基本任务:建立用户与物品的联系,解决信息过载问题
- 核心价值:实现用户(信息消费者)与生产者双赢
- 与搜索引擎的区别
- 适用场景:用户需求模糊、存在信息过载时
- 功能特点:主动挖掘用户潜在兴趣
- 典型应用场景
- 电子商务(如亚马逊的个性化商品推荐)
- 视频流媒体(如Netflix推荐影片,YouTube推荐视频)
- 社交网络(如Facebook动态排序edgeRank算法)
二、推荐算法类型与原理
- 协同过滤算法
- UserCF(用户协同过滤)
- 步骤:找相似用户→推荐相似用户喜欢的物品
- 适用:反映群体兴趣的社交化推荐
- ItemCF(物品协同过滤)
- 步骤:计算物品相似度→推荐用户历史偏好物品的相似物
- 适用:个性化推荐,支持可解释性(如"与您喜欢的A相似的B")
- UserCF(用户协同过滤)
- 隐语义模型(LFM)
- 核心:通过隐含特征矩阵分解建立用户与物品的潜在联系
- 优势:理论基础强,适合稀疏数据优化
- 基于图的模型
- 方法:通过用户行为数据的随机游走(如PersonalRank)计算相关性
三、推荐系统评测体系
- 评测指标
- 准确性
- 评分预测:均方根误差(RMSE)、平均绝对误差(MAE)
- TopN推荐:召回率、准确率
- 多样性:推荐列表中不同类别物品的熵值计算
- 新颖性:推荐结果的平均流行度
- 覆盖率:缓解马太效应,用基尼系数衡量流行度分布
- 健壮性:抗作弊能力(如过滤高频浏览行为的攻击)
- 准确性
- 实验方法
- 离线实验(划分训练集与测试集)
- 用户调查(直接反馈满意度)
- 在线AB测试(流量分组验证)
四、冷启动问题解决方案
- 用户冷启动
- 利用注册信息(人口统计学、兴趣描述、社交账号导入)
- "启动兴趣"策略:提供多样性初始物品供用户反馈
- 物品冷启动
- 基于内容过滤(如向量空间模型分析文本特征)
- 专家标注(初期定义关键属性)
- 系统冷启动
- 混合策略:随机推荐+热门推荐 → 积累初始用户行为数据
五、上下文与社交网络的应用
- 时间上下文
- 动态调整推荐权重(近期行为>长期行为)
- 时间多样性设计:避免重复推荐,记录用户历史曝光列表
- 社交网络数据
- 来源:社会图谱(如Facebook好友关系)与兴趣图谱(如Twitter关注关系)
- 应用:提升推荐信任度(好友偏好传递)、解决冷启动
六、工程架构与设计原则
- 核心组件
- 数据层:用户行为日志(显性反馈如评分、隐性反馈如点击)
- 算法层:多引擎组合(协同过滤/内容/社交/上下文等)
- 展示层:推荐理由设计、用户反馈机制
- 关键设计原则
- 用户行为权重设计:付费行为>收藏>浏览
- 实时性要求:处理新物品加入、用户行为实时反馈
- 结果排序优化:平衡准确性与多样性,调控推荐理由分布
格言
推荐系统的任务就是联系用户和信息,一方面帮助用户发现对自己有价值的信息,另一方面让信息能够展现在对它感兴趣的用户面前,从而实现信息消费者和信息生产者的双赢。
05 公司扩张20世纪60年代
什么是推荐系统
,如果用户没有明确的需求呢
此时,你遇到了信息过载的问题,需要一个人或者工具来帮助你做筛选,给出一些建议供你选择。
推荐系统就是解决这一矛盾的重要工具
推荐系统的任务就是联系用户和信息,一方面帮助用户发现对自己有价值的信息,另一方面让信息能够展现在对它感兴趣的用户面前,从而实现信息消费者和信息生产者的双赢
分类目录和搜索引擎
分类目录网站
国内的Hao123等
推荐系统不需要用户提供明确的需求,而是通过分析用户的历史行为给用户的兴趣建模,从而主动给用户推荐能够满足他们兴趣和需求的信息
搜索引擎满足了用户有明确目的时的主动查找需求,而推荐系统能够在用户没有明确目的的时候帮助他们发现感兴趣的新内容。
从物品的角度出发,推荐系统可以更好地发掘物品的长尾(long tail)。
传统的80/20原则(80%的销售额来自于20%的热门品牌)在互联网的加入下会受到挑战
要了解推荐系统是如何工作的,可以先回顾一下现实社会中用户面对很多选择时做决定的过程。
仍然以看电影为例,一般来说,我们可能用如下方式决定最终看什么电影。
社会化推荐(
寻找和自己之前看过的电影在内容上相似的电影。
基于内容的推荐(content-based filtering)
基于协同过滤(collaborative filtering)的推荐。
推荐系统常用的3种联系用户和物品的方式
我们可以发现推荐系统就是自动联系用户和物品的一种工具,它能够在信息过载的环境中帮助用户发现令他们感兴趣的信息,也能将信息推送给对它们感兴趣的用户
06 积极求变20世纪70年代
几乎所有的推荐系统应用都是由前台的展示页面、后台的日志系统以及推荐算法系统3部分构成的。
图1-3 亚马逊的个性化推荐列表
亚马逊允许用户禁用推荐理由,这主要是出于隐私的考虑。有些用户可能不喜欢他对某些物品的行为被系统用来生成推荐结果,这个时候就可以禁用这些行为。
就是按照用户在Facebook的好友关系,给用户推荐他们的好友在亚马逊上喜欢的物品。
推荐理由换成了喜欢过相关物品的用户好友的头像。
除了个性化推荐列表,亚马逊另一个重要的推荐应用就是相关推荐列表。
亚马逊有20%~30%的销售来自于推荐系统。
我们有620万用户,因此也应有620万个商店。我们应该给每个用户提供最符合他需求的商店。
Not InteresTED(不感兴趣)
YouTube曾经做过一个实验,比较了个性化推荐的点击率和热门视频列表的点击率,实验结果表明个性化推荐的点击率是热门视频点击率的两倍。
第一是存在信息过载,因为如果用户可以很容易地从所有物品中找到喜欢的物品,就不需要个性化推荐了。第二是用户大部分时候没有特别明确的需求,因为用户如果有明确的需求,可以直接通过搜索引擎找到感兴趣的物品。
它们都不允许用户点歌,而是给用户几种反馈方式——喜欢、不喜欢和跳过。经过用户一定时间的反馈,电台就可以从用户的历史行为中习得用户的兴趣模型,从而使用户的播放列表越来越符合用户对歌曲的兴趣。
音乐基因工程的项目
Pandora的算法主要基于内容,其音乐家和研究人员亲自听了上万首来自不同歌手的歌,然后对歌曲的不同特性(比如旋律、节奏、编曲和歌词等)进行标注,这些标注被称为音乐的基因
Last.fm记录了所有用户的听歌记录以及用户对歌曲的反馈,在这一基础上计算出不同用户在歌曲上的喜好相似度,从而给用户推荐和他有相似听歌爱好的其他用户喜欢的歌曲。
Last.fm没有使用专家标注,而是主要利用用户行为计算歌曲的相似度。
物品空间大 物品数很多,物品空间很大,这主要是相对于书和电影而言。
上下文相关 用户的口味很受当时上下文的影响,这里的上下文主要包括用户当时的心情(比如沮丧的时候喜欢听励志的歌曲)和所处情境(比如睡觉前喜欢听轻音乐)。
用户听音乐一般是按照一定的次序一首一首地听。
Facebook最宝贵的数据有两个,一个是用户之间的社交网络关系,另一个是用户的偏好信息。
Facebook推出了一个推荐API,称为Instant Personalization
Facebook开发了EdgeRank算法对这些会话排序,使用户能够尽量看到熟悉的好友的最新会话。
Google Reader是一款流行的社会化阅读工具。它允许用户关注自己感兴趣的人,然后看到所关注用户分享的文章。
Zite都允许用户给出喜欢或不喜欢的反馈,然后通过分析用户的反馈数据不停地更新用户的个性化文章列表。
Digg首先根据用户的Digg历史计算用户之间的兴趣相似度,然后给用户推荐和他兴趣相似的用户喜欢的文章。
基于位置的服务往往和社交网络结合在一起。比如Foursquare推出了探索功能,给用户推荐好友在附近的行为
CPC、CPM
个性化广告投放和狭义个性化推荐的区别是,个性化推荐着重于帮助用户找到可能令他们感兴趣的物品,而广告推荐着重于帮助广告找到可能对它们感兴趣的用户,即一个是以用户为核心,而另一个以广告为核心。
07 玩耍心态20世纪80年代
一个完整的推荐系统一般存在3个参与方(如图1-22所示):用户、物品提供者和提供推荐系统的网站。
但是,很多研究表明,准确的预测并不代表好的推荐。
好的推荐系统不仅仅能够准确预测用户的行为,而且能够扩展用户的视野,帮助用户发现那些他们可能会感兴趣,但却不那么容易发现的东西。
同时,推荐系统还要能够帮助商家将那些被埋没在长尾中的好商品介绍给可能会对它们感兴趣的用户。
为了全面评测推荐系统对三方利益的影响,本章将从不同角度出发,提出不同的指标。这些指标包括准确度、覆盖度、新颖度、惊喜度、信任度、透明度等。
在推荐系统中,主要有3种评测推荐效果的实验方法,即离线实验(offline experiment)、用户调查(user study)和在线实验(online experiment)。
用户调查要尽量保证是双盲实验,不要让实验人员和用户事先知道测试的目标,以免用户的回答和实验人员的测试受主观成分的影响。
切分流量是AB测试中的关键,不同的层以及控制这些层的团队需要从一个统一的地方获得自己AB测试的流量,而不同层之间的流量应该是正交的。
一般来说,一个新的推荐算法最终上线,需要完成上面所说的3个实验。
1.用户满意度
这个调查问卷不是简单地询问用户对结果是否满意,而是从不同的侧面询问用户对结果的不同感受
更一般的情况下,我们可以用点击率、用户停留时间和转化率等指标度量用户的满意度。
2.预测准确度
评分预测的预测准确度一般通过均方根误差(RMSE)和平均绝对误差(MAE)计算。
网站在提供推荐服务时,一般是给用户一个个性化的推荐列表,这种推荐叫做TopN推荐。TopN推荐的预测准确率一般通过准确率(precision)/召回率(recall)度量。
覆盖率(coverage)描述一个推荐系统对物品长尾的发掘能力。覆盖率有不同的定义方法,最简单的定义为推荐系统能够推荐出来的物品占总物品集合的比例。假
覆盖率可以通过下面的公式计算:
一个好的推荐系统不仅需要有比较高的用户满意度,也要有较高的覆盖率。
为了更细致地描述推荐系统发掘长尾的能力,需要统计推荐列表中不同物品出现次数的分布
如果所有的物品都出现在推荐列表中,且出现的次数差不多,那么推荐系统发掘长尾的能力就很好。
在信息论和经济学中有两个著名的指标可以用来定义覆盖率。第一个是信息熵: 这里p(i )是物品i的流行度除以所有物品流行度之和。
社会学领域有一个著名的马太效应,即所谓强者更强,弱者更弱的效应。如果一个系统会增大热门物品和非热门物品的流行度差距,让热门的物品更加热门,不热门的物品更加不热门,那么这个系统就有马太效应。
评测推荐系统是否具有马太效应的简单办法就是使用基尼系数
多样性描述了推荐列表中物品两两之间的不相似性。因此,多样性和相似性是对应的。
新颖的推荐是指给用户推荐那些他们以前没有听说过的物品。在一个网站中实现新颖性的最简单办法是,把那些用户之前在网站中对其有过行为的物品从推荐列表中过滤掉
评测新颖度的最简单方法是利用推荐结果的平均流行度,因为越不热门的物品越可能让用户觉得新颖。因此,如果推荐结果中物品的平均热门程度较低,那么推荐结果就可能有比较高的新颖性。
通过牺牲精度来提高多样性和新颖性是很容易的,而困难的是如何在不牺牲精度的情况下提高多样性和新颖性。
惊喜度与新颖性有什么区别是首先需要弄清楚的问题。
如果推荐结果和用户的历史兴趣不相似,但却让用户觉得满意,那么就可以说推荐结果的惊喜度很高,而推荐的新颖性仅仅取决于用户是否听说过这个推荐结果。
用户满意度只能通过问卷调查或者在线实验获得
因此提高推荐惊喜度需要提高推荐结果的用户满意度,同时降低推荐结果和用户历史兴趣的相似度。
同样的推荐结果,以让用户信任的方式推荐给用户就更能让用户产生购买欲,而以类似广告形式的方法推荐给用户就可能很难让用户产生购买的意愿。
提高推荐系统的信任度主要有两种方法。
首先需要增加推荐系统的透明度(transparency),而增加推荐系统透明度的主要办法是提供推荐解释。
Epinion为了防止垃圾评论或者广告评论影响用户的决策,在每条用户评论的右侧都显示了评论作者的信息,并且让用户判断是信任该评论人还是将他加入黑名单。
在很多网站中,因为物品(新闻、微博等)具有很强的时效性,所以需要在物品还具有时效性时就将它们推荐给用户。
推荐系统的实时性包括两个方面。
健壮性(即robust,鲁棒性)指标衡量了一个推荐系统抗击作弊的能力。
在使用数据前,进行攻击检测,从而对数据进行清理。
时间维度 包括季节,是工作日还是周末,是白天还是晚上等。
08 发展惯性20世纪90年代
实现个性化推荐的最理想情况是用户能在注册的时候主动告诉我们他喜欢什么
首先,现在的自然语言理解技术很难理解用户用来描述兴趣的自然语言;其次,用户的兴趣是不断变化的,但用户不会不停地更新兴趣描述;最后,很多时候用户并不知道自己喜欢什么,或者很难用语言描述自己喜欢什么。
基于用户行为数据的应用其实早在个性化推荐系统诞生之前就已经在互联网上非常流行了,其中最典型的就是各种各样的排行榜
顾名思义,协同过滤就是指用户可以齐心协力,通过不断地和网站互动,使自己的推荐列表能够不断过滤掉自己不感兴趣的物品,从而越来越满足自己的需求。
09 转折点21世纪初
表2-2 各代表网站中显性反馈数据和隐性反馈数据的例子
10 薪火相传21世纪10年代
一般认为,新用户倾向于浏览热门的物品,因为他们对网站还不熟悉,只能点击首页的热门物品,而老用户会逐渐开始浏览冷门的物品。
基于用户的协同过滤算法 这种算法给用户推荐和他兴趣相似的其他用户喜欢的物品。 基于物品的协同过滤算法 这种算法给用户推荐和他之前喜欢的物品相似的物品。
- 书籍-穷查理宝典 (1.000)
- 《精益数据分析》热门划线 (1.000)
- 福格行为模型:行为设计学基础 (1.000)
- 《清单革命》笔记要点和热门划线 (1.000)
- 《认知觉醒》热门划线 (1.000)
- 金字塔原理 (RANDOM - 0.168)