You are on page 1of 49

商业智能与数据挖掘

——推荐系统
推荐系统

 推荐系统可以向用户建议有用的物品,如购买什么物品、听什么音乐、在
网上浏览什么信息
推荐系统

 Amazon.com提供图书的平均评分,以及购买过某本特定书籍的用户购买
的其他书籍的列表

 微软研究报告曾估计, Amazon.com 有 30%的网页浏览量来自于推荐

A. Sharma, J.M. Hofman, D.J. Watts, “Estimating the Causal Impact of Recommendation Systems from
Observational Data,” Proc. 16th ACM Conf. Economics and Computation, 2015, pp. 453–470.
推荐系统

 Netflix 也广泛应用推荐系统,通过现实电影的预测评分帮助用户决定款看
哪部电影
 Netflix首席产品官 Neil Hunt 表示,Netflix 80%以上的电影观看都是通
过推荐生成的,而且 Netflix 推荐系统每年产生的价值超过 10 亿美元。

C.A. Gomez-Uribe and N. Hunt, “The Netflix Recommender System: Algorithms,


#Business |Value, and Innovation,” ACM Trans. Management Information Systems, vol.
6, no. 4, 2016, pp. 1–19.
推荐系统

 Netfilx成立于1997年,是一家在线收费视频网站,提供视频点播、流媒体
