推荐系统的实践与思考上篇
那么当我们真正要开始做一个推荐系统时,需要从哪几个方面考虑问题?不同方面需要注意什么?笔者分享了在实际情况中遇到的一些问题以及总结出的解决方法。
我之前进行过一个小调查,得知大家普遍在工作中遇到的与推荐系统相关的问题是:数据太稀疏、数据没有形成闭环、数据没办法跟其他系统结合等等,这些内容,是摆在我们面前的实际问题,那么当我们真正要开始做一个推荐系统时,需要从几方面考虑问题呢?
第一,算法。到底应该选择什么样的算法?无论是协同过滤还是其他算法,都要基于自己的业务产品;
第二,数据。当确定了算法时,应该选择什么样的数据?怎样加工数据?用什么样方法采集数据?有句话叫做机器学习模型数据,即便拥有了一个很复杂的模型,在数据出现问题的情况下,也无法在推荐系统里面发挥很好的效果;
第三,在线服务。当模型训练完毕,数据准备充分之后,就会面对接收用户请求返回推荐结果的事项,这其中包含两个问题。其一,返回响应要足够迅速。如果当一个用户请求后的一秒钟才返回推荐结果,用户很可能因丧失耐心而流失。其二,如何让推荐系统具有高可扩展性。当DAU从最初的十万涨到一二百万时,推荐系统还能像最初那样很好地挡住大体量的请求吗?这都是在线服务方面需要考虑和面临的问题;
第四,评估效果。做好上述三点,并不代表万事大吉,一方面,我们要持续迭代推荐算法模型与结构,另一方面要去构建一套比较完整、系统的评价体系和评估方法,去分析推荐效果的现状以及后续的发展。
我会从以上四个方面,跟大家分享一下我们在实际情况中遇到的一些问题以及总结出的解决方法。
01算法
在各种算法中,大家最容易想到的就是一种基于标签的方法。
如上图所示,标签可分为两种:
第一种,用户标签。假设我们拥有一部分用户标签,知道每一个用户的年龄、性别等信息,当某类年龄和某种性别的用户喜欢过某一个物品时,我们就可以把该物品推荐给具有同样年龄、性别等用户标签的其他用户;
第二种,内容标签。与用户标签的思路相似,如果用户喜欢过带有内容标签的物品,我们就可以为他推荐具有同样标签的内容。
但很明显,这种基于标签的方法有一个重要的缺点它需要足够丰富的标签。也许在多产品中,可能并没有标签或者标签数量非常稀疏,所以标签的方法显然不足以应对。
另外,协同过滤也是一种非常经典、被较多人提及的一种方法,是一种常见且有效的思路。
随着技术的不断发展,基本从2012年以后,深度学习几乎被整个机器学习界进行反复的讨论和研究。谷歌在2016年提出一套基于深度学习的推荐模型,用深度学习去解决推荐的问题,利用用户的行为数据去构建推荐算法。
1。深度学习的目的之一:向量化
推荐系统其实是在做一个关于匹配的事情,把人和物做匹配。看似很难的推荐系统,其实也有简单的思路做人和物的匹配,把该用户可能感兴趣的物品推荐给他(她)。如果站在数学的角度去思考这个问题,我们如何去计算人和物的相似度匹配呢?
在推荐领域,深度学习的目的之一就是尝试将人和物向量化,即把某个人和某个物品学习成一种统一的表示方式,随后在这个统一的表示方式中计算这个人和物品的相似度,当人和物都映射到同一个可比较的空间中时,就能够基于计算结果去执行相关的内容推荐。
把最终的结果映射到这张二维的平面图表里,用户认为相似的内容就会映射在向量上,当拥有内容向量之后,之后再将用户映射进来即可,比如用户到达了上图某个地方,根据他所处的位置,可以向其推送教育、娱乐、科学、地理等内容。
讲到这里,有些朋友就会提出疑问:既然深度学习如此复杂,那在实践中究竟有没有作用?其实站在实战经验的角度来看,当具备一定的数据量时,会带来比较明显的效果提升,但当你要去搭建一个深度学习模型的时候,可能真的会遇到很多问题。比如:
用多少数据量去训练模型是可以的?训练数据该用什么格式?多深才算深度模型?训练模型太慢了怎么办等。这些关于在搭建深度学习模型时遇到的困难与解决方法,会在以后跟大家分享。
2。冷启动
冷启动是算法部分经常遇到的问题,在冷启动阶段,数据比较稀疏,很难利用用户的行为数据实现个性化推荐。冷启动的问题分为两种:新内容的冷启动、新用户的冷启动。接下来,我们分享一下新内容的冷启动要如何实现。
举个例子,资讯场景的需求往往是将发布的新内容(如10分钟内发布的内容),以实时且个性化的方式分发到用户的推荐结果中去。
上图这篇文章在17:41发出,那么就需要在极短的时间内根据这篇文章的内容去做一些个性化的相关推荐。此文内容围绕美食展开,用户点开这篇文章之后,文章的相关推荐里面就要有跟美食相关的一些内容。当我们要在如此实时的环境中实现推荐效果的话,其实没办法去依赖用户的行为。
这时,我们尝试提供一种思路,一种基于深度学习的语义理解模型。
这个模型跟我们前面分享的内容有一个很大的区别就是不需要用户行为,只需要分析用户文本,基于用户的内容去给每一篇文章生成一个向量。这和前面提到的模型也有相通的地方:第一,用深度学习的思路去解决问题;第二,用向量化的思路解决问题。我们只需要训练出文章的语义向量,获得文章与文章之间的相似度,从而得知文章和用户之间的相关性。
3。召回、排序、规则
如今的推荐系统已经做得相当复杂,特别是在一些大规模的应用场景中,比如说今日头条的Feed流,淘宝的猜你喜欢等,都拥有一个非常复杂的推荐系统,这个推荐系统中的各个模块可能会涉及到很多的实验算法,在一个系统中,出现10个或者20个模型都很常见。那么怎么把这些模型有效地融合成一个真正的系统呢?
(1)召回
召回,即从海量的内容里去召回每一个用户他可能感兴趣的内容,前提是拥有海量的内容,因为当内容不足时,也就不需要去搭建复杂的推荐系统。所以,当有海量Item时,需要用召回的算法从不同类别的内容里为用户生成他可能感兴趣的内容。
比如某位用户既喜欢体育内容,也喜欢军事内容,那么在第一步,无论用哪些模型,都希望达到为该用户生成一些体育、军事相关内容的效果。另一个用户可能喜欢美食和游戏,在召回阶段,我们就希望通过模型去为他生成一些美食和游戏相关的内容。
在召回阶段可能就会存在许多个模型。而经过召回阶段之后,尽管生成的是该用户可能感兴趣的内容,但这些内容实际并没有融合到一起,是一种乱序的状态。
(2)排序
排序,即将召回出来的内容做统一排序。排序过程其实就是给每部分内容打分的过程,预测每一个用户对每一部分内容的感兴趣程度,从而获知每一个用户对每部分内容的偏好程度。
(3)规则
推荐系统常常跟产品或者业务场景紧密相连,而在产品中一定有一些需求是无法用模型来解决的。因为模型只能从用户行为或者文本内容中去发掘用户和物品之间的关系,所以有些常见的业务需求要通过规则去实现。
举个例子,部分推荐场景中会出现一些运营精选的内容,运营同事的需求是:保证每十条内容中都有一条编辑精选内容,而这个需求,只能通过规则实现,而不是通过算法。
一个比较复杂的推荐系统通常分为召回、排序、规则这三个步骤。首先召回用户感兴趣的内容,第二为用户生成一个排序列表,第三用规则解决一些产品、运营方面提出的需求。
02数据
总是会听到一个这样的说法,推荐算法的效果是由模型与数据所决定的,即模型只占推荐效果中的一部分,另外一个非常重要的部分就是数据。那么我们究竟需要哪些数据?在一个实际的推荐系统中,哪些数据是有可能发挥作用的?我们又能拿到哪些数据?
通常来说一般会有四类数据:用户行为、物品信息、用户画像以及外部数据。
1。用户行为
用户行为数据最为重要,几乎没有哪一个推荐系统可以直接表示不需要用户行为数据。一方面,用户行为数据是训练模型中的一个重要数据来源,另外一方面,需要通过用户的行为反馈,技术同事才能知道推荐系统到底做得如何。搭建推荐系统的一个秘籍就是积累用户行为数据,如果没有将重要的用户行为做采集,例如在电商场景中,如果只是记录最终的下单数据,那么离推荐系统的数据要求还是有一定的距离。
2。物品信息
物品信息指推荐系统中能采集到的描述每一个内容的信息。以电商场景为例,在录入一件具体物品时,录入商品的品牌、价格、品类、上架时间等就是我们要收集的物品信息。假设在电商场景中,如果并不清楚每个商品的品牌,也就无法从一些物体的描述信息中去提取某个商品到底属于何种品牌,那么推荐效果自然受到限制。当物品信息采集的足够丰富时,对推荐系统的效果就会有一定的帮助。
3。用户画像
在传统的思路中,认为用户画像里面存储的实际还是用户的标签,但在很多实际场景中标签数量少、维度粗,可能根本不具备去给用户打标签的能力,这种传统的标签式想法,就会限制搭建推荐系统的思路。
而从深度学习的角度出发,用户画像中储存的并不是通常理解的标签,他可能存储的是这个人的向量,深度学习是把人和物品做向量化,但这个向量是不可被理解的,即我们可能并不知道这个向量表示的是什么意思,当我们看到某个用户对应的向量,我们也不知道他是对体育、音乐或是娱乐感兴趣,但我们仍能够通过向量去为他推荐其感兴趣的内容。
4。外部数据
有的人会迷信外部数据,觉得自己的数据量不够,所以一定要去购买阿里或者是腾讯的外部数据来充实用户画像,从而提高推荐系统的效果。甚至有人认为推荐系统效果不好,是因为没有外部数据。
但其实,外部数据对于推荐系统的效果,个人认为还需要一个极为谨慎的推理和验证。
首先,要先验证自己的这批用户群跟所购买的外部数据能发生多少交集。假如一个游戏平台,购买了阿里的外部数据,而这样的外部数据可能只能告诉你用户到底是喜欢买衣服、买车还是买电子产品,这样的信息对游戏平台有用吗?
假设购买的外部数据恰好命中了业务场景,可能会发挥一定的作用,但实际上,能够同时命中用户群体和标签的情况也并不常见。
大家不要认为上述的4种数据比较容易理解,所以获取时也会比较简单。其实我和我们神策团队在去构建一个实际的推荐系统时,消耗我们人力的地方往往不是算法,反而是怎么去得到正确的数据,接下来我们以用户行为数据为例,与大家分享应该如何获取我们所需要的用户行为数据?
这时候我们就要思考,当我们想去获取用户行为数据时,到底希望用户行为数据能给我们带来什么样的作用?
我总结为以下几个方面:
我们希望用户行为数据能用来训练模型,这是非常重要的一个方面。比如我给某个用户推荐十件商品,其中有两件商品发生了点击行为,模型中就会觉得这两条数据是正例,其他是负例。所以,我们需要用户行为数据作为模型的训练数据;
我们希望用户行为数据能够验证效果。推荐系统上线之后,需要用户行为数据来反馈推荐到底做得怎么样。比如点击率上升说明效果变好,点击率下降、负反馈变多、用户流失,说明推荐系统可能出现了问题;
我们希望用户行为数据能够支持我们去看ABTest效果。模型上线一定要基于ABTest,我们需要知道此次上线到底比之前的推荐算法、推荐系统等效果如何。这样,我们才能判断这一次的迭代是否有效,如果有效就将其全量,如果无效,则进一步迭代;
我们希望它能够帮助我们分析问题。我们将推荐系统上线之后,可能会碰到一些懊恼的问题,比如点击率并没有发生变化,甚至效果变差,毕竟不可能每一次迭代的效果都是上升的,所以我们希望行为数据能够定位到此次推荐系统上线后效果不理想的原因。如果上线后效果不错,此时我们希望行为数据能够分析到底是哪些因素使效果变好。
那我们应该如何去获取满足我们这些需求的行为数据呢?以曝光日志中的第一个字段expid为例,expid的中文的意思是实验ID。
前面提到了我们希望用户行为数据是能支持ABTest的,那么如何知道每一条数据是来自哪一组实验呢?此时,我们需要一个expid字段去记录每一条曝光日志是来自哪组实验。当我们再次分析ABTest效果时,就可以根据一个expid字段去区分不同实验所带来的曝光和点击。
在曝光日志中我们常常讨论如何设计一些常用字段,而另外一个具体问题就是我们怎么去采集这些数据?
简单来说,当用户在产品里面发生一些用户行为,怎么把这个数据最终落到服务器的日志中,从而用于模型训练和效果分析呢?
做用户行为的采集,通常有两种方式。第一种就是自助埋点,客户端先把用户的行为记录下来,之后传给服务端,服务端再去传给推荐引擎。另外一个埋点方式是SDK埋点,我们直接使用SDK去做推荐引擎的埋点。
SDK埋点有两个方面的优势:
SDK埋点的接入成本低,它有比较成熟的埋点事件和埋点验证方案。另外SDK有埋点接口和文档指导客户埋点,无需关注上报问题;
SDK埋点的容错性比较高。如果是自助埋点,从客户端到推荐引擎经过了服务端,数据出现问题,难以回溯埋点问题、传输问题、数据质量维护成本高,SDK埋点就会相对方便。
那么当有了行为数据之后,如何去训练模型?通常会有以下几个步骤:
构造正负例。比如给用户推荐十条商品,有几条发生点击,就有几条正例,其他没有发生点击就是负例;
构造特征工程。稍后会以一个电商场景为例,具体讲解通常情况下,如何构造特征工程;
数据采样。数据采样对整个模型训练的效果影响较大。
下面以电商场景为例,讲解如何做特征工程,主要分为2个方面:
商品维度。在商品的维度里,我们可能关注一些商品的品类、品牌、价格、所面向的性别,以及各种用户行为反馈的一些数据,比如点击率、收藏比率等,这些内容一方面体现了商品本身的一些属性,同时还体现商品的质量;
用户层面,通常首先考虑用户的年龄和性别。因为在电商领域中男性所偏重的商品和女性之间存在较大差异。另外还有用户的品类偏好、品牌偏好,以及价格偏好等。
在数据方面,跟大家分享一下我在实际工作中遇到的坑:某一次小的流量上线之后,我和团队成员发现效果不如预期,根据以往的实践经验来说,不应该是这么差的结果,当我们去分析数据时,发现有两个方面的数据异常:
第一,命中行为模型的用户较少,通常情况下,只要不是一个新用户,理论上来说,都应该能够命中我的行为模型。我们当时的新用户比例在20以下,而命中模型的用户大概仅为30,说明大量的用户没有命中到模型;
第二,很多请求的ID未出现在日志中,当时我们怀疑,是否我们的推荐结果被别人作弊刷掉了,因为用作弊能很好地解释这些请求并未落到日志中的原因。
但最终,我们发现并不是作弊的问题,而是因为用户ID没有统一。前端在用他们理解的一套用户ID体系打日志,但是后端在用另外一套用户ID体系发送请求,于是所有的数据无法对上,后端过来的请求总是新用户,而训练出来的模型命中不了任何用户,最终,我们建立了一系列的方法和工具以及流程去保证整个用户ID体系的一致性。
由于篇幅限制,在线服务和效果评估将在下一篇文章进行介绍,希望对你有帮助!
揭秘男性生育年龄不封顶生儿育女,乃是人类得以延续的大事。以往,人们的目光基本上锁定在妻子身上,其实丈夫也是举足轻重的一方,所以了解一些男人的生育知识也有必要。为此,本文向你介绍科学家们的一些新说法。……
你要学会接受所有的不公平当你听看到这样的标题的时候,可能会感到有些不解,为什么要学会接受所有的不公平?但是通过下面的仔细分析你就会明白。有很多事情,既然我们无法改变,不如主动的去接受。因为心态的改变,……
邻居好多用万能钥匙连我家的我家的网要想避免邻居使用WiFi万能钥匙连接自己家的无线路由器,要先找到WiFi密码是如何被泄露出去的漏洞。在此,先简单的谈一下诸如WiFi万能钥匙这类APP的原理。无论是WiF……
了解这些客服技巧让你的店铺销量翻倍通常来说,消费者购买一件商品的欲望来自喜爱与自身需求,但最后选择购买哪个店铺的产品主要会取决于两大块:产品服务。而客服服务恰恰是店铺的重点所在,一个重视服务,不断改善服务品质,……
校园的早晨新的一天开始了,校园里又热闹起来了。孩子们背起书包走进校园,向敬爱的老师问好,向随风飘扬的国旗敬礼。校园的早晨是一幅美丽的图画。一走进校园,首先映入眼帘的是七级叠水台,三……
如何用哑铃锻炼二头肌随着生活水平的提高,人们越来越注意身体健康和体形的美丽,为此在健美方面的投资也日益增加,而且很多人把大部分时间用在锻炼上肢力量上了,那锻炼上肢力量时该注意什么呢?训练前应先评估……
犹太人传奇营销十二式高招一、为女性服务犹太商法认为:要想赚钱,就必须瞄准女人。因为,男人赚钱,女人花钱男人的兴趣根本不放在保管与使用(采购家庭物资)金钱上,而是放在赚钱上;保管与使用(采购家……
利用移动学习的优势促进传统课堂教学的发展摘要:本文就利用移动学习的优势进行论述。移动学习相对于传统教学来说具有灵活、高效、针对性强、交互性好等特点,可以成为传统教学理想的补充。充分利用移动学习的优势,解决传统教学的种……
哪些人群不适合吃蜂胶1、孕妇禁服:孕妇食用蜂胶后,会刺激子宫,引起宫缩,干扰胎儿正常的生长发育。2、1周岁以下的婴幼儿不宜服用:其功效成分有可能影响婴儿免疫系统正常发育,即使确需服用时用量一……
登陆造句用登陆造句大全【登陆dngl】:1。渡过海洋或江河登上陆地。特指作战的军队由水面登上敌方的陆地。1、今天夜里,台风“浣熊”登陆中山,在台风中心风力达12级,台风来了的同时下起了暴雨,天……
蜥蜴是变色龙吗和变色龙有什么区别严格来说,变色龙是蜥蜴的一种,但并不是所有蜥蜴都是变色龙。蜥蜴指的是爬行纲蜥蜴目中的动物,包含的品种非常多,而变色龙指的则是蜥蜴目避役科避役属中的动物。由于它们也属于蜥蜴目,所……
日本最美女优十大最好看的女星排行8:冬月枫娃娃脸的冬月枫,作为80后的女星,早已名闻日本成人片界,她美丽大气,看起来像富贵人家的小姐,身材窈窕,神态妩媚也可楚楚可怜。日文名:冬月中文名:冬月……
春天来了送走了寒风刺骨的冬天,就要迎来春光明媚的春天。春天是我最快乐的季节,所以我喜爱春天。春天来了,春姑娘来看万物复苏的大地。她来到花朵们的公园,花朵们正在说谁更漂亮。玫瑰花说……
关于推动乡村振兴战略实施方面的调研报告关于推动乡村振兴战略方面的调研报告实施乡村振兴战略,是党的十九大作出的重大决策部署,是新时代做好三农工作的总抓手。今年年初,中央、省委、市委对乡村振兴战略作了全面部署,分……
我喜爱的桂花树星期六的早晨我来到幸运星,唐老师笑着说:同学们,跟着我来。我们疑惑地跟着老师走出教室。站在很远,我就闻到了桂花的香味,我不禁深深吸了一口气。随着老师手指的方向望过去,我们……
剖宫产的并发症及其防治有哪些随着剖宫产率的上升,新生儿窒息的发生率并没有明显的下降,与阴道分娩相比,剖宫产产妇死亡的相对危险性回升。就拿术中并发症来说,剖宫产可能出现子宫异常出血,手术中也可能对膀胱、输尿……
什么运动可以最快减肥呢在减肥的问题上大家都必须要认真对待,不要觉得一些方法见效快就盲目的减肥,只有确保对身体健康没有伤害才可以。在各种方法中自然要数运动减肥法效果最好了,而且可供大家选择的运动方式非……
有趣的稚嫩童言导读:娃很爱吃饼干之类的零食,因为妈妈怕他吃了上火,这类零食很少给他吃。一次他知道妈妈肯定不会给他吃饼干了,他对妈妈说:娃今天不吃饼干,因为饼干很上火。妈妈说:那妈妈吃娃不吃好……
浮夸之最1最真的不是我不会再骗你,而是不再骗你的那个人绝不是我!2最毒的不是你女朋友不是处的,而是你女朋友永远都是处的!3最狠的不是你生孩子没有屁眼,而是你生孩子上下都是屁……
高跟鞋走路什么先落地女生都爱高跟鞋,因为高跟鞋可以让女生显得更高挑,更纤瘦,走起路来更妩媚更有自信。不过高跟鞋不是那么容易驾驭的,那么高跟鞋走路什么先落地?下面就跟她时代小编一起来了解下吧!……
管理者的成长从授权开始管理的本质是什么?MBA的教材中说:管理就是计划、组织、协调、控制。也有人解释为管理是通过团队,根据一定的资源来完成特定任务的一种过程。凡此种种,都是对管理的一种定义方式,但都……
青年宇白扎西和妻子夏嘎曲宗山谷里有一个青年,名叫宇白扎西,平川上有一个姑娘,叫做夏嘎曲宗。两个人从小就十分要好,好象茶叶离不开盐巴。看样子这桩婚事算定了吧!可是,不行!宇白扎西的阿妈,是个嫌贫爱富的老太……
身份证丢了可以异地补办吗身份证丢了怎么补办居民身份证是中国公民用来证明本人身份的证件之一,对本人来说是很重要的。目前在春运期间,身份证主要是用来乘坐飞机、火车等,这时候不小心弄丢了自己的身份证该怎么补办呢?一起来看看吧……
诛仙序章《诛仙》的出版的确是武侠小说出版的一件大事情。据记者了解,从2003年以来,凡是喜欢在网上读小说的,没有人不知道《诛仙》;凡是奇幻小说的书迷,没有不知道《诛仙》的;凡是武侠小说……