推荐系统手册
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
推荐系统手册(0)--前言
推荐系统是近几年比较新的一个领域,目前比较完整的介绍这个领域的资料,主要是一些综述性paper。这些paper 往往都各有侧重点,大多比较偏重推荐算法这一个层面,不够全面。
2011年的时候,国外一些在个性化推荐领域浸淫多年的人合作写了《Recommender System Handbook》一书,弥补了这方面的一个空白。其实这个东西与其说是一本书,不如说是一个资料集。它的写作方式看起来是几个大牛先拍下来应该包含哪几部分,每一部分包括哪些topic,然后把每一个topic分给对应的人写命题作文。这样的后果就是这本手册的每一章都是不同的作者写的,导致全书的连贯性和一致性较差,也就不够权威了。
然而尽管权威性不足,这本书仍然是目前能够找到的最全面的推荐系统方面的资料。鉴于此,我决定通读一遍这本书。在阅读的过程中,对每一章结合自己的理解,写一篇读书笔记。
以此作为前言。
推荐系统手册(1)—简介
现代生活带来的一个深刻改变是:人们的选择越来越多。我们选择看哪部电影,买哪个手机,看哪条新闻,租哪处房子…我们拥有的决策自由越来越多,随之而来的是,我们为这些决策付出的代价越来越多。相信大家都有过同样的经历,为了买一样东西,将网上琳琅满目的商品页面从第一页翻到最后一页,最后精疲力竭,还是购买了最初看中的那一个。有句俗话说得好:只有一个选择的人是最幸福的。
1.推荐系统
推荐系统的兴起,即是为了把人们从信息过载的陷阱中解决出来,帮助人们进行简单决策。它的主要原理是根据用户过去的行为(比如购买、评分、点击等)来为用户建立兴趣模型,并利用一定的推荐算法,把用户最可能感兴趣的内容推荐给用户,如下图。
图1 推荐系统简图
2.数据
为了完成上面的计算,我们需要三部分数据:
(1)用户数据:用户数据用来建立用户模型,这些数据根据不同的推荐算法而不同,典型的数据包括用户兴趣点、用户profile、用户的社交好友关系等。
(2)内容数据:内容数据是用来描述一个被推荐内容主要属性的数据,这些属性主要都是跟具体的内容相关的,如
一部电影的导演、演员、类型和风格等。
(3)用户--内容数据:用户--内容交互是能反映用户与内容内在联系的数据,其分为隐式和显式两种。显式主要是
指评价、打分、购买等能明显反映用户对内容兴趣的交互数据,隐式指的是用户的点击、搜索记录等间接反
映用户对内容兴趣的交互数据。
3.算法
有了基础数据之后,我们可以考虑不同的推荐算法。根据数据和利用数据的方式的不同,当前主流的推荐算法可以分为以下六类(不是主流的划分方法):
(1)基于内容的推荐(content-based):根据用户过去喜欢的内容,推荐相似的内容
(2)基于协同过滤的推荐(collaborative filtering ):根据与当前用户相似的用户的兴趣点,给当前用户推荐相
似的内容
(3)基于人口统计学的推荐(demographic-based):根据用户共同的年龄、地域等人口统计学信息进行共同的推荐
(4)基于知识的推荐(knowledge-based):根据对用户和内容的特定领域知识,给特定的用户推荐特定的内容
(5)基于团体的推荐(community-based):根据用户的社交好友关系,给用户推荐其好友感兴趣的内容
(6)混合推荐(hybrid recommender system):以上各种推荐算法的特定组合
有了基础数据和算法选择后,我们在理解了特定领域知识、可用数据、应用需求的基础上,分析潜在的挑战和限制后,才能选择合适的推荐算法进行推荐系统的开发。
4.相关领域
推荐系统(RS)是一个较新的领域,它利用并结合了多个领域的技术,其中最主要的包括信息检索(IR)、机器学习(ML)和人机交互(HCI)。
RS和IR同是为了解决人们面对信息过载的解决方法,它们有很多共同点。它们利用的很多技术,如相关性计算、多样性页面展现等,都是可以互为借鉴的。同时,它们会遇到很多类似的问题,如关联计算的规模过大,在IR中是通过倒排索引来减小计算规模,这一点在IR中同样可以借用。不同的是信息检索是利用显式的query来表达用户的需求,而推荐系统是利用机器隐式分析用户的兴趣来表达用户的需求。这一点决定了RS是一个比IR更难的问题,一是用户的兴趣比query更难准确的表达;二是用户的规模往往比query的规模要大几个数量级。
RS利用了ML中的很多算法和思想,如KNN聚类、机器学习点击率预估等,都是RS中常用的机器学习方法。
在推荐系统开发完成后,我们还需要考虑人机交互接口的问题。第一,系统要建立用户对推荐系统的信任;除了给用户靠谱的推荐结果外,我们从界面设计上要给出推荐的解释,即告诉用户系统为什么给他推荐某项内容,以此来说服用户信任推荐系统;第二,系统要给用户反馈的机制。当某项推荐靠谱并得到用户行为的证实(购买、评价高分等)时,系统要从用户的行为中得到正反馈来增进系统的准确性;同时,当某项推荐不靠谱时,我们要给用户提供一个负反馈的界面,来对推荐结果进行批评。第三,推荐的展现效果要满足用户的视觉需求,堆积的过满或者过松,字体太大或者太小,有没有缩略图等,都会对用户对推荐的满意度产生一定的影响。
推荐系统手册(2)—推荐系统的数据挖掘方法
引言
通常来说,数据挖掘(Data Mining,DM)最早是机器学习(Machine Learning,ML)算法在具体领域中的应用。后来,在这些具体应用过程中逐渐总结出一套通用的流程,和数据挖掘一起形成了一个新的领域,叫数据库中的知识发现(Knowledge Discovery in Database),其主要流程:
其中,数据预处理主要是针对原始数据中的一些问题,如噪声、离群点、遗漏值、不一致值和重复值等数据质量的问题,通过抽样、维度规约、归一化、离散化和变量变换等方式,将数据转换成为适合数据挖掘直接利用的数据。数据挖掘即是机器学习算法在具体问题中的应用,通常包括分类、聚类和异常检测等。数据后处理是数据挖掘后的结果进行进一步的处理,使得数据挖掘的结果应用到问题的解决之中。
推荐系统算法策略通常会用到数据挖掘、机器学习、信息检索和自然语言处理等领域中的很多知识,尤其是数据挖掘。
1. 数据预处理
推荐系统相关的数据预处理技术除了通常的归一化、变量替换等以外,最主要的是相似度计算、抽样和维度规约。
(1).相似度计算
相似度通常有两种衡量方式,一是直接计算相似度,二是计算距离,距离是本质上是相异程度的度量,距离越小,相似度越高。
1) 相似度度量
l余弦相似度