推荐系统+因果推断(一)——KDD2021推荐系统中去除混淆缓解偏差方大

技术

论文 Deconfounded Recommendation for Alleviating Bias Amplification

https://arxiv.org/abs/2105.10648

今天和大家分享一篇因果推断和推荐系统结合的文章。因果推断在推荐系统中主要应用于用户增长、定价算法以及纠偏等领域,这篇文章属于纠偏领域。主要用到了我们前面[因果推断(二)](http://mp.weixin.qq.com/s?__biz=MzkxNjI4MDkzOQ==&mid=2247483734&idx=1&sn=d548148c2de7783ea8ca89ad2e8c9a64&chksm=c1530252f6248b440ef29b5eb713309df4c860a871e2699a7145c18d92b9f8e55cd0e8834a74&scene=21#wechat_redirect)和[因果推断(四)](http://mp.weixin.qq.com/s?__biz=MzkxNjI4MDkzOQ==&mid=2247483799&idx=1&sn=c384d95e040b3ec73fa57465ce7cf9f7&chksm=c1530293f6248b85b1ae4b28e34d27078a1af92371b2f64828026bf638a3dfd23061f3249ccd&scene=21#wechat_redirect)中提到的混杂和后门调整等内容,有不熟悉的小伙伴可以翻看前面的文章,好啦,进入正题。  

picture.image 背景

推荐系统中通常用于学习的数据是不平衡的。由于我们是从用户的历史点击或者转化数据中进行学习,因此通常会面临这样一个问题:对于推荐过的商品我们会认为用户是很感兴趣的,所以很可能会继续给他推荐,而对于没有推荐过的商品,模型会认为用户不感兴趣,因此不推荐。这是一个恶性循环,久而久之,整个推荐系统就只会推荐某几个商品,导致整个推荐系统非常不健康。

picture.image 举个栗子(极端情况)

还是沿用之前小夏开店的例子,小夏经过不断努力赚了很多钱,现在的他已经做了自己的购物APP,并且售卖的商品也比以前多了很多。假设现在他的店铺中电脑主机,显示器。学艺不精的小夏凭借网上学到的知识,自己coding了一个推荐算法,并用于商店中。


这天小秋正想组装一台台式机,在APP上逛主机有关的店铺,后来APP首页推荐了小夏的店看到小夏这的主机还不错,就下单购买了。但是从那以后,小秋的APP中就一直推荐主机,但是对于小秋来说显示器,鼠标等配件才是他更需要的,这使他很苦恼——“为什么每次都给我推荐主机??我都买过了”。于是,他把问题反馈给了店主小夏,小夏通过不断学习,终于发现这是因为  **数据有偏** 导致的。


 **小总结:** 小秋买了主机——>系统收到了这个反馈——>小秋对主机看兴趣——>推荐主机——>小秋可能还会点——>继续反馈——>......久而久之,小秋就烦了,每次都是主机。这就是数据有偏会带来的问题,也是本篇文章需要解决的问题。

方法

基本思路

本文的思路是采用因果推断的方法,分析得到user-item的不平衡历史数据会影响用户表征和预测分数。

picture.image

构建因果图,分析通常所用的推荐系统的过程(图2.a)。D为历史点击数据分布,U为用户表征,M为用户在item分组上的表征,I为item表征,Y为预测分数。从因果图中,可以计算得到推荐分数P(Y|U=u,I=i),公式如下:

picture.image

通过因果图可以得到(1a),再结合贝叶斯定理可以得到(1b),当d和u确定时,m=M(d,u),M表示一个函数,则P(M(d,u)|d,u)的和为1,因此可以从式子中去掉得到(1c),最后,当u确定的时候,d也是确定的因此可以得到(1d),du表示u对应的历史点击数据。对于不是u的数据,P(d|u)自然为0。

结合上式和因果图2.a可以看出历史点击数据对用户表征和预测分数都有影响。而从因果图中,我们也可以发现D是U->M的  **混杂因子** ,因此可以通过  **后门调整** 去除混杂。通过  **干预** U得到下式:

picture.image

对U干预后,U和D之间就独立了,因此可以得到上式。通过后门调整,可以发现原来的du变成了d,现在依赖的是d的先验分布不再是u的条件分布,因此对用户u推荐item的时候,不会受到du中u用户点击较高的item的影响。这就缓解了数据偏差造成的问题。

实现

后门调整操作

从上面的式子(2c)中可以知道我们需要知道D的分布才能进行计算,但是理论上D应该是无限大的,因此我们只能通过估计得到式子2c的近似值。在训练数据中,对用户在item组上的历史数据的分布来近似D,用picture.image表示。通过近似可以得到下式,具体推导原理可以看原文,这里就不赘述了。f(·)表示常见的推荐模型,通过近似我们可以发现用常用的推荐模型,并且用用户表征u,item表征i,已知M就可以实现后门调整,如果能实现函数M,就可以使其很容易的融入到现有的推荐模型中去。

picture.image

M函数表示的是分组级别的用户表征,他表示用户在不同item组上的偏好,令picture.image,M(d,u)可以表示为下式,这里的M其实是作者自己构造的,如果有其他构造方法应该也可以,不是固定的:

picture.image

其中picture.image表示用户特征中的特征值。

改进版:考虑特征之间的交叉

picture.image

picture.imagew和c为前面特征的拼接

推理策略

在推理的时候,作者考虑到了有的用户他可能就是有偏的,比如有的用户可能只喜欢喜剧。因此文中采用了KL散度来判断该用户是否是兴趣多变的用户。将原有的用户u的序列分为两段序列,然后计算这两段序列的对称KL散度。值越大说明越容易改变兴趣,即需要后门调整;反之,则不需要后门调整。

picture.image

picture.image其中α是超参数

因此,需要构建两个模型分别为原始的推荐系统RS和经过后门调整的推荐系统DE,这样结合前面计算的对称KL散度来融合RS和DE的推荐结果,动态决策能够更好的适应兴趣多变和兴趣固定的双重人群。

picture.image

结果

可以发现最终结果无论在Recall还是NDCG上都有较好的提升。

picture.image

有问题的小伙伴可以在公众号留言

更多内容可前往我的csdn博客和牛客博客,在公众号回复“博客”即可

0
0
0
0
评论
未登录
看完啦,登录分享一下感受吧~
暂无评论