推荐系统介绍

推荐系统产生的背景

随着移动互联网的快速发展,我们进入了信息爆炸时代。当前通过互联网提供服务的平台越来越多,相应的提供的服务种类(购物,视频,新闻,音乐,婚恋,社交等)层出不穷,所以我们对于这种爆炸式的信息不可能全部都去接受的,也无法接受。

  • 随着社会的发展,受教育程度的提升,每个人都有表现自我个性的欲望。随着互联网的发展,出现了非常多的可以表达自我个性的产品,如微信朋友圈,微博,抖音,快手等,每个人的个性喜好特长有了极大展示的空间。每个人都是一个差异化的个体,是生而不同的,生而具有不同的性格特征,个人的生活成长环境又有极大差异,导致个人的偏好口味千差万别。
  • 随着计算机算力的飞速发展,人工智能领域也发展迅速,为了解决这种信息过载以及兼顾到每个个体的个性化差别,推荐系统应运而生,并逐渐向搜索引擎靠近,并逐步开始组建推荐—搜索系统一体化的整体系统。

推荐系统解决了什么问题

推荐系统是在互联网快速发展(特别是移动互联网)之后的产物,随着用户规模的爆炸增长以及供应商提供的物品的种类越来越多(淘宝上有几千万商品),用户身边充斥着大量信息,这时候推荐系统就发挥了用武之地。推荐系统本质上是在用户需求不明确的情况下, 从海量的信息中为用户寻找其感兴趣的信息的技术手段。推荐系统结合用户的信息(地域,年龄,性别等),物品信息(价格,产地等),以及用户过去对物品的行为(是否购买,是否点击,是否播放等),利用机器学习技术构建用户兴趣模型,为用户提供精准的个性化推荐。

下图是某视频APP界面

当你在观看此视频后,点击右上角搜一搜时候出现推荐搜索,里面就是你刚刚看到的内容(推荐—搜索)


上图就是推荐系统+搜索的典型案例,当你在看视频网站推给你的视频的时候,你觉得这个视频挺有意思的想多了解一点,于是你点击搜一搜,搜索引擎会根据刚刚推荐你的视频内容自动把你想搜的东西按照排序列出来,你只需要点击你感兴趣的话题即可。

搜索引擎 推荐系统
行为方式 主动 被动
意图 明确 模糊
个性化
流量分布 马太效应 长尾效应
目标 快速满足 持续服务
评估指标 简明 复杂

从另一方面来说,推荐系统也在逐渐取代搜索引擎的重要地位,逐渐变成推荐为主,搜索为辅,搜索的内容再次根据物品相似度推荐给你相似的内容,形成循环。所以一些企业发展和完善推荐系统也是一个非常重要的一部分。

推荐系统的本质

  • 推荐系统是一项工程技术解决方案,要将推荐系统落地到业务上需要大量的工程开发,涉及到日志打点,日志收集,ETL,分布式计算,特征工程,推荐算法建模,数据存储,提供接口服务,UI展示与交互,推荐效果评估等各个方面,推荐系统是一项庞大复杂的体系工程;

  • 推荐系统是机器学习的一个分支应用,推荐系统大量使用机器学习和深度学习技术,利用各种算法构建推荐模型, 提升推荐的精准度,惊喜度,覆盖率等,甚至是实时反馈用户的兴趣变化(如今日头条APP下拉展示新的新闻,实时反馈用户的兴趣变化);

  • 推荐系统是一项交互式产品功能,产品为推荐系统提供载体,用户通过使用产品触达及触发推荐系统,推荐系统为用户提供个性化的推荐, 从而提升用户体验;

  • 推荐系统是一种为用户提供感兴趣信息的便捷渠道,通过为用户提供信息创造商业价值;

推荐系统是一项工程技术解决方案,通过利用机器学习等技术,在用户使用产品进行浏览交互的过程中,系统主动为用户展示可能会喜欢的物品,从而促进物品的“消费”,节省用户时间,提升用户体验, 做到资源的优化配置。

推荐系统的架构(NETFLIX经典架构)

Netflix官方博客介绍的推荐系统架构,虽然发布已有六年, 但是现在回看起来还是比较厉害的,因为Netflix的推荐系统架构居然到现在依然是主流。

Netflix推荐系统架构图


从上图中可以看出,架构分为三部分:online(在线),nearline(近线),offline(离线)


离线(offline)——更新时长通常以天为单位

  • 存储离线数据,利用大数据查询工具进行数据查询和处理,离线模型训练。离线部分对于数据数量和算法复杂度限制很少,以批量方式完成数据处理,但是数据处理的实时性非常差,无法做到数据和模型的即时更新。
  • 可以看到当时还是hive,pig等工具的天下,现在spark 是主流,但也有越来越多的offline job被合并到near
    line之中,可以说当前的offline和nearline的界限日渐模糊了。

