大数据——从推荐策略算法到推荐系统,到数据架构,再到产品设计

01 推荐策略以及算法的百花齐放

承上,我们讲了最基础的基于内容属性本身的相似关系进行针对物品的推荐,再到基于用户的兴趣属性进行推荐,再过渡到基于协同关系进行推荐,其实这些都算是推荐的策略,说的更技术点就是推荐的算法。

 

而推荐策略的想象力其实无限的,并不局限于某种固定的策略,只要从业务的角度走的通,其实都是可以的,当然具体的选择以及搭配问题,后面我会讲到。



加我的群号大数据:   710219868, 邀请码 南风 (必填)有大神有资源一起交流学习,共同进步

我们来看已经归属于大腾讯的“起点中文网”的推荐。

大数据——从推荐策略算法到推荐系统,到数据架构,再到产品设计

PS:截图是我随意点击的一本小说《飞剑问道》,不重要,可以不care。

 

从他的推荐理由“喜欢这本书的人还喜欢”来看,显然是通过用户之间的阅读关联性来做的这次推荐,说的更通俗易懂点就是购物篮分析:买这个商品的人还经常一起买其他商品。

 

是不是逻辑关系很像?当然实际上到底是不是这种推荐策略,就需要起点的算法工程师出来讲话了,我个人只是从业务层往下进行追溯从而得出的结论。你看,我说的对不对,策略一层是没有定式,购物篮分析的逻辑依然是可以用在看文学站的推荐逻辑上,没毛病。

 

我们再来看一个策略,依然是腾讯的,腾讯社交广告一直对外宣称的技术“Lookalike”,翻译成技术语言就是“人群扩散算法”。简单的逻辑是,先找种子用户,然后基于用户画像和关系链(这是腾讯强项)挖掘相似用户,然后再将受众进行扩大。

你觉得这是推荐?看着更像是广告投放,但广告的投放谁说不是一次信息主体的推荐呢?本质上应该是没有这么大的差距的,只是一个从业务的角度去描述,一个是更偏技术的角度的说法。

 

随着阿法狗诸如此类的人工智能应用的推广(造势),以及近几年计算能力的大幅提升,使得依赖于大计算能力的神经网络的相关算法得以大放光彩,基于神经网络的一些推荐算法或者策略也是一个大的研究方向。

 

综上,不必举过多的推荐策略或者算法例子了,核心想说的就是,其实策略层本身就是百花齐放的状态,甚至你随意光顾一些平台网站,都能遇到不同的策略和算法,甚至是搭配组合,没有限定的策略和算法层,只有不同不适应的应用场景,以及从策略到推荐系统层,其实还是有很多东西的。

02 从推荐策略算法到推荐系统

接上面的话题,从策略算法层到系统层,差的有哪些东西:

1.首先是策略并不等于系统,这是明确的,推荐的整体逻辑也未必是一种逻辑在里头,也可能是多种的策略组合。

2.其次,如何选择策略,如何组合策略,如何去评判,如何追踪效果,这点尤其重要。

3.对于整个系统级的支撑,在工程化,以及数据架构上如何去实现,才能支持上层的算法逻辑层。

4.产品层的策略对整个推荐系统的影响有多大。

 

如上四个问题都是从推荐系统的角度出发进行分析的,从这里我们知道,光知道策略或者推荐算法,是不是离推荐系统的构建还差那么好几个量级,02这个小节,我们先从1/2两个小点进行分析。

 

策略!=系统,这点是明确的,并且选择哪些策略去做推荐,本身就有严格的选择机制以及评判机制在里头的。

大数据——从推荐策略算法到推荐系统,到数据架构,再到产品设计

大数据——从推荐策略算法到推荐系统,到数据架构,再到产品设计

再多的例子这里就不举了,很多看其推荐的列表大致能猜测一些其推荐的策略重点,其实或多或少还真是与调侃的有一些相似之处,那从表面看起来大部分的推荐系统都不像那么高大上,问题出在哪,是他们的策略就是这么Low?是他们的算法工程师太菜?

 

其实核心问题在于推荐系统的评价机制,在实际的场景中,一切以效果评价为导向,将策略,甚至是组合推荐的策略往评价得分高的方向进行调整,对于整个系统来说才是有意义的,并不是说算法高深就一定好。

 

那么,具体什么是合理的评价方式呢,大部分来说都是为了让用户的挺溜时间加长,最直接的表现就是点击转化,但并不是完全绝对的。以百度的调侃为例,你要的是馒头,人家给你推荐的是馒头制造机。

 

这跟其商业模式是有一定的关联的,百度之前的核心就是关键词竞价广告,那么,他必然要衡量几个方面的东西,第一是关键词与搜索词的相关性,离太远太扯淡的不行;第二相关广告的竞价。

 

于是,他就需要衡量准与商业价值之间的关系了,所以,并不是一味地追求准确,而是追求在其中最佳的平衡点,能给百度带来最佳的广告收益转化。

 

