转载请注明出处:http://blog.csdn.net/gamer_gyt
博主微博:http://weibo.com/234654758
Github:https://github.com/thinkgamer
公众号:搜索与推荐Wiki
个人网站:http://thinkgamer.github.io


接下来将会用10篇文章介绍下推荐系统的起源,应用,算法和案例,并带领大家从0到1实现属于自己的推荐系统。本篇文章为该系列文章的第一篇,不会涉及具体的技术,用科普的形式让大家对推荐系统有一个感性的认识。

推荐系统在我们的生活中应用的非常广泛,无论是生活,娱乐,工作都会或多或少的涉及一些,接下来将会整理一个系列的文章,介绍一下推荐系统,并从0到1的去实现一个推荐系统,本篇内容主要涉及的是推荐系统的背景发展和开发一个自己的推荐系统需要掌握的技能和知识。

前世

“啤酒”与“尿布”的故事对推荐系统的学习有着积极的影响。从该故事出发,我们依旧能看到从20世纪90年代到现在个性化推荐系统的演进和发展。

“啤酒与尿布”的故事相信很多人都知道。它讲述的是20世纪90年代,在美国沃尔玛超市中,管理人员分析数据时,发现了一个奇怪的现象:在某些特定的情况下,“啤酒”与“尿布”两件看上去毫无关系的商品出现在了同一个购物篮中。这种独特的销售现象引起了管理人员的注意,经过后续调查发现,一些年轻的爸爸常到超市去购买婴儿尿布,有30%~40%的新爸爸,会顺便买点啤酒犒劳自己。随后,沃尔玛对啤酒和尿布进行了捆绑销售,不出意料,销售量双双增加。

该案例出自于涂子沛先生的《数据之巅》一书。在这个案例中,数据和情节让这个故事不容置疑,然而据吴甘沙先生透漏,该案例是TeraData公司一位经理编出来的“故事”。目的是让数据分析看起来更有力,更有趣。在历史上该案例并没有出在美国的任何一个沃尔玛超市中。
虽然这个“故事”是杜撰的,但其中涉及的“捆绑销售”却不失为一种购物推荐。物品A与物品B经常出现在一个购物篮中,那么向购买物品A(物品B)的人推荐物品B(物品A)是有数据依据和理论基础的。依据该理论,后来衍生出了关联规则算法,很多电商类或者视频类的网站都使用到该类算法进行商品或者视频的推荐。

今生

在19世纪和20世纪,推荐系统在互联网这片肥沃的土壤中得到了充分的发展,如今已经在各个公司开发结果。以下列了一些有代表性的发展点:

  • Xerox公司在1992年设计的应用协同过滤算法的邮件系统——Tapestry。同年,Goldberg提出了“推荐系统”这个概念。
  • 1994年,明尼苏达大学的GroupLens研究组使用基于主动协同过滤的推荐算法,开发了第一个自动化推荐系统 GroupLens,并将其应用在Usenet新闻组中。
  • 1996年,卡内基梅隆大学的Dunja Mladenic在Web Watcher的基础上进行了改进,提出了个性化推荐系统Personal Wgb Watchero。1996年,著名的网络公司Yahoo也注意到了个性化服务的巨大优势和潜在商机,推出个性化入口MyYahoo。
  • 1997年,Resnick和Varian首次在学术届正式提出推荐系统的定义。他们认为:推荐系统可以帮助电子商务网站向用户提供商品和建议,促成用户的产品购买行为,模拟销售人员协助客户完成购买过程。
  • 1998年,亚马逊(Amazon.com)上线了基于物品的协同过滤算法,将推荐系统的规模扩大至服务千万级用户和处理百万级商品,并带来了良好的推荐效果。
  • 2003年,亚马逊(Amazon.com)的Linden等人发表论文,公布了“基于物品的协同过滤算法”。
  • 2005年,Adomavicius等人发表综述论文,将推荐系统分为3类——基于内容的推荐、基于协同过滤的推荐和混合推荐,并提出了未来可能的主要研究方向。
  • 2006年10月,北美在线视频服务提供商 Netflix 宣布了一项竞赛,任何人只要能够将它现有电影推荐算法 Cinematch 的预测准确度提高10%,就能获得100万美元的奖金。
  • 2007年,第一届ACM推荐系统大会在美国举行,到2017年已经是第11届。这是推荐系统领域的顶级会议,展示了推荐系统在不同领域的最近研究成果、系统和方法。
  • 2016年,YouTube发表论文,将深度神经网络应用推荐系统中,实现了从“大规模可选的推荐内容”中找到“最有可能的推荐结果”。
  • 2018年,阿里巴巴提出论文《基于注意力机制的用户行为建模框架以及在推荐领域的应用(ATRank)》,被AAAI录用。

