目录

  • 1 从广告说起推荐系统
  • 2 什么是推荐系统?
  • 3 电商是推荐系统的先行者
  • 4 推荐系统业务流程
  • 5 推荐系统所涉及到的知识
  • 6 协同过滤算法
    • 6.1 基于用户的推荐 UserCF
    • 6.2 基于商品的推荐 ItemCF
    • 6.3 如何选择?
  • 7 用户偏好收集
    • 7.1 数据的降噪和归一化

1 从广告说起推荐系统

先如今,广告可谓是无处不在,报纸、电视、视频网站、短信、邮件等等。

弹框广告:

未来广告:精准推荐,不再让人们对广告反感,而是会感觉到惊讶。只要做到精准,“广告”就不再是“广告”。

2 什么是推荐系统?

为了解决信息过载和用户无明确需求的问题,找到用户感兴趣的物品,才有了个性化推荐系统。

其实,解决信息过载的问题,代表性的解决方案是分类目录和搜索引擎,如hao123,电商首页的分类目录以及百度,360搜索等。

不过分类目录和搜索引擎只能解决用户主动查找信息的需求,即用户知道自己想要什么,并不能解决用户没用明确需求很随便的问题。经典语录是:你想吃什么,随便!面对这种很随便又得罪不起的用户(女友和上帝),只能通过分析用户的历史行为给用户的兴趣建模,从而主动给用户推荐能够满足他们兴趣和需求的信息。比如问问女友的闺蜜,她一般什么时候喜欢吃什么。

3 电商是推荐系统的先行者

  • 电子商务网站是个性化推荐系统重要地应用的领域之一,亚马逊就是个性化推荐系统的积极应用者和推广者,亚马逊的推荐系统深入到网站的各类商品,为亚马逊带来了至少30%的销售额。
  • 不光是电商类,推荐系统无处不在。QQ,微信的好友推荐;新浪微博的你可能感兴趣的人;优酷,土豆的电影推荐;豆瓣的图书推荐;大从点评的餐饮推荐;脉脉的同事推荐等。
  • 推荐引擎的鼻祖思想源泉:http://portal.acm.org/citation.cfm?id=1070751
  • 亚马逊最早提出基亍物品的协同过滤推荐算法:http://portal.acm.org/citation.cfm?id=372071

京东的推荐:

淘宝的推荐:

当当网的推荐:

4 推荐系统业务流程

推荐系统广泛存在于各类网站中,作为一个应用为用户提供个性化的推荐。它需要一些用户的历史数据,一般由三个部分组成:基础数据、推荐算法系统、前台展示。

  • 基础数据包括很多维度,包括用户的访问、浏览、下单、收藏,用户的历史订单信息,评价信息等很多信息;
  • 推荐算法系统主要是根据不同的推荐诉求由多个算法组成的推荐模型;
  • 前台展示主要是对客户端系统进行响应,返回相关的推荐信息以供展示。

5 推荐系统所涉及到的知识

  • 电子商务、交友等业务知识
  • 网站架构和运营
  • 机器学习算法,数学建模
  • 大数据计算平台







6 协同过滤算法

迄今为止,在个性化推荐系统中,协同过滤技术是应用最成功的技术。目前国内外有许多大型网站应用这项技术为用户更加智能(个性化、千人千面)的推荐内容。

核心思想:

协同过滤一般是在海量的用户中发掘出一小部分和你品位比较类似的,在协同过滤中,这些用户成为邻居,然后根据他们喜欢的其他东西组织成一个排序的目彔作为推荐给你。

问题:

如何确定一个用户是和你有相似的品位?
如何将邻居们的喜好组织成一个排序的目彔?

6.1 基于用户的推荐 UserCF

对于用户A,根据用户的历史偏好,这里只计算得到一个邻居–用户C,然后将用户C 喜欢的物品D 推荐给用户A。