再说其他的之前我所体验的推荐系统,他们就一定不准吗?或许以我个人的角度讲,他们推荐的并不是很符合我的口味,但是如果他们是从整体转化进行评判呢?这种机制是他们所有目前方案中的最佳转化方案,那为什么不能用?少数的个体badcase并不会影响整体的策略,也不用管low还是不low,抓住核心问题。

 

当然,不可否认的是,如果能满足所有的人的意愿认为它很准,又能让整体系统的转化做到最大化,那当然最好了。

 

所以,从推荐策略算法到推荐系统,最核心的一个东西就是评估机制,构建起完善并且合理的评估机制,有利于整体推荐系统的优化和改进。说到评价,那不得不说的就是AB测试了,一个好的推荐系统,一定是会带AB测试的,能够很好的进行策略对比,进行流量分配,效果展示等等。

 

03 推荐系统架构

前几天记得分享过朋友的一篇文章,核心就是讲推荐系统架构的。对于整个推荐系统来说,系统的架构设计会严重影响到整个系统的效果与上层应用的体验。

 

在推04中,记得大致提到过基于用户画像推荐的短期兴趣与长期兴趣,其实长期兴趣的挖掘还好,基本基于离线的计算结果依然还是可行的,但是对于很多推荐机制来说,就是短期兴趣,更切确的说是你当前行为的兴趣表现。

 

这意味着,我需要实时的对你的浏览行为进行兴趣分析,然后实时的反馈给你推荐列表,这种机制看似简单脑残,但往往很有效,因为他足够实时,而在段时间内,人的注意力一般只会放在很垂直的某个点上,所以往往就很有效。

 

但是,看似简单的机制,对于这种需要支持实时分析,实时反馈的机制来说,架构的设计就是一个挑战。此外,在整体的系统构建过程中,你需要考虑算法逻辑层可迭代性的问题,即通过反馈数据能够不断的自动调整你的算法策略,从而让效果更佳,这些都是需要数据架构进行支撑的。

 

此外,就是上面说的AB测试,效果反馈机制,都是需要集成至整个推荐系统中,再有承接上层应用,你需要考虑好计算的效率与结果输出的效率问题,所以缓存的设计与缓存更新的机制又是个问题。

 

从整个架构层来说,其实是相对繁杂的,与我们之前所说的策略算法层,这是另外一个维度上的东西,需要我们从整体系统级别去考量。

05 综上

到这里,整个推荐系列基本就结束了,从整个系列的逻辑我们知道,如果你要架设一个推荐系统,那么首先对于推荐系统的一些基本概念需要熟悉,然后了解不同的推荐策略,然后结合场景分析最佳的一些推荐策略算法,然后基于架构的考虑(不同层级的分离),搭建整个推荐系统,然后从产品的思维角度去优化,最终产出符合你业务特征的推荐系统。看着容易,其实操作起来还是有一定困难的。

 

推荐系统在一般业务规模小的时候,其实鸟用不大的,只有在业务有了一定规模之后,那么就到了锱铢必较的阶段了,使用推荐哪怕增加了5个点的增长转化,也是极好的,更何况可能远远不止呢。

 

目前很多主流推荐系统都是基于用户的画像、兴趣爱好推荐的(这是一种相对靠谱,又容易在大规模用户场景中使用的策略),你越是被他推荐的东西牵着走,你后续就会越陷入其中,最终导致了你所获取的信息一直都是圈定在某个范围内的,这就是所谓的“信息茧房”。

 

其实要形成信息茧房一方面是由于推荐机制导致的,另一方面跟场景也是有很大关系的,比如如果用户被你所推荐的东西所推动,那么就容易陷入这种状态,如果用户获取信息的渠道有多种(比如导航、搜索等等),那么就不那么容易。

 

典型如今日头条,如果在前期你不小心点击了一些比较low的内容,然后它就越给你推类似的文章,结果你越看,它就越推,于是你所看到的东西都是一大坨类似离谱八卦了。从直观的角度看,今日头条重度依赖于用户的阅读行为,而头条又是一个重推荐场景的产品,所以会相对容易陷入“信息茧房”的这种情况。

 

单纯从转化的角度看来,短期内可能对于系统侧来说是正向的,因为他才不会关注到底是不是“信息茧房”,他只关注转化有没有提升,但长期来说,对于用户就是一种损害。所以,我们在考虑设计推荐策略算法的时候,多多少少都会考虑推荐的新颖性。

 

但新颖性这东西就是一个双刃剑,新的东西意味着不确定,不确定意味着可能低的转化,所以好的推荐系统一定是在确保你兴趣的同时,又会考虑新颖,并且这是一种顺其自然的推荐信息主体的过渡,构建起你偏好信息与新信息之间的关联性,让你同样有欲望去点击那些新的东西,不过这就很难是了。