固执的推荐引擎

一直认为推荐引擎可以是很简单AI应用,也可以是最有潜力做复杂的。

数字化时代之前的推荐是怎么做的。试想一个初次当家的小姑娘跑进百货商店,和售货员阿姨说:"我想买一块香皂,阿姨有什么推荐的吗?”售货价上一共只有三款香皂,售货员阿姨根据记忆,嗯,这么大的小姑娘一般都是选这款,于是就推荐了这款。这个过程数字化之后,就是最简单的推荐引擎。

随着物资越来越丰富,香皂选项可能上升到几千种,香皂的属性从只有价格和香味扩展为功能,成分,产地等几十上百个属性后,每个人的需求也更加精细化,那售货员阿姨的推荐就没那么简单了。这也是一般购物网站的推荐引擎需要实现的功能,从琳琅满目的商品中做推荐。每个用户都用一个矢量来表示,其中每个元素都对应一个用户属性,比如说性别,年龄,区域,终端设备,访问时间,消费级别,购物欲…,你可能会质疑,用户终端设备信息有什么用,用户的购物欲是怎么得到。因为本文是讲推荐引擎,所以不跑题去讨论这个了,有兴趣的可以参考之前的一篇文章<最了解你的人是谁----是他是她还是它>。有了这个用户属性后,要在顾客数据库里找出最相近的那个用户或一组用户,把他们的选择推荐出去就好啦。

可能你还是会觉得这很简单。但仔细一想,很容易就会发现两个问题。

问题一,当你的数据库客户有几个million,用户属性增多后,实时的找出最相似的用户,计算量相当惊人。而作为在线推荐,据实验统计,时延的增加会直接降低点击率。

问题二,根据相似客户的选择做推荐,会使得新上架产品永远没有机会出现在推荐当中。

对于问题一,很自然的大家会想到clustering之类的离线计算来降低在线计算的压力。不过在某些情况下会降低推荐的效果。

对于问题二,我觉得吴恩达的<机器学习>课程当中举的例子可以很好的解决这个问题。就是商品的属性也矢量化,匹配用户的结果并不是直接targe到某个商品,而是target某组属性的商品,只要新上架的商品满足属性,就在推荐范围之内。建立这个数学模型和求解应该不是个难题。在推荐引擎技术领域,称之为从用户协同过滤,转换到用户内容混合协同过滤。

之前提到,用户的各种属性可以根据商家们长期积累的收集数据手段,应该不难解决。那商品的属性呢,特别是像电影,音乐,书籍之类的推荐,仅仅仅靠类属,年份,拍摄地等硬属性,是远远不够的。于是很多推荐引擎会去网上爬数据,针对某部电影或某个音乐通过自然语言处理做情感分析。比如说Spotify会从博客上收集用户对歌手和歌曲评论的关键词,然后收取top的一些评论语作为内容属性。(配图来自网络)

Image

以上的讨论我们没有提及到客户在某个网站已经有了购买记录。实际上,商家们常常会根据用户已经购买过的商品做推荐,这就是比较有名的”猜你喜欢”推荐。亚马逊称自己的推荐算法就是不做用户协同过滤,而是完全依赖用户的已购买选项来推荐。通过商品之间的相似度,来推销相近商品。而商品与商品之间是否相近很大取决于历史上客户的购买组合,并不是物理上的相似度。举个例子,如果你买了打印机,那可能相似度最高的是打印纸和墨水,而不是另一款类似打印机。这个算法的很大优势是,由于商品属性在短时间内较为稳定,所以大部分的计算量可离线完成。同时,将必要组合商品推荐给用户,很大的提高了用户体验。

文中开始提到推荐引擎是很有潜力做复杂的。用户的品味不仅仅是商品的硬属性决定的。对于软属性,除了网上公开评论的情感分析,对于音乐本身的分析也是一个相当大的领域可以钻研,同理与电影,书籍或其他和taste关系比较大的商品。对此,Spotify的推荐引擎引入了音乐模型来分析音乐本身,这也使得新上榜的音乐有同等的机会出现在推荐列表里。

之前一个朋友转过一篇文章,分析AI为什么不能超越人类创作出最好的曲子,论点是人类对于某个歌曲的喜好,不仅仅是歌曲本身,歌曲相关的故事,超越自我的创作都是歌曲能够惊世的重要因素,是AI无法做到的。同理,对于主观非常强的内容推荐,AI是难以做到突破性的推荐。这也类属于推荐引擎比较纠结的经典问题,多样性Diversity。

我有在Medium上看blog的习惯,如果我看了一两篇和python visualization的文章,接下来的日子我的medium主页就充满了这类文章,非常的烦人,不如不推荐。瑞典本土听书软件storytel,估计非常自信与自己的推荐引擎,所以分类浏览做得很简陋。由于冷启动问题,初次用户费很大精力找到自己感兴趣的书,之后由于推荐缺乏多样性,就被锁定在你看过的书的类属里。一个朋友很明确的告诉我,就是很不满它的推荐,所以不听了。相比之下,Spotify就做得比较好,可能也不一定做得比较好,而是由于人们对于歌曲的喜好的风格比较执着,换来换去,只要风格一致,还是比较喜欢听,不容易腻。歌曲可以反复听,文章,书或电影一般不会反复看。

在开始写这篇文章之前,一直想着一个问题,推荐引擎到底是商家受益更多还是用户收益更多,商家提高推荐引擎推荐质量的动力在哪里?然后我又想起了电商还不普及的那个年代,经常在超市拿起一件你经常用的商品放进购物篮,就会有推销阿姨过来,把你的选择刺裸裸的鄙视了一番,之后极力推荐自己的商品。利益驱动之下,怎么防止商家把这个功能做进推荐引擎呢。就比如搜索引擎,怎么确保放在最前面的搜索结果不是收了最多钱的。用户的确就是羔羊。好在和推荐引擎技术相关的论文或文章中,单纯的工程师们,要致力提高的还是点击率购买率以及推算出来的用户满意度。

去年夏天看过一本书,叫做<nudge>。作者提到,很好的选择架构,选择人会受益很大。比如说菜单的菜品顺序摆放,会极大的影响顾客是选择健康的沙拉,还是油炸垃圾食品。推荐功能从这个角度来说,不仅是nudge,甚至是push。做一个良心的推荐引擎对用户来说有多重要。

 

部分引用: 

https://medium.com/datadriveninvestor/behind-spotify-recommendation-engine-a9b5a27a935

https://www.cs.umd.edu/~samir/498/Amazon-Recommendations.pdf

https://marutitech.com/recommendation-engine-benefits/

 

作者微信公众号:

Image

posted @ 2021-02-09 23:32  dagis  阅读(290)  评论(0编辑  收藏  举报