服务、视频推荐等。
 由Reed Hastings创立
 在Blockbuster租碟,超期归还被黑40美元逾期费
 由按件计费向会员制转变

 现有推荐系统Cinematch
 Netflix大赛,改进Cinematch
 第一届大赛开始于2006年,把现有推荐系统的准确率提高10%,奖金100万美金
 2009年,一个七人团队获奖BPC (BellKor's Pragmatic Chaos)
 对Cinematch算法的改进10.06%
 开赛后的几个月,算法准确性提高了 5%
 一年多时,较好的答案已经非常接近 9%
推荐系统

 第一次比赛,Netflix公开了大约1亿个1-5的匿名影片评级,数据集
仅包含了影片名称。评价星级和评级日期,没有任何文本评价的内容。

 第一个Netflix大奖解决了为提供了50个以上评级的观众准确的预测他
们的口味

 下一个百万大奖目标是,为那些不经常做影片评级或者根本不做评级
的顾客推荐影片,要求使用一些隐藏着观众口味的地理数据和行为数
据来进行预测。
推荐系统

 推荐系统通常包含三类数据

 要推荐的物品或内容
 系统用户的基本信息
 用户对物品或者信息的偏好

• 显式用户反馈:喜欢/不喜欢、评分、评论
• 隐式用户反馈:购买、浏览、收藏……
推荐方法分类

 推荐方法通常包含三种

 基于人口统计学的推荐(Demographic-based Recommendation)
• 根据系统用户的基本信息发现用户的相关程度

 基于内容的推荐(Content-based Recommendation)
• 根据推荐物品或内容的元数据,发现物品或者内容的相关性

 基于协同过滤的推荐(Collaborative Filtering-based Recommendation)

• 根据用户对物品或者信息的偏好,发现物品或者内容本身的相关性,或者
是发现用户的相关性
基于内容的推荐
 利用用户已知的偏好、兴趣等属性与物品内容属性相匹配,以此为用户推
荐新的感兴趣物品

电影A
电影A 类型: 爱情、 浪漫

用户A

电影B
电影B
类型: 恐怖、 惊悚

用户B

电影C
电影C
类型: 爱情、 浪漫

用户C
基于内容的推荐
 基于内容的推荐一般包含以下三步:
 物品表示:为每个物品抽取一些特征来表示此物品

 学习用户特征:利用一个用户过去喜欢(及不喜欢)的物品特征数据,学
习出此用户的喜好特征

 生成推荐:通过比较用户特征与候选物品的特征,为此用户推荐一组相关
性最大的物品。
基于内容的推荐
 物品表示

 结构化特征:e.g. 一个电影的特征有演员、导演、类型、主题等

 大多数情况下,物品表示是从网页、电子邮件、新闻或产品描述中抽取的
文本

 非结构化特征: e.g. 向量空间模型(VSM)


基于内容的推荐
 学习用户特征

 学习用户特征的问题可转化为一个二元分类任务:每一个物品都根据用户
的偏好被分成感兴趣(c+)或不感兴趣(c-)

• 最近邻方法
• 朴素贝叶斯
• 决策树算法
• 线性分类算法
基于内容的推荐
 优点

 用户独立性:基于内容的推荐仅使用当前用户提供的评分来构建用户特征,
而协同过滤方法需要其他用户的评分,来发现该用户的近邻。

 透明性:通过显式列出使得物品出现在推荐列表中的内容特征或描述,可
以解释推荐系统是如何工作的。

 新物品:在新物品没有任何用户评分的情况下,基于内容的推荐系统也可
以进行推荐。
基于内容的推荐
 缺点

 物品特征抽取一般很难

 过度特化:无法发现一些出人意料的物品,系统建议的物品与用户特征高
度匹配的时候,给用户推荐的也会是与已有评分物品相似的物品。

 无法为新用户生成推荐:在真正理解用户偏好切给出准确推荐之前,需要
收集足够的评分,当只有很少的评分可用时,系统无法提供可靠的推荐。
基于协同过滤的推荐

 如果你现在想看个电影,但你不知道具体看哪部,你会怎么做?
• 问问周围的朋友,看看最近有什么好看的电影推荐
• 我们一般更倾向于从口味比较类似的朋友那里得到推荐

 协同过滤根据用户对物品的偏好,发现物品或内容本身的相关性,或者是
发现用户的相关性,再基于这些关联性进行推荐

 基于协同过滤的推荐可以分为两个子类:
• 基于近邻的推荐
• 基于用户的推荐(UserCF)、基于物品的推荐(ItemCF)
• 基于模型的推荐
基于近邻的协同过滤

 20世纪90年代中期,协同过滤通常使用基于用户的推荐

 1998 年,Amazon.com 推出了基于物品的协同过滤算法,使推荐系统能


够基于上百万的商品为数百万用户提供推荐服务。

 2003 年,Greg Linden、Brent Smith 和 Jeremy York 将该算法发表


在“IEEE Internet Computing”,论文名称为“Amazon.com
Recommendations: Item-to-Item Collaborative Filtering”

 随后,基于物品的推荐在网络上被广泛使用在不同的产品中,包括
Youtube、Netflix 和很多其他产品。
基于近邻的协同过滤
 基于用户的推荐(UserCF) 电影A

用户A
 基于用户的推荐利用与用户𝑢兴趣相 电影B
近,且对物品𝑖作过评分的用户,预测
用户𝑢对新物品𝑖的评分。
电影C
用户B

 Eric是否要看电影Titanic?
电影D

The Forrest
Titanic Die Hard Wall-E
Matrix Gump
John 5 1 2 2
Lucy 1 5 2 5 5
Eric 2 ? 3 5 4
Diane 4 3 5 3
基于近邻的协同过滤
 基于用户的推荐

 与用户𝑢兴趣相近的用户称为近邻,假设𝑤𝑢𝑣 表示用户𝑢和用户𝑣的兴趣相近
程度,则𝑘个与用户𝑢相似度𝑤𝑢𝑣 最高的用户𝑣称为用户𝑢的𝑘近邻,表示为
𝒩(𝑢)
 𝑘近邻中只有对物品𝑖作了评分的用户𝒩𝑖 (𝑢)才能够用于预测评分𝑟𝑢𝑖

 利用近邻对物品𝑖的平均评分预测𝑟𝑢𝑖
基于近邻的协同过滤
 基于用户的推荐

 平均评分没有考虑用户𝑢与每个近邻用户评分相似程度不同。

 根据用户𝑢和𝑣的相似程度𝑤𝑢𝑣 进行加权
基于近邻的协同过滤
 基于用户的推荐

The Matrix Titanic Die Hard Forrest Gump Wall-E

John 5 1 2 2
Lucy 1 5 2 5 5
Eric 2 ? 3 5 4
Diane 4 3 5 3

 预测Eric对电影Titanic的评分,使用Lucy和Diane这两个近邻用户对这部
电影的评分,假设这些近邻与Eric相近权重分别为0.75和0.15,则预测评
分为
基于近邻的协同过滤
 基于物品的推荐(ItemCF)
电影A

 基于物品的推荐通过评分相近的物品预测用户𝑢
对物品𝑖的评分 用户A

电影B
 Eric通过已经看过的电影决定Titanic对他是
否合适,他发现对Titanic评分的人也对电影
Forrest Gump 和Wall-E给予相近评分,由 用户B
电影C

于Eric 也喜欢这两部电影,因此他认为自己
也会喜欢Titanic 电影D

用户C

The Matrix Titanic Die Hard Forrest Gump Wall-E

John 5 1 2 2
Lucy 1 5 2 5 5
Eric 2 ? 3 5 4
Diane 4 3 5 3
基于近邻的协同过滤
 基于物品的推荐

 为用户𝑢已经评分且和物品𝑖评分相近的物品。用户𝑢对物品𝑖的评分可
通过对 中物品的评分进行加权平均运算
基于近邻的协同过滤
 基于物品的推荐

 使用两个近邻Eric对Titanic的评分进行预测, Titanic的相似项目Forrest
Gump 和Wall-E的相似权重分别为0.85和0.75,则预测评分可计算为

The Matrix Titanic Die Hard Forrest Gump Wall-E

John 5 1 2 2
Lucy 1 5 2 5 5
Eric 2 ? 3 5 4
Diane 4 3 5 3
基于近邻的协同过滤

 如何计算用户或物品之间的相似度权重?

 如何确定𝑘近邻?

 评分标准化
基于近邻的协同过滤
 计算相似度

 余弦相似度

• 将用户𝑢表示为向量 ,其中 为用户𝑢对物品𝑖


的评分,0表示没有评分,则用户𝑢和𝑣之间的相似度可计算为

• 表示用户𝑢和𝑣都评分的物品。
基于近邻的协同过滤
 计算相似度

 皮尔逊相似度

• 余弦相似度没有考虑用户𝑢和𝑣的评分均值以及方差间的差异,皮尔逊
相似度能够去除均值和方差差异的影响。

• 用户相似度

• 物品相似度
基于近邻的协同过滤
 k近邻选择方法

 Top-K 过滤:不论远近,只取最近的 K 个作为其近邻。

 阈值过滤:保留相似度权重大于给定阈值的近邻。
基于近邻的协同过滤
 评分标准化

 一个用户可能只给少量物品最高分,而一些用户会对自己喜欢的物品都给
予最高分。

 可将近邻评分进行标准化转换

• 均值中心化

• Z-score 标准化

 评分标准化能够将不同的个人评分标准转换到更一般的整体评分标准。
基于近邻的协同过滤
 均值中心化

 通过与平均分的比较决定一个评分为正还是为负,移除了针对平均评分的
不同感受而导致的偏差
 设 为用户对物品 𝑖 的原始评分,可通过减去全部评价的平均分 ,
转化为均值中心化评分

 对新物品的评分预测调整为

 对基于物品的推荐而言,均值中心化后的预测评分为
基于近邻的协同过滤
 均值中心化

 虽然Diane对Titanic 和Forrest Gump的评价分数为3分,但用户平均


中心化评分结果显示其对于电影的偏好是负值,因为她的评分总体上
高于所有用户的整体平均分。

用户均值中心化

The Matrix Titanic Die Hard Forrest Gump Wall-E

John 2.5 -1.5 -0.5 -0.5


Lucy -2.6 1.4 -1.6 1.4 1.4
Eric -1.5 0.5 1.5 0.5
Diane 0.25 -0.75 1.25 -0.75
基于近邻的协同过滤
 Z-score标准化

 Z-score标准化不仅考虑对平均评分不同感受导致的偏差,还考虑个人评
分范围不同带来的差异。

 基于用户的预测评分

 同样地,基于物品的预测评分
基于近邻的协同过滤
 基于用户的推荐 vs 基于物品的推荐

 准确性:对于用户数量大于物品数量的推荐系统(如Amazon.com),基
于物品的推荐方法更加准确,而对于物品数量远大于用户数量的推荐系统
(如新闻、博客或微内容),基于用户的推荐更加准确

 效率:基于物品的推荐,大部分计算(如批量构建相关项目)可离线完成,
并通过一系列的查询快速生成推荐

 解释性:基于物品的推荐方法易于证明推荐的合理性,预测中用到的近邻
物品列表以及相似度权重,都可作为推荐结果的解释提供给用户。

 惊喜度:基于用户的推荐能够产生更加新颖的推荐。
基于近邻的协同过滤
 优点

 当物品内容不完全或难以获得时,仍可通过其他用户的反馈来进行推荐。

 基于用户的推荐和基于物品的推荐以用户对物品的评价为基础,而不仅仅
依赖可能会干扰判断的内容

 可推荐内容差异很大的物品
基于近邻的协同过滤
 缺点

 基于历史数据进行推荐,对新物品和新用户都有“冷启动”问题。

 覆盖受限:仅仅被近邻用户评价过的物品才会被推荐;有些用户没有共同
评分但依然有相似爱好。

 对稀疏数据敏感:数据稀疏时,两个用户或物品之间很难有相同的评分,
预测评分时仅使用了很少量有限的近邻。
基于模型的协同过滤
 隐式语义模型(LFM)

 每个用户都有自己的偏好,如张三喜欢小清新、带有吉他伴奏、王菲等因
子,如果一首歌带有这些因子,则可将这首歌推荐给该用户,也就是用因
子去连接用户和音乐

 不能靠由单个人的主观想法建立起来的分类标准对全部用户喜好进行标准
化。

 隐语义模型(LFM,Latent Factor Model)通过对用户和物品的因式分


解(MF,Matrix Factorization),找到各自的隐含特征,进而将二者联
系起来。
基于模型的协同过滤
 隐式语义模型(LFM)

 一个 的用户-物品评分矩阵𝑅(秩为𝑛)可近似表示为
(秩为𝑘 < 𝑛)

 𝑃是一个 用户因子的矩阵,矩阵值 表示用户𝑖对因子𝑗的兴趣度

 𝑄是一个 物品因子的矩阵,矩阵值 表示物品𝑗在因子𝑖中的权重,权


重越高说明越能作为此类因子的代表
基于模型的协同过滤
 隐式语义模型(LFM)
用户因子矩阵P

物品因子矩阵Q

数据来源:互联网
基于模型的协同过滤

 首先建立用户的评分矩阵

 求解分解方案

数据来源:互联网
基于模型的协同过滤
 隐式语义模型(LFM)

 方法一:
 矩阵𝑃和𝑄通常通过最小化损失函数得到

 梯度下降法求解

 方法二:
 利用矩阵的奇异值分解(SVD)
 U是m*r矩阵,V是n*r矩阵,中间为r*r的对角阵

 选择前𝑘个最大奇异值机对应的奇异向量矩阵表示为 , , ,则对应
的用户因子矩阵和物品因子矩阵可表示为U和前k个因子的乘积,V和前k
个因子的乘积
LFM vs 基于近邻的协同过滤

 LFM和基于近邻的协同过滤算法比较
 1. UserCF和ItemCF的空间复杂度较大。

 2. 离线计算时间两者相当,LFM会更加费时,但是没有质的差别。

 3. LFM给用户推荐列表结果比较慢,不适合实时系统。如果应用在实时系统,
也是先用别的方法给用户一个小的结果集合,然后LFM再优化排序。

 4. ItemCF有很好的推荐理由,UserCF和LFM则没有。

 5. 数据集稀疏的时候LFM的性能会明显下降。
推荐系统评估
 评分预测准确度

 均方根误差(RMSE )

 平均绝对误差(MAE )
推荐系统评估
 排序预测

 令 是预测得到的推荐列表,而 是用户真实的产品偏好列表,则推
荐结果的查全率和查准率分别为
推荐系统评估
 覆盖率

 一些算法可能提供高质量的推荐,但只推荐一小部分具有大量数据的物品

 覆盖率描述推荐系统对网站平台上长尾商品的挖掘能力

 令系统的用户集合为 ,商品集合为 ,推荐系统给每个用户推荐一个长


度为 的商品列表 ,则覆盖率为
推荐系统评估
 多样性

 多样性描述推荐结果中商品两两之间的不相似性,以覆盖用户多个方面的
兴趣点,增加用户找到感兴趣产品的概率。

 假设 定义商品 和 之间的相似度,则用户 的推荐结果


集合 的多样性可定义为:

 推荐系统整体的多样性可由所有用户推荐结果的多样性的平均值得到:
推荐系统评估
 新颖性和惊喜度

 如果用户没有听说过推荐列表中的大部分物品,则说明该推荐系统的新颖
性较好。
 可通过推荐结果的平均流行度获得新颖性,如果推荐结果中物品的平均热
门程度较低,则推荐结果拥有较高的新颖性。

 如果推荐结果和用户的历史兴趣不相似,但让用户很满意,则可以说这是
一个让用户惊喜的推荐
 推荐的新颖性仅仅取决于用户是否听说过这个推荐结果。
 一般定性通过推荐结果与用户历史兴趣的相似度和用户满意度来衡量惊喜

推荐系统总结
 推荐方法
 基于人口统计学的推荐
 基于内容的推荐
 基于协同过滤的推荐
 基于用户的推荐
 基于商品的推荐
 基于语义模型的协同过滤

 推荐系统评估测度
 RMSE
 MAE
 查全率
 查准率
 覆盖率
 多样性
 新颖性和惊喜度
课程总结
 引言
 聚类
 K-means、凝聚式聚类、DBScan
 向量空间模型、Entropy、Purity
 关联分析
 Apriori
 支持度、执行度、兴趣度
 分类
 决策树、贝叶斯、关联规则分类CBA、K近邻、支持向量机
 Sensitivity、specificity、accuracy、error rate、precision、recall
 社会网络分析
 中心识别、权威识别、链接模式、链接分析PageRank、HITS
 信息检索
 检索模型、倒排索引、搜索结果排序、查全率、查准率
 时态模式挖掘
 时态关联规则挖掘、序列相似性(WTD算法)、时态数据模式分析
 竞争智能分析
 基于搜索日志的竞争者识别、竞争程度分析
 推荐系统
 基于内容的推荐、基于协同过滤的推荐
 Weka数据挖掘分析工具
数据分析的核心技能

编程语言 算法 模型
(C/C++/C#/JAVA/P (Data Mining/ (Statistics/Econom
ython/R/Perl) Machine Learning) etrics)

数据库和数据平台
(SQL/MapReduce/Spark)

商业和业务
(Business/Transactions)
关于技术

 技术是工具
 不是为了开发“工具”
 而是用“工具”去解决管理问题

 不要惧怕技术
 技术很简单
 信心很重要

 数据分析的重要性
 具有一项Hard Skill
 商科同学的就业重要方向

 保持思考的状态
 无论对技术还是商业

You might also like