知乎:如何学习推荐系统?
案例:推荐系统实战? 数据准备;实现推荐栏位;重构接口;后续优化。
简书:实现实时推荐系统的三种方式?基于聚类和协同过滤;基于Spark;基于Storm;基于Kiji框架。
精品博客,事无巨细:推荐系统:协同过滤collaborative filtering 基于内容的推荐content-based,协同过滤collaborative filtering,隐语义模型(LFM, latent factor model)推荐。这篇博客主要讲协同过滤。事无巨细,有条不紊。
自从1992年施乐的科学家为了解决信息负载的问题,第一次提出协同过滤算法,个性化推荐已经经过了二十几年的发展。
推荐系统概述和常用评价指标
1.1 推荐系统的特点
在知乎搜了一下推荐系统,果真结果比较少,显得小众一些,然后大家对推荐系统普遍的观点是:
(1)重要性:UI >数据 >算法,就是推荐系统中一味追求先进的算法算是个误区,通常论文研究类的推荐方法有的带有很多的假设限制,有的考虑工程实现问题较少,推荐系统需要大量的数据整理和转化,同时更需要考虑公司业务特性以及与现有系统的集成,方能形成推荐系统和业务之间的良性循环;
(2)推荐系统离线测试很好,上线后要么没有严格的测试结果而只能凭感觉,要么实际效果差强人意,我想主要缘于离线测试比较理想,而在线AB冠军测试无论对于前端还是后台要求都很高,没有雄厚的研发实力难以实现;
(3)推荐系统受到的外部干扰因素特别多(季节、流行因素等),整个系统需要不断的迭代更新,没有一劳永逸的事情。
Mahout 是 Apache Software Foundation (ASF) 开发的一个全新的开源项目,其主要目标是创建一些可伸缩的机器学习算法,供开发人员在 Apache 在许可下免费 使用。Mahout项目是由 Apache Lucene社区中对机器学习感兴趣的一些成员发起的,他们希望建立一个可靠、文档翔实、可伸缩的项目,在其中实现一些常见的用于 聚类和分类的机器学习算法。该社区最初基于 Ngetal. 的文章 “Map-Reduce for Machine Learning on
Multicore”,但此后在发展中又并入了更多广泛的机器学习 方法,包括Collaborative Filtering(CF),Dimensionality Reduction,Topic Models等。此外,通过使用 Apache Hadoop 库,Mahout 可以有效地扩展到云中。
在Mahout的Recommendation类算法中,主要有User-Based CF,Item-Based CF,ALS,ALS on Implicit Feedback,Weighted MF,SVD++,Parallel SGD等。
其它
一:混合推荐系统类型
(1)加权型:就是将多种推荐技术的计算结果加权混合产生推荐。(2)转换型:根据问题背景和实际情况采用不同的推荐技术。(3)合并型:同时采用多种推荐技术给出多种推荐结果,为用户提供参考。(4)特征组合:将来自不同推荐数据源的特征组合起来,由另一种推荐技术采用。(5)瀑布型:后一个推荐方法优化前一个推荐方法。(6)特征递增型:前一个推荐方法的输出作为后一个推荐方法的输入。(7)元层次型用一种推荐方法产生的模型作为另一种推荐方法的输入。
二. 推荐系统的十个关键点
1、充分运用显式\隐式反馈数据:数据是一切推荐系统的基础。良好的推荐效果一定是来自于丰富而准确的数据。
2、 多种方法的融合
经过多年的发展,很多种推荐算法被提出来。常见的推荐方法,从大类上分,有基于历史行为(Memory-based)的方法、基于模型(Model-based)的方法、基于内容(Content-based)方法等。在Memory-based方法这个方向,又可进一步细分为基于物品的协同过滤算法(item-based collaborative filtering)、基于用户的协同过滤算法(user-based collaborative filtering)、关联规则(association rule)等;Model-based方法常用的包括Random
Walk、pLSA、SVD、SVD++等。每种方法在具体实施时,针对不同的问题又有很多不同的实现方案,例如在基于物品的协同过滤算法(item-based collaborative filtering)中,item之间相似度计算公式(Similarity)也可能有很多很多种变化。
在系统推荐的结果以外,还有一类传统的方式是通过专家进行推荐。这些专家可以是一些有经验的编辑,也可以是社区中意见领袖等。这些领域专家推荐的结果,在很多实际应用中,可以作为算法推荐结果的有益补充。
事实上,在实践中并没有任何一种方法在实践中始终占据压倒性的优势,它们各有千秋,分别有其各自合适的应用场景,因此因地制宜根据不同的场景,挑选不同的方法,并有机的结合起来,能让推荐效果得到极大的提升。常见的融合方法包括Restricted Boltzmann Machines(RBM), Gradient Boosted Decision Trees(GBDT),Logistic Regression(LR)等,这方面历次推荐竞赛中有很多相关文章,可以看到为了提升推荐效果,将不同算法的结果能够取长补短,各自发挥价值,是极为有效的。
3、重视时间因素:用户的行为是存在很强的时间规律的。
4、特定推荐场景使用地域特征:有一些推荐场景是和用户所处地域密切相关的,尤其对一些LBS、O2O的应用来说,一旦离开地域这个特征,那么智能推荐的效果根本就无从谈起。
5、 SNS关系的使用:社交网络近年来得到了突飞猛进的发展,用户不再是单纯的内容接收者,而是能够主动的建立用户之间的关系。
6、 缓解冷启动问题:冷启动是推荐系统最为悠久的一个问题,伴随推荐系统诞生至今。这是因为推荐系统效果提升的关键天然在于数据,而当新用户、或新物品等刚上线时,由于积累的数据极为稀少,大量方法在最初这段时间难以生效。
7、 推荐结果的展现方式:推荐系统绝不仅仅局限于推荐算法和架构,而是一个完整的系统。其中推荐结果的展现方案是这个系统中极为重要的一环。
8、明确优化目标和评估手段:在原有推荐效果的基础上精益求精,更进一步。优化目标和评估手段的确定是解决这个问题的关键所在。
9、时效性问题:正所谓“天下武功,唯快不破”,推荐系统要能及时捕捉用户需求的变化,反馈到模型中,并及时响应用户请求,实时提供在线服务。
10 、大数据挖掘和性能优化
总结:智能推荐系统是一个系统工程,依赖数据、架构、算法、人机交互等环节的有机结合,形成合力。
三、基于物品的协同过滤的Item协同系统的MapReduce实现
文章的UML图比较好看.....
四、搜索引擎的查询意图分析(关联分析)
通用搜索VS垂直搜索:
通用搜索特点:
抓取互联网上一切有价值的页面,同意建立索引,以关键字匹配为基本检索方式,以网页title和summary为展现方式
google, 百度,搜狗,搜搜,有道
垂直搜索特点:
以一特定类别为主题,只抓取与主题相关信息,根据主题特点有针对性的建立相应的索引检索方式,筛选方式,以及展现方式
机票搜索,地图搜索,购物搜索(一淘)……
解决方法:通用搜索引擎 + 垂直搜索引擎
意图识别