打造工业级推荐系统(一):推荐算法工程师的成长之道

打造工业级推荐系统(一):推荐算法工程师的成长之道

导读:个性化推荐系统,简单来说就是根据每个人的偏好推荐他喜欢的物品。互联网发展到现在,推荐系统已经无处不在,在各行各业都得到普遍都应用。亚马逊号称 40% 的收入是来自个性化推荐系统的,淘宝的个性化推荐系统也带来非常大的收益,新闻媒体的个性化推荐系统典型的是今日头条,直播平台给用户推荐喜欢的主播,金融网站给用户推荐需要的理财产品,社交网络给用户推荐大 V 或者其他朋友……越来越多的公司将推荐系统作为产品的标配。

大家接触推荐系统的概率会越来越大。作为程序员,了解推荐系统也越来越必要,甚至可以主动选择“推荐系统算法工程师”的相关职位。那大家一定会关心推荐算法工程师需要哪些知识储备,以及作为一个推荐算法工程师,未来的发展道路怎样?

本文是作者计划的一系列文章中的第二篇。第一篇为《推荐算法工程师的成长之道》。后面的文章将涉及到推荐系统的冷启动、商业价值、工程实现、评估等方方面面。这系列文章是作者多年推荐系统学习、实践经验的总结,希望能够帮助到即将入行推荐系统开发的读者或者推荐系统开发人员,让大家少走弯路。

正文

推荐系统产生的背景

随着移动互联网的快速发展,我们进入了信息爆炸时代。当前通过互联网提供服务的平台越来越多,相应的提供的服务种类 (购物,视频,新闻,音乐,婚恋,社交等) 层出不穷,服务“标的物”的种类也越来越多样 (亚马逊上有上百万的书),这么多的“标的物”怎么让需要它的人找到它, 满足用户的各种需要, 就是摆在企业面前的难题。

同时,随着社会的发展,受教育程度的提升,每个人都有表现自我个性的欲望。随着互联网的发展,出现了非常多的可以表达自我个性的产品,如微信朋友圈,微博,抖音,快手等,每个人的个性喜好特长有了极大展示的空间。另外从进化论的角度来说,每个人都是一个差异化的个体,是生而不同的,生而具有不同的性格特征,个人的生活成长环境又有极大差异,导致个人的偏好口味千差万别。“长尾理论”也很好的解释了多样化物品中的非畅销品可以满足人们多样化的需求,这些需求加起来不一定比热门物品产生的销售额小。

随着社会的进步,物质生活条件的改善,大家不必再为生存下来而担忧,所以大家有越来越多的需求是非生存需求,比如看书,看电影,购物等,而这些非生存的需求往往在很多时候是不确定的, 是无意识的,自己不知道自己需要什么。生存需求对人而言显得非常强烈而明显,比如你快饿死了,你的第一需要肯定是食物。不同于生存需求,面对非生存需求,人们实际上更愿意接受被动推荐的好的物品, 比如给你推荐一部电影,如果符合你的口味,你可能会很喜欢。

总结上面提到的三点,当今时代可选择的商品和服务这么多,而不同人的兴趣偏好又是截然不同,并且在特定场景下,个人对自己的需求不是很明确。在这三个背景驱动下,推荐系统应运而生。个性化推荐系统是解决上述三个矛盾的最有效的方法和工具之一。

为了更好的为用户提供服务, 在为用户提供服务的同时赚取更多的利润,越来越多的公司通过采用个性化推荐技术,辅助用户更快地发现自己喜欢的东西 。公司根据用户在产品上的行为记录,结合用户自身和“标的物”的信息, 利用推荐技术 (机器学习的一个分支) 来为用户推荐可能感兴趣的物品。

推荐系统解决什么问题

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

推荐系统很好的满足了“标的物”提供方,平台方,用户三方的需求。拿淘宝购物举例来说, “标的物”提供方是淘宝上成千上万的店主,平台方是淘宝,用户就是在淘宝上购物的自然人或企业。通过推荐系统可以更好地将商品曝光给给需要购买的用户, 提升社会资源的配置效率。

从本质上讲,推荐系统提升了信息分发和信息获取的效率。

推荐系统的应用领域

推荐系统广泛用于各类互联网公司,基于上面的介绍,只要存在大量的“供用户消费的商品”的互联网产品,推荐系统就有用武之地。具体来说推荐系统的应用领域主要有如下几类:

电商网站:购物,购书等,如淘宝,京东,亚马逊等

视频:Netflix,优酷,抖音,快手,电视猫等

音乐:网易云音乐,酷狗音乐等

生活服务类:美团,携程,脉脉等

交友类:陌陌,珍爱网等

下图展示了几类常见的互联网推荐产品,大家应该都不陌生。

打造工业级推荐系统(一):推荐算法工程师的成长之道

