推荐系统修行之路

推荐系统的坑

2022-03-25  本文已影响0人  Nefelibatas

坑一:到底要对哪个指标负责?

以 58 同城 App 本地服务推荐业务为例,我们需要关注的指标有 CTR、CVR、Call/UV、浏览时长等,那么最应该关注哪个指标呢?

如果只关注 CTR,那么低俗内容和标题党就会显现出来;

如果只关注浏览时长,那么就会有大量长帖子出现;如果只关注 Call/UV,那么比较短的帖子更占优势。

事实上,这些指标之间属于相互依赖、此消彼长的关系。然而,算法模型多是针对单独的指标进行样本筛选和优化,如果指标不同,结果也就大不相同。

针对这个问题,各大厂的通用做法是把这些互相矛盾的指标通过添加多个超参数连接起来,从而形式一个融合指标。此时,如何取这些超参数又成了一个问题。其实,在实际工作中,大多数的超参数都是拍出来的。

坑二:为什么离线指标很棒,一上线就不行了?

其实这个问题牵扯的东西比较多,这里主要说两种相对比较常见的原因。

离线训练的数据都是隔天处理,且深度学习模型需要耗费大量的时间和资源对数据进行训练,这就使得上线之后往往模型就过时了,而线上属于实时样本数据。

离线训练的数据是有偏的,而线上实际用于预测的数据是无偏的,比如用户只习惯与某个位置的产品形态进行交互,并不是因为他们喜欢这些物品;再比如用户无法与未曝光的物品进行交互,也并不是因为他们不喜欢这些物品。

除了能够“阴沟里翻船”,还有一些已知的从理论维度尚且没有确定解决方案的问题。

坑三:准确度和丰富度如何两全?

在推荐系统中,准确度决定了平台的收益(“钱”),丰富度决定了用户对平台的“感情”。

俗话说:“谈钱伤感情,谈感情就伤钱”,通常情况下我们只能牺牲一定的准确度来换取丰富度,从而破解“信息茧房”,以期在短期收益和长期收益中做权衡。

如果一定在两者之间做选择的话?

牺牲多少指标收益来保证探索才是合适的,这是一个艰难的抉择,如果牺牲过少,则没有太大意义;牺牲过多,则用户体验在多数情况下是负向。

坑四:如何给推荐的结果一个合理的解释?

推荐系统的交互对象是用户,但是现在的推荐系统对于用户来说就像是一个黑盒,有时会给用户带来“惊吓”。因此,给予用户一个合理的推荐解释很有必要。这不仅可以加速用户决策,起到说服和原谅的效果,还能够建立用户的信任感。

事实上,解释并不是那么容易做出来的,原因总结为两点。

现在的深度学习算法是不可解释的;

解释一件事存在一定概率性和歧义性。比如“他是坏蛋,你是好人”这种描述就比较直白且容易理解,而现实世界往往不是非黑即白,比如“他也许是坏蛋,你可能是好人”。加上受展现的限制,推荐解释要求一定是短句,这就会造成一些解释上的歧义性。比如“开刀的是他父亲”,在没有上下文的情况下很容易让用户误解,父亲到底是医生还是患者呢?

虽说我们无法从根本上解决这个问题,还是想分享几种解决路径:

通过用户之间的相似性,给出解释是另一个相关用户也喜欢;

利用物品属性之间的相似性,给出解释是看过另一个相同属性的物品(比如导演和主演的电影等)。

上一篇 下一篇

猜你喜欢

热点阅读