基于用户的协同过滤算法先计算的是用户与用户的相似度(兴趣相投,物以类聚人以群分),然后将相似度比较接近的用户A购买的物品推荐给用户B,专业的说法是该算法用最近邻居(nearest-neighbor)算法找出一个用户的邻居集合,该集合的用户和该用户有相似的喜好,算法根据邻居的偏好对该用户进行预测。

6.2 基于商品的推荐 ItemCF

  • 基于ItemCF的原理和基于UserCF类似,只是在计算邻居时采用物品本身,而不是从用户的角度,即基于用户对物品的偏好找到相似的物品,然后根据用户的历史偏好,推荐相似的物品给他。
  • 从计算的角度看,就是将所有用户对某个物品的偏好作为一个向量来计算物品之间的相似度,得到物品的相似物品后,根据用户历史的偏好预测当前用户还没有表示偏好的物品,计算得到一个排序的物品列表作为推荐。
  • 解释:对于物品A,根据所有用户的历史偏好,喜欢物品A 的用户都喜欢物品C,得出物品A 和物品C 比较相似,而用户C 喜欢物品A,那么可以推断出用户C 可能也喜欢物品C。

6.3 如何选择?

  • 在社交项目中,如微信、QQ,显然选择基于用户推荐比较好,因为推荐往往都是和人相关的。

    • 如:在QQ登录后,会有提示,好友的好友可能是你认识的,推荐给你添加好友。
  • 在电商项目中,用户的数量远大于商品数量,所以基于商品的推荐的复杂度要低,而且也比较合理。
  • 其实,在实际的推荐系统中,往往不单是使用一种推荐,而是会多种推荐混合使用。
  • 所以,选择基于用户还是基于商品的推荐,和应用场景有很大的关系。

7 用户偏好收集

用户和商品的之间的关系,什么样的数据能够表示用户对商品的喜好呢?
要从用户的行为和偏好中发现规律,并基于此给予推荐,如何收集用户的偏好信息成为系统推荐效果最基础的决定因素。用户有很多方式向系统提供自己的偏好信息,而且不同的应用也可能大不相同,下面举例进行介绍:

7.1 数据的降噪和归一化

收集了用户行为数据,我们还需要对数据进行一定的预处理,其中最核心的工作就是:降噪和归一化。

  • 降噪:用户行为数据是用户在使用应用过程中产生的,它可能存在大量的噪音和用户的误操作,我们可以通过经典的数据挖掘算法过滤掉行为数据中的噪音,这样可以是我们的分析更加精确。
  • 归一化:如前面讲到的,在计算用户对物品的喜好程度时,可能需要对不同的行为数据进行加权。但可以想象,不同行为的数据取值可能相差很 大,比如,用户的查看数据必然比购买数据大的多,如何将各个行为的数据统一在一个相同的取值范围中,从而使得加权求和得到的总体喜好更加精确,就需要我们 进行归一化处理。最简单的归一化处理,就是将各类数据除以此类中的最大值,以保证归一化后的数据取值在 [0,1] 范围中。