推荐系统更多的应用场景正在不断被挖掘和创造。有了这些基本背景,下面来具体说下什么是推荐系统。

推荐系统的定义

上面两节提到了推荐系统产生的背景和推荐系统需要解决的问题,那么什么是推荐系统呢?本节我尝试给推荐系统下一个定义, 让大家可以更好的理解什么是推荐系统。

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

上面定义有几点需要细化说明一下, 方便大家更好的理解推荐系统的本质。

  1. 推荐系统是一项工程技术解决方案,要将推荐系统落地到业务上需要大量的工程开发,涉及到日志打点,日志收集,ETL,分布式计算,特征工程,推荐算法建模,数据存储,提供接口服务,UI 展示与交互,推荐效果评估等各个方面,推荐系统是一项庞大复杂的体系工程;
  2. 推荐系统是机器学习的一个分支应用,推荐系统大量使用机器学习技术,利用各种算法构建推荐模型, 提升推荐的精准度,惊喜度,覆盖率等,甚至是实时反馈用户的兴趣变化 (如今日头条 APP 下拉展示新的新闻,实时反馈用户的兴趣变化);
  3. 推荐系统是一项交互式产品功能,产品为推荐系统提供载体,用户通过使用产品触达及触发推荐系统,推荐系统为用户提供个性化的推荐, 从而提升用户体验;
  4. 推荐系统是一种为用户提供感兴趣信息的便捷渠道,通过为用户提供信息创造商业价值;

推荐系统的本质是通过技术手段将“标的物”与人关联起来,方便人获取对自己有价值的“标的物”。通过上面的介绍,相信大家对推荐系统有了一个初步的了解。

常用的推荐算法

上面一节提到了推荐系统大量使用机器学习技术, 本节来简单介绍一下推荐系统常用的策略或者算法。

  1. 基于内容的推荐

上面讲到推荐系统是通过技术手段将“标的物”与人关联起来,“标的物”包含很多自己的属性,用户通过与“标的物”的交互会产生行为日志,这些行为日志可以作为衡量用户对“标的物”偏好的标签,通过这些偏好标签为用户做推荐就是基于内容的推荐算法。拿视频推荐来说,视频有标题、国别、年代、演职员、标签等信息,用户以前看过的视频,就代表用户对这些视频有兴趣,比如用户偏好恐怖,科幻类的电影,我们就可以根据这些兴趣特征为用户推荐恐怖科幻类的电影。

  1. 协同过滤

用户在产品上的交互行为为用户留下了标记,我们可以利用“物以类聚,人以群分”的朴素思想来为用户提供个性化推荐。

具体来说,“人以群分”就是找到与用户兴趣相同的用户 (有过类似的行为),将这些兴趣相同的用户浏览过物品推荐给用户,这就是基于用户的协同过滤算法。“物以类聚”就是如果有很多用户都对某两个物品有相似的偏好, 说明这两个物品是“相似”的,我们可以通过推荐用户喜欢过的物品相似的物品这种方式为用户提供个性化推荐, 这就是基于物品的协同过滤推荐算法。

下面以图示来简单说明这两类协同过滤算法,让大家有更好的理解。

打造工业级推荐系统(一):推荐算法工程师的成长之道

  1. 基于模型的推荐

基于用户行为记录,用户相关信息 (年龄,性别,地域,消费习惯等),物品相关信息,构建算法模型,预测用户对物品的偏好,常用的算法有 logistic 回归,矩阵分解等。随着现在深度学习技术的发展,目前有很多深度学习相关的算法落地到了推荐系统上,产生了很好的效果。

  1. 基于社交关系的推荐

我们在日常生活中经常为别人或者要求别人给我们推荐书籍, 餐厅, 电影等,这种推荐方式往往效果较好,大家会更容易接受。最近微信 7.0 版本“看一看”模块中的“好看”就是通过将你的微信好友看过的文章推荐给你,张小龙在今年微信 8 周年微信公开课上说到,“好看”比“看一看”模块中的“精选”效果好很多,而“精选”就是通过算法来实现的推荐。

这些推荐算法中,基于内容的推荐和协同过滤推荐是最常用的推荐算法,实现相对简单,效果也很不错,在工业界得到了大规模的应用。

构建推荐系统的阻碍与挑战

推荐系统是解决大规模用户场景下,大量信息的精准分发的问题,推荐系统解决的问题看起来很简单朴素, 那么是不是可以非常容易的构建一个效果很好的推荐系统呢?答案是否定的, 要想构建一个高效的有价值的推荐系统是一件很困难的事情。这里简单说一下构建推荐系统可能遇到的困难、障碍,以及构建好的推荐系统的挑战。

首先不是任何一个产品都需要推荐的,你提供的“标的物”必须足够多,用户无法通过浏览完所有“标的物”来做选择,这时才有推荐的必要,比如苹果官网,卖的东西是很少的几个品类,每个品类也不多,加起来也没有多少,这时用户可以直接浏览所有产品找自己喜欢的也很方便。