用途

推荐系统已经广泛存在于我们的生活之中,其主要应用场景如下:

  • 电商类(京东/淘宝/拼多多…)

  • 社交类(微博/微信/豆瓣…)

  • 音乐类(网易云音乐/QQ音乐/虾米…)

  • 视频类(YouTube/爱奇艺/腾讯视频…)

  • 阅读类(头条/知乎/书旗…)

  • 服务类(美团/饿了么/口碑…)

技术栈

目前工业界所使用的推荐系统整个框架是比较大的,并非一个人所能完成,那么作为初学者,我们如何能够充分理解推荐算法的知识,如何自己手动开发一个推荐系统呢?

首先是选定开发语言,Python作为使用最广泛的编程语言,当之无愧,而且py也已经成为了算法工程师的必备知识技能。同时在开发Python版本推荐系统过程中,不能缺失的是数据结构思想,不能缺失的是工程能力!

那如何去定义一个人工程能力的好坏呢?主要从以下几方面去判断:

  • 编码能力

强悍的编码能力,并不是说在很短的时间内完成一个业务开发,而是说在高效完成的同时能够追求代码的质量和可读性。只有同时具备高效、质量和可读性,才能说是工程能力很强。

  • 解决问题能力

工程能力的核心在于发现问题、分析问题和解决问题。
能够发现问题,说明拥有创新能力和自觉性的态度。
而对于已经发生的问题,能够慎密地进行分析、定位,继而快速解决,这样才真正到了“知其然,知其所以然”的境界。

  • 快速学习能力

计算机行业中,知识的迭代是非常快的。就好比,2014年左右Hadoop分布式计算框架是主流的,但到2017年,基于内存计算的Spark框架成了分布式处理的新宠。如果一个从业者没有很强的学习、适应和突破能力,是不行的。
好的学习能力前提是:拥有一个好的学习技巧,在学习之初就明白学习的目的是什么。然后围绕该目的,列出一系列的问题,然后在学习的过程中进行解决,同时进行手动实践,总结和积累经验。

  • 文档梳理能力

工程能力的强弱很多时候体现在文档上。是否完成过一个项目,对项目的理解是不一样的。对项目是否有深入的思考,写出的文档深浅也是不一样的。
一个优秀的文档,除了对自己,对于团队、他人来说也是十分重要的。

  • 产品质量责任心

好的工程能力还要拥有一个负责任的心。试想一下,上级交给你一个任务,你如果敷衍了事,那么你在这个岗位上是走不远的。

  • 沟通协作

在实际的工作环境中,往往每个任务都需要多人协作完成。一个从业者,如果不懂得沟通和协作,所完成的任务必然是不能满足需求的。


注:以上内容摘自于《推荐系统开发实战》,该书是小编近期要上的一本图书,预计本月(7月末)可在京东,当当上线,感兴趣的朋友可以进行关注!


【技术服务】,详情点击查看: https://mp.weixin.qq.com/s/PtX9ukKRBmazAWARprGIAg


扫一扫 关注微信公众号!号主 专注于搜索和推荐系统,尝试使用算法去更好的服务于用户,包括但不局限于机器学习,深度学习,强化学习,自然语言理解,知识图谱,还不定时分享技术,资料,思考等文章!


