第09课:灵活多变的推荐算法设计

在前面的几个课程中,我们已经学习了包括基于内容属性的推荐、基于用户画像标签的推荐,以及经典的基于协同的推荐,并且针对每个常规算法都进行了 Spark 示例的讲解。

基于常规的理解,可能大家会觉得推荐算法的路子大概就这样子了,基本上我们所熟悉的都已经接触过了,实际上不是的,对于推荐系统来说,我们核心要抓住的推荐的业务目标,以及提升的优化目标,至于底层算法实现的逻辑,实际上是可以灵活多变的。

啤酒与尿布的故事

看到这个标题,或许很多人已经会心一笑了,应该听过太多次了,好吧,这个故事估计快讲烂了。以免部分同学没有了解过,这里再讲一次,听过的可以跳过这部分。

1-4

故事来源实际就是,1998 年沃尔玛的数据分析师通过对沃尔玛的用户购物清单进行分析,发现了啤酒与尿布经常出现在相同的购物篮中,这种搭配销售的情况引起了他们的注意。

然后他们尝试将啤酒和尿布的位置进行了调整,放到了相同区域,以缩短用户的购物路径,从而提升用户的客单,达到了比较好的销售情况。

这就是啤酒与尿布的故事来源。

可能会有些同学说我并没有在沃尔玛看到啤酒与尿布放在一起啊等诸如此类的,可能是购物人的行为变更导致了这个现象变迁了,当然,也有可能是当时沃尔玛的数据分析团队夸大了效果。

但不管怎么样,这里都不属于我们要讨论的范畴,我们举这个例子实际上是想表达,用户的共同购物行为确实是存在的,如果加以研究,进行商品的关联分析是有好处的。

所以,在 1993 年,美国学者 Agrawal 就提出了购物篮的分析算法,通过分析购物篮,分析商品间的关联关系,再根据商品的关联关系再研究用户的购物行为。这就是大名鼎鼎的 Aprior 算法,一种经典的关联规则算法。

将关联规则算法应用于推荐场景中,会发现天然契合,当我们在浏览某个商品时,通过关联规则计算商品之间的关联关系,进而进行推荐,某种意义上说是合理的,并且有助于提升联单率、提升客单。

并且,需要注意的是,这里所谓的关联关系并不是如我们之前计算的那样,通过商品属性进行相关计算。这种关联关系是通过购物行为产生的关联,在商品属性上并不一定是严格的相关。

但这并不影响,我们最终要的是推荐效果,而不是要属性到底有多相关。通过购物行为进行商品的关联计算,进而研究商品浏览场景的关联推荐,所以,推荐的算法设计是可以很灵活的。

腾讯的相似人群扩散算法

对于腾讯的社交广告,大家应该能够耳熟能详了,在我看来,某种意义上这种广告的效果投放,实际上也是一种推荐场景,将合适的 item(广告内容)投放给 user(用户)。

而针对于腾讯的社交广告投放,最经典的莫过于其“相似人群扩散算法 Lookalike”。

2-4

如上图,Lookalike 的直接意思很容易理解就是找相似性,广告主进行广告的提交,然后圈定了固定的确认用户,这就是种子群,作为学习的正向样本。

然后我们通过种子群与用户池做计算,找与种子群相似的用户,最终进行受众扩散,然后达到广告投放的规模效果,或者换种说法,将广告推荐给合适的人进行浏览。

看着原理很简单,但实际上操作过程会非常复杂,考研计算能力以及优化算法的设计。

比如,首先在大规模数据集下进行用户的相似计算就是个难题,因为计算量过于庞大,我们必须进行优化,比如我们可以进行用户聚群,然后进行群相似计算,大大缩小计算量。

其次就是相似计算,到底以哪些基础特征作为训练特征,才能起到相似计算的效果。又比如,我们可以通过逐步投放推荐,逐步优化特征计算的方式来提升效果,一边进行效果回收,一边进行特征优化,最终逐渐扩撒人群进行推荐投放。

这些都是我们在实际生产场景中需要考虑的。

我们会发现,Lookalike 算法在重度依赖于社交关系链的推荐场景中尤其合适,所以,推荐的算法设计是很灵活的。

推荐算法设计的多样性

上面的例子我们举了两个不同的业务场景,其用到的推荐算法的设计思路是不同的。而实际上还有其他很多的设计思路,只要对于推荐最终要的效果是有益的就可以。

在前一段时间,今日头条分享其推荐用到的一些推荐算法,其中就包括了我们所熟悉的协同,LR、GBDT,甚至还用到了深度学习的模型,比如 Factorization Machine 和 DNN 等。

协同就不说了,分类的模型用于推荐是很正常的,每个推荐项实际上都可以转化为二值分类问题,即推荐或者不推荐。而 LR 则是通过反馈数据构建基于回归的预测模型,来预测推荐出去之后点击的概率有多大。而在深度学习火起来之后,其各种应用场景都在被探索,其中用于推荐领域是常见的一个研究方向。

针对于不同的场景,各种算法的设计也五花八门,有个脉脉上流传很广很有意思的图可以分享一下。

3-2

虽然有点恶搞的意味,但是他确实很形象的表达了推荐算法的多样性,以及针对不同场景的灵活设计。

如何解决算法的快速实验

所以,最终我们会发现,在推荐领域里,推荐算法的设计实际上有太多可尝试以及可研究的方向了。

算法模型的多样性,并且最终对于推荐效果的影响又很大,关键我们又很多新的思路可以去尝试,如果做到快速高效呢?

而我们之前又说道过,推荐系统是个完整的系统,而推荐算法只是其中的一环。

这就是我们接下来要讨论学习的点,如何设计整个推荐算法架构、系统工程架构,以实现算法模型与整体系统的解耦,加以 AB 分流实验平台的构建。

最终我们希望看到的是,在操作成本很低的情况下,可以快速的进行一些新的算法模型试验,然后快速进行迭代调整,最终提升整体的推荐效果。

这就是接下来我们要学习的,推荐系统的架构设计,下个章节见。

(全文完)

(转载本站文章请注明作者和出处 第09课:灵活多变的推荐算法设计