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

推荐系统介绍

推荐系统产生的背景

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

在这里插入图片描述

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

推荐系统解决了什么问题

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

下图是某视频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
    点赞
  • 18
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值