近线(near line)——更新时长通常以小时为单位

  • 基于数据消息队列,利用一些流计算平台进行数据的准实时处理。它居于离线和在线之间,既可以以分钟级别甚至秒级的延时来准实时地处理数据,也有一定的数据批量处理能力。
  • nearline可以说是近几年大数据架构发展的重中之重了。当时Netflix开发了自己的流处理框架Manhattan,但现在已经是Flink一统天下的时候,Netflix内部的Flink平台每天会运行上千个不同的流处理任务。涵盖了特征实时计算、数据监控、BI、模型实时训练等等。越来越多的offline任务被替代,也许Kappa架构彻底替代Lambda架构的日子不太远了。

在线(online)——更新时长通常以毫秒为单位

  • online部分的主要任务是进行用户请求的实时处理,模型的在线服务。在线部分需要更快地响应最近的事件和用户交互,因此对于延迟的要求比较苛刻,一般都要求在100ms以内完成所有处理,这会限制所用算法的复杂性和可处理的数据量。

推荐算法

推荐模型构建流程

Data(数据)->Features(特征)->ML Algorithm(机器学习算法)->Prediction Output(预测输出)

数据清洗/数据处理

数据来源:

  • 显性数据:用户对物品的打分,比如商品购买后的评分、对电影的评分、对物品的评价等
  • 隐性数据:用户的历史订单、加购物车数据、页面浏览数据(浏览深度)、用户点击数据、用户搜索记录数据等埋点数据

特征工程


从数据中筛选特征

  • 一个给定的商品,可能被拥有类似品味或需求的用户购买
  • 使用用户行为数据描述商品

上图数据图可以表示,用户1对ID为17的物品的评价为1(喜爱度),用户2没有用过此件物品,用户3对此件物品的评价为0.25…物品可以是电商的销售品,视频App的视频等,喜爱度可以是量化的对电商物品的评价,对视频App中视频的浏览时长与次数等。

用数据表示特征

  • 将所有用户行为合并在一起 ,形成一个user-item 矩阵

选择合适的推荐算法

  • 算法和模型是推荐系统的核心,直接决定了推荐效果的好坏。在推荐系统中,算法要从两个方面来考虑:算法本身准确性和算法的效率。相对算法准确性,推荐系统工程化更关注的是算法效率。算法和模型层面主要包含如图所示。

从推荐算法主要可以从召回层和排序层两个方面来说(当然如果更细还有粗排和精排),虽然召回层和排序层都是使用算法和模型来做,但是针对于不用的阶段,所用的模型也有一定的差别。

我们所说的推荐算法或者说网络上常说的推荐算法一般是召回,在召回层中,我们又可以分为3类方法,即传统算法、机器学习和深度学习模型。

  • 传统算法就是利用传统推荐系统理论中所采用的算法,例如计算用户之间的相似度、物品之间的相似度等,而这两类算法从大体上来讲,都可以用协同过滤算法来表示,只不过一个是基于用户的协同过滤算法,一个是基于物品的协同过滤算法
  • 机器学习模型指使用机器学习相关算法来得到召回层结果的方法,例如NMF(Nonnegative Matrix Factor,非负矩阵分解)算法、LFM模型(Latent Factor Model,基于潜在隐因子模型)、FTRL(Follow The Regularized Leader)算法、PersonalRank算法等
  • 深度学习模型指使用深度学习相关算法来得到召回层结果的方法,包括深度神经网络(DNN)和Embedding等方法

排序层中,我们也可以使用机器学习和深度学习两种方式来对召回结果进行排序,这里的排序一般采用点击率预估,并将预估得到的概率降序排序取前N得到最终的排序结果。

在使用机器学习进行排序层排序时,我们也可以将其分成2个大类,分别为线性模型和树模型,实际上,在真正的使用过程中,我们会将这两类模型结合起来使用。

  • 在线性模型中主要使用逻辑回归作为主要的排序算法,而逻辑回归又属于线性回归的一种变形,因此,要想学习好逻辑回归,就得对线性回归有一定的了解。
  • 树模型是排序算法中用得最多的一种模型的统称,在排序层中常用的树模型又分为决策树模型和集成学习模型,常用在推荐系统中的有随机森林、Boosting、GBDT、XGB、LGB。


虽然排序层的机器学习算法会被分为线性模型和树模型两种,但是进行排序时一般将二者结合使用,其中常见的组合方式就是使用GBDT+LR的方式进行点击率预测和排序层的排序。

产生并展现推荐结果


至此,推荐结果就展现在我们的手机上了

