知乎:如何学习推荐系统?

知乎:协同过滤和基于内容的推荐有什么区别?

案例:推荐系统实战?  数据准备;实现推荐栏位;重构接口;后续优化。

简书:实现实时推荐系统的三种方式?基于聚类和协同过滤;基于Spark;基于Storm;基于Kiji框架。

精品博客,事无巨细:推荐系统:协同过滤collaborative filtering    基于内容的推荐content-based,协同过滤collaborative filtering,隐语义模型(LFM, latent factor model)推荐。这篇博客主要讲协同过滤。事无巨细,有条不紊。

自从1992年施乐的科学家为了解决信息负载的问题,第一次提出协同过滤算法,个性化推荐已经经过了二十几年的发展。

推荐系统概述和常用评价指标

1.1 推荐系统的特点

在知乎搜了一下推荐系统,果真结果比较少,显得小众一些,然后大家对推荐系统普遍的观点是:

(1)重要性:UI >数据 >算法,就是推荐系统中一味追求先进的算法算是个误区,通常论文研究类的推荐方法有的带有很多的假设限制,有的考虑工程实现问题较少,推荐系统需要大量的数据整理和转化,同时更需要考虑公司业务特性以及与现有系统的集成,方能形成推荐系统和业务之间的良性循环;

(2)推荐系统离线测试很好,上线后要么没有严格的测试结果而只能凭感觉,要么实际效果差强人意,我想主要缘于离线测试比较理想,而在线AB冠军测试无论对于前端还是后台要求都很高,没有雄厚的研发实力难以实现;

(3)推荐系统受到的外部干扰因素特别多(季节、流行因素等),整个系统需要不断的迭代更新,没有一劳永逸的事情。

Mahout
主页:Apache Mahout: Scalable machine learning and data mining 语言:Java
        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, 百度,搜狗,搜搜,有道
        垂直搜索特点:
                以一特定类别为主题,只抓取与主题相关信息,根据主题特点有针对性的建立相应的索引检索方式,筛选方式,以及展现方式
                机票搜索,地图搜索,购物搜索(一淘)……

解决方法:通用搜索引擎 + 垂直搜索引擎
        意图识别

推荐系统入门:作为Rank系统的推荐系统(协同过滤)相关推荐

  1. 推荐系统笔记:基于非负矩阵分解的协同过滤

    1 非负矩阵分解 非负矩阵分解 (NMF) 可用于非负的评级矩阵. 这种方法的主要优势不一定是准确性,而是它在理解用户-项目交互方面提供的高度可解释性. 与其他形式的矩阵分解的主要区别在于因子 U 和 ...

  2. 推荐系统学习笔记召回策略之基于协同过滤召回

    基于协同过滤的召回 1. 概述 2. 基于近邻的协同过滤算法 3. 相似度计算方法 4. 协同过滤算法的进化-矩阵分解 图1. 推荐系统整体架构 推荐系统学习笔记系列链接: 推荐系统学习笔记--特征工 ...

  3. Python推荐系统学习笔记(3)基于协同过滤的个性化推荐算法实战---ItemCF算法(下)

    本文在 Python推荐系统学习笔记(2)基于协同过滤的个性化推荐算法实战---ItemCF算法 一文的基础上,对其基本的ItemCF算法做出改进. 一.相关概念 1.ItemCF中,基于行为(喜好) ...

  4. Python推荐系统学习笔记(5)基于协同过滤的个性化推荐算法实战---UserCF算法(下)

    本文在 Python推荐系统学习笔记(4)基于协同过滤的个性化推荐算法实战---UserCF算法(上) 一文的基础上,对其基本的UserCF算法做出改进. 一.相关概念 1.UserCF中,基于行为( ...

  5. 推荐系统中的召回算法--协同过滤

    工业界通用推荐系统架构: Match&Rank 定义:Match基于当前user(profile.history)和context,快速在全库中找到TopN最相关的Item,给Rank来做小范 ...

  6. python图书推荐系统_在线图书推荐系统的实现含源码(协同过滤)

    项目简介 基于模型的协同过滤应用---图书推荐 本文实现对用户推荐图书的简单应用. 推荐算法: 在我们的在线图书推荐系统中,我们借用Spark的ALS算法的训练和预测函数,每次收到新的数据后,将其更新 ...

  7. 《推荐系统》基于用户和Item的协同过滤算法的分析与实现(Python)

    1:协同过滤算法简介 2:协同过滤算法的核心 3:协同过滤算法的应用方式 4:基于用户的协同过滤算法实现 5:基于物品的协同过滤算法实现 一:协同过滤算法简介 关于协同过滤的一个最经典的例子就是看电影 ...

  8. boltzmann_推荐系统系列第7部分:用于协同过滤的Boltzmann机器的3个变体

    boltzmann RecSys系列 (RecSys Series) Update: This article is part of a series where I explore recommen ...

  9. 推荐系统中基于深度学习的混合协同过滤模型

    近些年,深度学习在语音识别.图像处理.自然语言处理等领域都取得了很大的突破与成就.相对来说,深度学习在推荐系统领域的研究与应用还处于早期阶段. 携程在深度学习与推荐系统结合的领域也进行了相关的研究与应 ...

最新文章

  1. 序列化和反序列化实现
  2. WebStorm 2019.3.1安装教程
  3. 大学物理规范作业25稳恒磁场_山东一地出台规定:严禁家长代批作业,违反规定将被一票否决...
  4. python3 枚举定义和使用
  5. Zend API: array_init
  6. 配置isc-dhcrelay需要注意的事项
  7. LeetCode 243. 最短单词距离
  8. Snabbdom(虚拟dom-5-patch函数)
  9. 黑苹果白果序列号_黑苹果从入门到放弃黑苹果:OC配置入门
  10. 使用libpng读写PNG图片
  11. iOS中播放音乐和音效
  12. 数字取证之Autopsy ——合天网安实验室学习笔记
  13. matlab学期大作业,matlab期末大作业
  14. 零信任解决方案在某医院落地实例学习记录
  15. 5455. 最多 K 次交换相邻数位后得到的最小整数
  16. access四舍五入取整round_access把浮点字段取整是什么函数
  17. PRML学习总结(6)——Kernel Methods
  18. EtherCAT DC (学习笔记)
  19. 陕西大学最早的计算机专业,2019计算机考研:陕西地区计算机专业优质院校
  20. 西门子S7-200PLC系列(二)

热门文章

  1. LeetCode 100.相同的树(C++)
  2. Flex组件的项目渲染器(ItemRenderer)使用总结
  3. C/C++中手动获取调用堆栈【转】
  4. Unity应用架构设计(6)——设计动态数据集合ObservableList
  5. Nginx 笔记与总结(11)Nginx + php-fpm + MySQL 安装 ecshop
  6. GNU make manual 翻译(七十三)
  7. 实现“Please wait...”效果
  8. 初学SpringMVC,使用MVC进行文件上传
  9. iOS----------使用cocoapods遇到的问题
  10. hadoop NameNode HA 和ResouceManager HA