天天看点

Review: Model User Exposure in Recommender

简介

对于解决implicit data recommendation的问题,最主要要难点是,user-item matrix只有0-1的信息,并且我们inference user preference的时候,我们必须要用到0的信息。但是我们不知道数值为0的item到底是真的用户不喜欢/不点击,还是这个item压根就没有被没有被推荐给用户。很多老的方法没有考虑这点,单纯的假设所有0的信息代表物品被推荐了但是用户不喜欢,或者目前很多已有的方法,downweight这些这些的数据的影响。

但是我们还是不知道不清楚这部分0的信息。到底是用户真的不喜欢用户根本没看见这些物品?

方法

作者从一个新的角度出发,在原有的MF基础上增加了一层latent exposure v

variable来对物品有没有被exposed to user建模,来帮助更好地理解0这部分信息的来源,例如:为什么这些数据没有被点击?到底是真不喜欢还是没有被暴露给用户?

原有的MF是由user-peferences和item-attribues两个laten factors组成, 他们和Exposure latent variable来共影响user-item里面最终的y值。下面重点介绍exposure model的部分。

当exposure variable a=0的时候,意味着当前的物品根本没有暴露给, 所以这个物品在user-tem的matrix里面的值一定是0, 因为user根本都没见过这个物品。

当a=1的时候,意味着当前的物品已经被暴露给了用户,那么用户如果喜欢的话,user-iem matrix所储存的值为1,如果不喜欢的话,user-item matrix所储存的值为0。

公式介绍

θ u ∼ N ( 0 , λ θ − 1 I K ) \theta_u \sim N(0, \lambda^{-1}_{\theta}I_K) θu​∼N(0,λθ−1​IK​)

β i ∼ N ( 0 , λ β − 1 I K ) \beta_i \sim N(0, \lambda^{-1}_{\beta}I_K) βi​∼N(0,λβ−1​IK​)

a u i ∼ B e r n o u l l i ( u u i ) a_{ui} \sim Bernoulli(u_{ui}) aui​∼Bernoulli(uui​)

y u i ∣ a u i = 1 ∼ N ( θ T β i , λ y − 1 ) y_{ui}|a_{ui} = 1 \sim N(\theta^{T}\beta_i, \lambda^{-1}_y) yui​∣aui​=1∼N(θTβi​,λy−1​)

y u i ∣ a u i = 0 ∼ σ 0 y_{ui}|a_{ui} = 0 \sim \sigma_0 yui​∣aui​=0∼σ0​

The joint probability of exposures and clicks for user u and item I

l o g p ( a u i , y u i ∣ u u i , θ u , β i , λ y − 1 ) = l o g B e r n o u l l i ( a u i ∣ u u i ) + a u i l o g N ( y u i ∣ θ u T β i , λ y − 1 ) + ( 1 − a u i ) l o g I [ y u i = 0 ] \begin{aligned} logp(a_{ui}, y_{ui}|u_{ui}, \theta_u, \beta_i, \lambda^{-1}_y) & = logBernoulli(a_{ui}|u_{ui}) + a_{ui}logN(y_{ui}|\theta^T_u \beta_i, \lambda^{-1}_y)\\ &+(1-a_{ui})logI[y_{ui}=0] \end{aligned} logp(aui​,yui​∣uui​,θu​,βi​,λy−1​)​=logBernoulli(aui​∣uui​)+aui​logN(yui​∣θuT​βi​,λy−1​)+(1−aui​)logI[yui​=0]​

最简单的裂解:

当预测的用户对物品的喜好程度高的时候,通过观察 N ( y u i = 0 ∣ θ T β i , λ − 1 ) N(y_{ui}=0|\theta^T \beta_i, \lambda^{-1}) N(yui​=0∣θTβi​,λ−1)的值会很小,最终会降低a=1的可能。所以最后的joint probability l o g p ( a = 1 , y = 0 ) 会 很 小 logp(a=1, y=0)会很小 logp(a=1,y=0)会很小 (~log p(a=1|y=0)),意味着物品暴露给用户的可能会很小,所以这部分0应该理解成item还没有被暴露给用户。

当y>0时, 用户一定点击/喜欢这个物品,所以物品一定被暴露过给用户。

当y=0时,这个时候 a u i a_{ui} aui​是隐藏变量。

延伸

作者发现,如果我们对latent exposure variable的prior做一些改动,改动后的模型会更好的帮助模型获取0这部分的信息。例如在餐馆的推荐上或者是文档推荐中,如果我们把位置信息或者文档topic的信息加入进模型,会得到更好的效果。

甚者有两篇基于这个理论,把social network的信息加入到模型中能过更好地给出推荐信息。如果有兴趣可以读下面这两篇

小结

data 全部为implicit data 不包括任何的 explicit data

这里用到的metric有:[email protected], [email protected], [email protected]

[1]Modeling User Exposure in Recommendation

[2]Collaborative Filtering with Social Exposure: A Modular Approach to Social Recommendation

[3]Modeling Users’ Exposure with Social Knowledge Influence and Consumption Influence for Recommendation

继续阅读