最后从技术工程实现的角度说说构建推荐系统面临的挑战,具体而言构建好的推荐系统面临如下的挑战:

  1. 推荐系统推荐精准度的问题:这需要通过构建好的推荐算法来实现,同时要有足够多的用户行为数据来学习算法模型, 数据预处理的质量也对结果有较大影响, 现在基于深度学习的推荐系统可以达到很好的效果;
  2. 冷启动问题: 新用户、新物品没有相关行为信息, 这时系统怎么给用户推荐,怎么将新物品推荐出去, 在推荐系统落地过程中都需要做结合业务场景的特殊处理才能达到好的用户体验;
  3. 如果你的产品有大量用户访问,怎么构建一套高效的推荐系统,满足高并发访问,为用户提供稳定,快速,高效的推荐服务也是一个挑战;
  4. 数据缺失的问题:现实场景中一定存在用户或者物品的信息不完善,或者部分信息有误,这些也是在构建推荐算法模型过程中必须考虑和解决的问题;
  5. 怎么处理非结构化的信息:用户和物品相关的信息有可能是非结构化的信息,比如图片,视频,音频,文本等,怎么高效的利用这些信息,为推荐模型提供更多信息输入, 随着深度学习在推荐系统中大规模运用,这类问题可以得到较好的解决;
  6. 一些噪音及恶意攻击也会产生大量垃圾数据,对更好的做推荐产生很大的干扰, 怎么很好的保证训练数据的质量,这是 ETL 和特征工程需要解决的重要问题;
  7. 大规模计算与存储:大量的用户和大量的物品,对数据处理和计算造成很大的压力,需要采用分布式技术 (如 Hadoop,Spark 等) 来做数据存储,处理,计算等, 所以要很好的落地推荐系统需要企业构建一套高效的大数据分析处理平台;
  8. 为了给用户提供实时的个性化推荐 (如今日头条的新闻推荐等), 需要实时收集处理用户的反馈,做到更及时精准的推荐,为用户提供强感知的服务。对大规模用户做到实时响应,对算法,计算,处理有相当大的挑战。
  9. 用户交互问题:推荐系统通过用户与产品的交互来触达用户,所以好的 UI 及交互体验对推荐系统发挥真正的价值起到非常关键的作用,有时好的 UI 和交互体验甚至比好的算法更管用;
  10. 怎么评估推荐算法的价值:推荐系统怎么服务于业务,怎么衡量推荐系统的价值产出,怎么为推荐系统制定业务指标,通过指标提升推荐系统效果的同时促进业务发展?这些问题都是摆在推荐系统开发人员, 甚至是公司管理者面前的重要问题, 只有很好的度量出推荐系统的价值,才能更好的优化推荐系统,发挥推荐系统的价值。

上面说了这么多构建好的推荐系统需要克服的困难和障碍, 但是推荐系统是非常有价值的,值得我们花这么多精力和时间去构建一套好的推荐系统。推荐系统的极大价值也驱使越来越多的公司将推荐系统作为产品的标配。

推荐系统的价值

当前推荐系统技术是互联网公司的标配技术, 因为它很好的解决“标的物”提供方,平台方,用户三方的需求。本节详细说一下推荐系统的价值,它的价值主要体现在四个方面。

从用户角度说, 推荐系统可以让用户在纷繁芜杂的海量信息中快速找到自己感兴趣的信息,节省了用户的时间,特别是当用户在使用某个互联网产品时,不经意中发现平台给自己推荐了特别喜欢的东西时,那种惊喜油然而生,从而极大提升了用户的使用体验。

从平台的角度看, 推荐了一本书给用户,用户发现这本书正好是自己需要的,立即就买下来了, 推荐一首付费音乐给用户, 用户特别喜欢,毫不犹豫就付费了。精准的推荐,也能增加用户对平台的粘性,让用户喜欢上你的平台。平台通过售卖物品的分成及广告投放可以获取丰厚的利润。

从物品提供商的角度看,如果平台能够将提供商的物品推荐给喜欢的用户, 提升物品被售卖出去的概率,这样商品可以卖得更多更好, 提升了供应商的销量,从而为供应商赚取极大的收益。

另外,平台精准的将物品 (实物物品,如冰箱,电视机等) 推荐出去并被用户购买,从侧面也降低了物品的周转时间, 减少了库存积压,对于社会资源的节省和有效利用也是大有益处的。

硅谷互联网教父凯文·凯利在“必然”这本畅销书上提到了“过滤”这一大趋势,推荐系统就是最好的提供过滤能力的技术之一,相信随着互联网的深入发展,推荐系统将会发挥越来越重要的价值!

作者介绍:gongyouliu

原文链接:https://mp.weixin.qq.com/s/DofYtvZCe-7RTicLqYtL4A

相关推荐