《推荐系统开发实战》之推荐系统的前世今生与古往今来相关推荐

  1. 《推荐系统开发实战》之推荐系统的灵魂伴侣-数据挖掘

    转载请注明出处:http://blog.csdn.net/gamer_gyt 博主微博:http://weibo.com/234654758 Github:https://github.com/thi ...

  2. 简易版电商推荐系统开发实战Hive

    简易版电商推荐系统开发实战 数据来源 数据转换 Pandas->MySQL 用Sqoop把数据导入Hive 推荐算法 Mahout安装 itembase协同过滤算法 进行推荐 实验结果 这是从H ...

  3. 推荐系统快速开发--豆瓣电影推荐系统的快速实战开发(一)

    推荐系统可以大致分为三类:基于内容的推荐系统,基于协同过滤推荐系统和混合推荐系统(使用这两者方式组合). 基于内容的推荐系统使用物品的特征来推荐其他类似物品. 例如,如果我在淘宝上浏览一件纯色T恤,基 ...

  4. 推荐系统快速开发--豆瓣电影推荐系统的快速实战开发(二)

    在我的上一篇博客中我简单解释了如何快速开发推荐系统的一些步骤,比如前期的数据分析,数据清洗过程,和后期的如何构建一个用户和物品的评分矩阵,如何利用计算皮尔森相关系数来寻找最相似的电影,这些过程和步骤可 ...

  5. 开放下载!基于PAI个性化推荐系统开发指南

    亚马逊的CEO Jeff Bezos曾经说过,他的梦想是"如果我有100万个用户,我就要为他们做100万个亚马逊网站".而智能推荐系统的出现,就是为了实现这个梦想,智能推荐系统解决 ...

  6. 使用Java+SSM(Spring+SpringMVC+Mybatis)如何开发个性化音乐推荐系统 在线音乐推荐网站 基于用户、项目的协同过滤推荐算法实现MusicRecommendSystemWeb

    使用Java+SSM(Spring+SpringMVC+Mybatis)如何开发个性化音乐推荐系统 在线音乐推荐网站 基于用户.项目的协同过滤推荐算法实现MusicRecommendSystemWeb ...

  7. 如何使用Java+SSM(Spring+SpringMVC+Mybatis)开发个性化新闻推荐系统 在线新闻推荐系统 基于用户项目协同过滤、内容、聚类、关联规则推荐算法实现WebNewsRSMEx

    如何使用Java+SSM(Spring+SpringMVC+Mybatis)开发个性化新闻推荐系统 在线新闻推荐系统 基于用户项目协同过滤.内容.聚类.关联规则推荐算法实现WebNewsRSMEx 一 ...

  8. 在线电影推荐网 Python+Django+Mysql 协同过滤推荐算法在电影网站中的运用 基于用户、物品的协同过滤推荐算法 开发在线电影推荐系统 电影网站推荐系统 人工智能、大数据、机器学习开发

    在线电影推荐网 Python+Django+Mysql 协同过滤推荐算法在电影网站中的运用 基于用户.物品的协同过滤推荐算法 开发在线电影推荐系统 电影网站推荐系统 人工智能.大数据.机器学习开发 M ...

  9. 如何使用Python+Django+Mysql开发特色美食推荐系统 个性化美食推荐网站 个性化推荐算法开发 基于用户、物品的协同过滤推荐算法 组合、混合推荐算法FoodRecommendSystem

    如何使用Python+Django+Mysql开发特色美食推荐系统 个性化美食推荐网站 个性化推荐算法开发 基于用户.物品的协同过滤推荐算法 组合.混合推荐算法FoodRecommendSystem ...

最新文章

  1. 说说进程与线程的区别与联系
  2. akb48_AKB48里历史——六年的终结
  3. vue项目中z-index不起作用(将vue实例挂在到window上面)
  4. 有关JAVA考试中数据库的题,javaee期末考试题库,用javaEE编写一个题库系统,要怎么做...
  5. html 闪烁字,HTML最简单的文字闪烁代码
  6. Info.plist与Prefix.pch修改文件位置遇到的问题及解决方法
  7. ADO.NET数据库应用开发_ExtendedProperties属性
  8. 如何设置 Windows 默认命令行窗口大小和缓冲区大小
  9. ApplicationEventMulticaster not initialized - call 'refresh' before
  10. NFS客户端挂载目录后无写入权限的解决方案
  11. 彻底解决联想手机数据连接不能上网问题(无需恢复出厂设置) 本文来自移动叔叔论坛 ,详细出处请参考:http://bbs.ydss.cn/thread-201115-1-1.html
  12. python3刷火车票_Python3实现抢火车票功能(上)
  13. 【test】2015.7.31测试解题报告(一)
  14. 【云原生 | 44】Docker搭建Registry私有仓库之管理访问权限
  15. position:fixed;
  16. [转]详细解释数据挖掘中的 10 大算法
  17. Dreamweaver2021安装教程与创建第一个网页
  18. 广义相对论基础【3】平移联络
  19. app跨平台开发框架以及技术选型如何选择?
  20. Mysql存储时间,对应Api及对应的java属性

热门文章

  1. 解放双手!用这个“神器“结合ArcGIS让建筑数据自动矢量化
  2. Teamcenter Dataset
  3. 【申报指南】2021年重庆市重点信息安全软件产品征集
  4. 浙江工商大学计算机考研调剂,浙江工商大学2019年考研预调剂信息
  5. 用[记事本]查杀EXE病毒
  6. 学习中的经验教训很重要_有时最难的教训是最重要的教训
  7. Linux内核睡眠唤醒调试
  8. VS2008中开发手持终端程序(PDA软件)总结
  9. windows下查看端口占用并终止进程
  10. Docker(45)- docker build 命令详解