原文链接:
https://www.ibm.com/developerworks/cn/web/1103_zhaoct_recommstudy1/index.html#icomments
一、推荐引擎初探
1. 推荐引擎
1.1 定义
推荐引擎利用特殊的信息过滤技术,将不同的物品或内容推荐给可能对它们感兴趣的用户。
1.2 原理
物品信息/用户信息/用户对物品的偏好 ——> 推荐引擎 ——> 特定物品推荐给特定用户。
1.3 数据源
a. 待推荐物品或内容的元数据:如关键字、基本描述等;
b. 系统用户的基本信息:如性别、年龄等;
c. 用户对物品或信息的偏好:
- 显式的用户反馈:用户显式地提供的反馈信息,如对物品的评分或者评论等;
- 隐式的用户反馈:使用网站时产生的数据,隐式反应对物品的喜好,如购买某物品、查询某物品信息等。
1.4 推荐引擎分类
a. 是否为不同用户推荐不同数据
- 根据大众行为的推荐引擎,对每个用户都给出同样的推荐,这些推荐可以是静态的由系统管理员人工设定,或者基于系统所有用户的反馈统计来计算出当下比较流行的物品。
- 个性化推荐引擎,了解不同推荐内容和用户的特质,或者基于社会化网络,通过找到与当前用户相同喜好的用户,实现推荐。
b. 根据数据源(发现数据的相关性)
- 根据系统用户的基本信息发现用户的相关程度,这种被称为基于人口统计学的推荐;
- 根据推荐物品或内容的元数据,发现物品或者内容的相关性,这种被称为基于内容的推荐;
- 根据用户对物品或者信息的偏好,发现物品或者内容本身的相关性,或者发现用户的相关性,这种被称为基于协同过滤的推荐。
c. 根据建立方式
- 基于物品和用户本身,这种推荐引擎将每个用户和每个物品都当作独立实体,预测每个用户对于每个物品的喜好程度,这些信息往往用二维矩阵(稀疏矩阵)描述。为了减小计算量,可以对用户和物品进行聚类。
- 基于关联规则的推荐。挖掘一些数据的依赖关系,然后基于规则给用户进行推荐。
- 基于模型的推荐。将已有用户喜好作为训练样本,训练出一个预测用户喜好的模型。
2. 深入推荐机制
2.1 基于人口统计学的推荐
a. 基本原理
- 根据系统用户的基本信息发现用户的相关程度,然后将相似用户喜爱的其他物品推荐给当前用户。
b. 优点
- 因为不使用当前用户对物品的喜好历史数据,所以对于新用户没有“冷启动”问题。
- 不依赖物品本身的数据,所以这个方法在不同领域都可以使用,是领域独立的。
c. 缺点
- 基于用户的基本信息对用户进行分类的方法过于粗糙,尤其是对品味要求较高的领域。
- 涉及到一些比较敏感的信息,不是很好获取。
2.2 基于内容的推荐
a. 基本原理
- 根据推荐物品或内容的元数据,发现物品或者内容的相关性,然后基于用户以往的喜好记录,推荐给用户相似的物品。
b. 优点
- 建模用户的偏好,提供更加精确的推荐。
c.缺点
- 需要对物品进行分析和建模,推荐的质量依赖于对物品模型的完整和全面程度。常见的描述物品元数据方法:关键词和标签。
- 物品相似度的分析仅仅依赖于物品本身的特征,没有考虑人对物品的态度。
- 因为基于用户以往的喜好历史作出推荐,所以存在“冷启动”问题。
2.3 基于协同过滤的推荐
a. 基本原理
- 根据用户对物品或者信息的偏好,发现物品或者内容本身的相关性,或是发现用户的相关性,然后基于这些相关性进行推荐。
b.基于用户的推荐
- 根据所有用户对物品或者信息的偏好,发现与当前用户偏好相似的“邻居”用户群,然后基于邻居的历史偏好信息,为当前用户进行推荐。
- 与人口统计学推荐类似,都是计算用户的相似度。不同的是如何计算用户的相似度。
c. 基于项目的推荐
- 使用所有用户对物品或者信息的偏好,发现物品与物品之间的相似度,然后根据用户的历史偏好信息,将类似的物品推荐给用户。
- 与基于内容的推荐类似,都是基于物品相似度推荐。不同的是相似度计算方法。
d. 基于模型的推荐
- 基于模型的协同过滤推荐基于样本用户的喜好信息,训练一个推荐模型,然后根据实时的用户喜好信息进行预测,计算推荐。
e. 优点
- 不需要对物品或者用户进行严格的建模,所以基于协同过滤的推荐是领域无关的。
- 该方法计算出来的推荐是开放的,可以共用他人的经验,很好的支持用户发现潜在的兴趣偏好。
f. 缺点
- 基于历史数据的方法,对新物品和新用户存在“冷启动”问题。
- 推荐效果依赖于用户历史偏好数据的规模和准确性。
- 稀疏矩阵导致的问题,如少部分人的错误偏好会对推荐的准确度有很大的影响。
- 特殊品味的用户不能给予很好的推荐。
- 抓取和建模用户的偏好后,很难修改或者根据用户的使用演变,从而导致该方法不灵活。
2.4 混合的推荐机制
a. 加权的混合:用线性公式将几种不同的推荐按照一定权重组合起来。
b. 切换的混合:允许在不同情况下,选择最为合适的推荐机制进行推荐。
c. 分区的混合:采用多种推荐机制,并将不同的推荐结果分不同的区显示给用户。
d. 分层的混合:采用多种推荐机制,并将一个推荐机制的结果作为另一个的输入。
3. 推荐引擎的应用
3.1 电子商务——Amazon
a. 核心是通过数据挖掘算法和比较用户与其他用户的消费偏好,借以预测用户可能感兴趣的商品。Amazon采用的是分区的混合推荐机制。
b. 利用可以记录的所有用户在站点上的行为,根据数据特点分成不同区为用户推荐。
- 今日推荐:通常根据用户近期的历史购买或者查看记录,并结合时下流行物品给出折衷推荐。
- 新产品的推荐:采用基于内容的推荐机制。
- 捆绑销售:采用数据挖掘技术对用户的购买行为进行分析,找到经常一起购买的物品集,进行捆绑销售。——基于项目的协同过滤。
- 别人购买/浏览的商品:基于项目的协同过滤。
二、 深入推荐引擎相关算法:协同过滤
1. 集体智慧
在大量的人群的行为和数据中收集答案,帮助你对整个人群得到统计意义上的结论,这些结论是在单个个体上无法得到的,往往是某种趋势或者人群中共性的部分。
典型应用:Wikipedia、Google
2. 协同过滤
在海量的用户中发掘出一小部分和待推荐用户品味比较类似的,这些用户作为待推荐用户的邻居,然后根据他们喜欢的其他东西组织成一个排序的列表作为推荐。
2.1 核心问题
- 如何确定一个用户和另一个用户是不是有相似的品味?
- 如何将邻居的喜好组成一个排序的目录?
3. 深入核心
3.1 收集用户偏好
a. 如何收集用户的偏好信息成为系统推荐效果最基础的决定因素。
b. 用户行为和偏好
- 显式:评分、投票、转发、保存书签、标记标签、评论
- 隐式:点击流(查看)、页面停留时间、购买
c. 数据预处理
- 减噪、归一化
3.2 找到相似的用户或物品
a. 相似度的计算
- 欧几里得距离
![]()
- 皮尔逊相关系数
其中是
和
的样品标准偏差。
- cosine相似度
![]()
- Tanimoto系数(Jaccard系数)
![]()
b. 相似邻居的计算
- 固定数量的邻居:无论邻居的“远近”,只取最近的K个。
- 基于阈值的邻居:以当前点为中心,距离为K的区域中的所有点都作为邻居。
3.3 计算推荐
a. 基于用户的协同过滤
- 将一个用户对所有物品的偏好作为一个向量来计算用户之间的相似度。
b. 基于物品的协同过滤
- 将所有用户对某个物品的偏好作为向量来计算物品之间的相似度。
c. 计算复杂度
- 对于提供商品的电子商务网站,用户数量大大超过物品数量,同时物品的数据相对稳定,因此计算物品相似度不但计算量较小,同时不必频繁更新。
- 对于新闻、博客等内容推荐系统,物品数量是海量的,同时也是更新频繁的。
d. 多样性和精度
- 多样性度量方法
I. 单个用户的角度度量:给定一个用户,查看系统给出的推荐列表是否多样。User CF的多样性优于Item CF,因为Item CF的推荐与之前的东西最相似。
II. 系统的多样性,也称为覆盖率:一个推荐系统能够提供给所有用户丰富的选择。Item CF的多样性优于User CF,因为User CF倾向于推荐热门,Item CF的推荐具有很好的新颖性。
III. Item CF的精度略小于User CF,但Item CF的多样性好于User CF。
- 用户对推荐算法的适应度
I. User CF假设用户会喜欢那些与他有相同喜好的用户喜欢的东西,因此用户对User CF的适应度与其有多少共同喜好用户成正比。
II. Item CF假设用户会喜欢和他以前喜欢的东西相似的东西,即用户喜欢的物品的自相似度。用户喜欢物品的自相似度越大,则对Item CF的适应度越好。