大数据Spark MLlib推荐系统相关推荐

  1. 大数据Spark MLlib推荐算法

    目录 1 相似度算法 1.1 欧几里德距离算法 1.2 基于夹角余弦相似度算法 2 最近邻域 3 交替最小二乘法 3.1 最小二乘法 3.2 交替最小二乘法 3.3 ALS算法流程 3.4 ALS算法 ...

  2. 大数据Spark MLlib机器学习

    目录 1 什么是Spark MLlib? 2 支持的数据类型 2.1 本地向量集 2.1.1.密集型数据集 2.1.2 稀疏型数据集 2.2 向量标签 2.3 本地矩阵 2.4 分布式矩阵 2.4.1 ...

  3. 基于大数据的餐饮推荐系统总结

    0. 说明 由于原先自己搭的博客系统出问题了,故将其中有价值的内容迁移出来,并对文章进行更新. 发现博客园的文章不能置顶,所以又把它以随笔的形式再写一份. 原文链接: 基于大数据的餐饮推荐系统总结 可 ...

  4. 大数据Spark企业级实战 PDF 下载 和目录

    大数据Spark企业级实战  PDF完整版 下载地址 http://download.csdn.net/detail/laoge/9504794 基本信息 书名:大数据Spark企业级实战 定价:12 ...

  5. 【Todo】【读书笔记】大数据Spark企业级实战版 Scala学习

    目录:/Users/baidu/Documents/Data/Interview/Hadoop-Spark-Storm-Kafka 下了这本<大数据Spark企业级实战版>, 另外还有一本 ...

  6. 2016年大数据Spark“蘑菇云”行动代码学习之AdClickedStreamingStats模块分析

    2016年大数据Spark"蘑菇云"行动代码学习之AdClickedStreamingStats模块分析     系统背景:用户使用终端设备(IPAD.手机.浏览器)等登录系统,系 ...

  7. 光环大数据spark文档_推荐大数据Spark必读书目

    我有一个非常要好的同事,无数次帮我解决了业务上的痛.技术能力很强,业务方面也精通.而且更耐得住加班,并且是自愿加班,毫无怨言.不像我,6点到准时走人了.但就是这么一位兢兢业业的技术人,却一直没有升职加 ...

  8. 大数据|Spark技术在京东智能供应链预测的应用案例深度剖析(一)

    大数据|Spark技术在京东智能供应链预测的应用案例深度剖析(一) 2017-03-27 11:58  浏览次数:148 1. 背景 前段时间京东公开了面向第二个十二年的战略规划,表示京东将全面走向技 ...

  9. 推荐大数据Spark必读书目

    点击蓝色"有关SQL"关注我哟 加个"星标",天天与10000人一起快乐成长 我有一个非常要好的同事,无数次帮我解决了业务上的痛.技术能力很强,业务方面也精通. ...

最新文章

  1. centos7 系统下搭建 lnmp 环境
  2. JS循环精灵图背景-遍历背景图片
  3. express 使用 redirect 对 ajax 无效 页面不跳转
  4. 深度学习小技巧(二):如何保存和恢复scikit-learn训练的模型
  5. TCP三次握手四次断开(图解)
  6. Jmeter(一)-精简测试脚本
  7. 阿帕奇退出java_java+tomcat+apache安装整合,启动/关闭,添加开机启动服务
  8. P1791-[国家集训队]人员雇佣【最大权闭合图】
  9. python爬虫知识点总结(二十四)Scrapy爬去知乎用户信息
  10. OpenGL 视图和颜色的概念
  11. 币安“碟中谍”,真相只有一个
  12. smtplib python_python模块:smtplib模块
  13. jquery 文本编辑器插件
  14. 极点五笔常用操作及快捷键功能描述(v6.5)
  15. DBeaver初次使用教程(强大的数据库连接工具)
  16. 数字信号处理:重要知识点整理
  17. 计算机桌面软件乱跳怎么办,电脑桌面乱跳怎么办
  18. VS C++控制台程序 错误 fatal error C1083: 无法打开包括文件 解决办法
  19. 陈洁kiki宠粉节狂欢夜观看破千万!四年磨一剑将宠粉做到极致
  20. 超全NetLogo多主体仿真建模(小世界WWW+无标度网络+随机网)内含源码+界面设计+程序分析

热门文章

  1. python调用webservice
  2. oracle preparedstatement,oracle_选用PreparedStatement还是statement
  3. Could not get JDBC Connection排查
  4. extmail如何登陆mysql_postfix+mysql+dovecot+extmail 邮件系统
  5. 将 三星PM983A 作为 移动硬盘 的使用记录
  6. ha456 jar下载 免费 亲测有效
  7. 90天掌握高级JS(第一个阶段日志)
  8. Dendron: 一款支持双链、Git 管理、本地存储,专为开发人员构建的开源个人知识管理工具...
  9. CBQ的理解以及策略嵌套(待证实)
  10. android java 指针_Android中用Java代码模拟鼠标指针(可显示于整个系统界面之上)...