推荐系统(2)——推荐系统简介(发展与理论部分)相关推荐

  1. 推荐系统系列——推荐系统简介

    文章目录 同步读书之<菜根谭> 1--栖守道德,毋依阿权贵. 2--与其练达,不若朴鲁. 推荐系统简介 1 推荐问题的形式化定义 2 推荐系统的历史 3 参考文献 同步读书之<菜根谭 ...

  2. 小白从0学习推荐系统 ---01 推荐系统简介

    文章目录 推荐系统概述 什么是推荐系统? 推荐系统的目的 推荐系统的基本思想 推荐系统的数据分析 推荐系统的分类 推荐算法简介 基于人口统计学的推荐算法 基于内容的推荐算法 基于协同过滤的推荐算法 协 ...

  3. Java+SSM(Spring+SpringMVC+Mybatis)个性化购物商城推荐系统 电子商务推荐系统 基于用户、项目、聚类、混合的协同过滤推荐算法WebShopRSMEx 源代码下载

    Java+SSM(Spring+SpringMVC+Mybatis)个性化购物商城推荐系统 电子商务推荐系统 基于用户.项目.聚类.混合的协同过滤推荐算法WebShopRSMEx 源代码下载 一.项目 ...

  4. 使用Java+SSM(Spring+SpringMVC+Mybatis)如何开发个性化职位推荐系统 招聘推荐系统 基于用户、项目的协同过滤推荐算法实现WebPositionCFRS

    使用Java+SSM(Spring+SpringMVC+Mybatis)如何开发个性化职位推荐系统 招聘推荐系统 基于用户.项目的协同过滤推荐算法实现WebPositionCFRS 一.项目简介 1. ...

  5. Python+Django+Mysql个性化二手车推荐系统 汽车推荐系统 基于用户、项目、内容的协同过滤推荐算法 WebCarCFRSPython python实现协同过滤推荐算法实现源代码下载

    Python+Django+Mysql个性化二手车推荐系统 汽车推荐系统 基于用户.项目.内容的协同过滤推荐算法 WebCarCFRSPython python实现协同过滤推荐算法实现源代码下载 一. ...

  6. 【组队学习】【32期】推荐系统-新闻推荐系统实践

    推荐系统-新闻推荐系统实践 航路开辟者:罗如意 领航员:肖桐 航海士:汪志鸿.吴忠强.赖敏材.王辰玥.毛伟.宋禹成.陈雨龙.管柯琴 基本信息 开源内容:https://github.com/dataw ...

  7. 自己动手写一个推荐系统,推荐系统小结,推荐系统:总体介绍、推荐算法、性能比较, 漫谈“推荐系统”, 浅谈矩阵分解在推荐系统中的应用...

    自己动手写一个推荐系统 废话: 最近朋友在学习推荐系统相关,说是实现完整的推荐系统,于是我们三不之一会有一些讨论和推导,想想索性整理出来. 在文中主要以工程中做推荐系统的流程着手,穿插一些经验之谈,并 ...

  8. 电影推荐系统 python简书_基于Spark的电影推荐系统(实战简介)

    ## 写在前面 一直不知道这个专栏该如何开始写,思来想去,还是暂时把自己对这个项目的一些想法 和大家分享 的形式来展现.有什么问题,欢迎大家一起留言讨论. 这个项目的源代码是在https://gith ...

  9. 推荐系统入门学习简介(一)

    做推荐系统最常见的就是推荐电影,音乐,商品,股票等等,使用一些协同过滤的方法,若要搞点创新,可以去接触更细分的行业,比如,股票里的各种因子,音乐里的各种流派,商品的价格,品牌等. 一是推荐算法本身的进 ...

最新文章

  1. 80后天才程序员,Facebook 第一任 CTO,开挂人生到底多变态?
  2. Keil的HTM 文件分析
  3. Android布局之相对布局——RelativeLayout
  4. OpenGL textures combined组合纹理的实例
  5. C# 之 static的用法详解
  6. 浅谈块级元素和行级元素的相对定位和绝对定位问题
  7. 【HDU - 5475】An easy problem(线段树,思维)
  8. 华三交换机ping大包命令_华三交换机常用命令
  9. vue 跳添加编辑页面传两个值_vue两个组件间值的传递或修改方式
  10. 详述白盒测试的逻辑覆盖的路径覆盖及其优缺点
  11. Django中使用缓存
  12. 从H264/H265码流中获取宽、高及帧率
  13. EasyUI管理后台模板(附源码)
  14. 提升技能,升级思维,你学知识我送T恤,订阅专栏免费领51CTO定制T恤
  15. 我本可以忍受黑暗,如果我不曾见过太阳。
  16. 使用 hugo oss 搭建个人博客网站
  17. 设计模式 -- 桥接模式(Bridge)
  18. 网络摄像机·监控摄像机 镜头驱动芯片 MS41909
  19. 【不忘初心】 Windows11_22H2_22621.105_X64_可更新[纯净精简版][2.28G](2022.6.16)
  20. Android快速SDK(1)基础工具库QuickBase

热门文章

  1. 【WPS表格】制作填写身份证号码的小方格+满意度星星
  2. java操作liunx命令,实现文件内容追加与删除
  3. navicat下对mysql创建索引导致死锁,数据库崩溃,完美解决方案
  4. 教程:Nodejs大漠插件开发游戏脚本实战(二)搭建项目
  5. Android Studio内存大小配置及显示
  6. vue打包后static中的文件未打包进去
  7. 全国计算机信息安全学院排名,2021年中国信息安全专业大学排名「大学专业排名」...
  8. 《异能都市》福利分享 游戏福利等你来领
  9. Twitch遭遇了可能是近年来最严重的数据泄露
  10. 扎克伯格:我们如何接管世界