Google新闻个性化推荐的Bayes原理

论文[2010.IUI]Personalized News Recommendation Based on Click Behavior

1。预测用户对新闻文章的真实兴趣
用户对Category [tex]C_i[/tex]类文章的真实兴趣表示为用户点击属于Category [tex]C_i[/tex]的文章概率,其定义成
[tex]P(click|category=C_i)=\frac{P(category=C_i|click)P(click)}{P(category=C_i)}.......\(3\)[/tex]
其中
[tex] P(category=C_i|click)[/tex] 是用户点击的文章属于Category [tex] Ci[/tex] 的概率。

可以使用某个用户一段时间内用户的点击在所有Category上的分布来表示,即

[tex] P(category=C_i|click)= N_i/N[/tex] 。

P(click)是用户点击新闻文章的概率,不计新闻类别。
[tex] P(category=C_i)[/tex] 是一篇新闻文章属于Category [tex] C_i[/tex] 的先验概率,

可以使用一段时间内所有用户的点击分布来表示。


1.1 公式(3)的隐含意义
它 代表了用户对Category Ci的新闻文章有别于其他人的兴趣程度。当大量存在属于Category Ci(例如体育)的文章时,即当其他用户也大量阅读该热点类别文章时,被考查用户点击体育类的文章的次数很可能也越多,但这不一定不代表真正喜欢该类文章。相反,如果用户阅读了异常多的 体育文章,代表了该用户对体育类文章的真实兴趣。

2。结合过去不同时段的用户兴趣预测
公式(3)是某个特定时间段内对用户兴趣度的预测。文章认为可以结合过去更多时间段来更好地预测用户的兴趣,即如公式(4)所示,它假设是用户点击次数越多(即[tex]N^t[/tex]越大),预测越准确(体现为权重,即[tex] N^t/\sum_{t}{N^t}[/tex] ,越大)。
[tex] interest(category=C_i)[/tex]

[tex]                       =\frac{\sum_{t}{(N^t*interest^t(category=C_i))}}{\sum_{t}{N^t}} ......\(4\)[/tex]
其中Nt为第t各时间段内的点击次数,

[tex] interest^t(category=C_i))[/tex] 是第t时间段内使用公式(3)计算的用户对类别category=Ci的兴趣度预测,

使用贝页斯公式得到
[tex] interest^t(category=C_i)=P^t(click|category=C_i) [/tex]

[tex]                              =\frac{P^t(category=C_i|click)P^t(click)}{P^t(category=C_i)}[/tex]

假设用户点击任何文章的先验概率不变,即Pt(click)=P(click).

则用户的兴趣预测可以进一步表示为公式(5):
[tex] interest(category=C_i)=P^0(click|category=C_i)[/tex]

[tex]                         =\frac{P(click)* \sum_{t}{(\frac{N^t*P^t(category=C_i|click)}{P^t(category=Ci)}})}{\sum_{t}{N^t}}.......\(5\)[/tex]

3。预测用户的当前新闻兴趣
3.1 用户的新闻兴趣
可以分为两部分:用户的真实兴趣大众用户的新闻趋势.
前者可以使用公式(5)计算, 后者可以使用当前很短时间内(例如最近几个小时内)大众用户在所有类别上的点击分布近似计算,即由
[tex] P^0(Category=C_i)[/tex]表示。
3.2 预测当前的兴趣
使用Bayes公式,可以得到
[tex] P^0(category=C_i|click) [/tex]

[tex]               =\frac{P^0(click|category=C_i)P^0(category=C_i)}{p(click)} .......\(6\)[/tex]
其中

[tex] P^0(click|category=C_i)[/tex] 表示用户的真实兴趣,由公式(5)计算得到。

[tex] P^0(category=C_i)[/tex] 表示大众用户的新闻趋势。


把公式(5)代入(6),得到
[tex] P^0(category=C_i|click) = \frac{P^0(click|category=C_i)P^0(category=C_i)}{P(click)}[/tex]


[tex]                        = \frac{P(click)*  \sum_{t}{\frac{ N^t*P^t(category=C_i|click)}{P^t(category=C_i)}}*P^0(category=C_i)}{\sum_{t}{(N^t)*P(click)}}[/tex]

 

[tex]                        =  \frac{\sum_{t}{\frac{N^t*P^t(category=C_i|click)}{P^t(category=C_i)}}*P^0(category=C_i)}{\sum_{t}{N^t}}                                 ......\(7\)[/tex]

:原文用的是正比于符号,其实P(click)可以约除,直接使用等号就可以了。

3.3 平滑化(Smoothing)
当 用户没有点击某个Category的文章,并不代表他对给类的兴趣概率为0,就像那个经典的硬币正反面预测试验一样。 所以可以在公式(7)的基础上增加虚拟点击次数G(论文取10,其实取平均比较合理,论文没有透露怎么得到,应该和平均次数点击比较接近),最后得到平滑 后的预测公式:
[tex] P^0(category=C_i|click) [/tex]

[tex]                        =  P^0(category=C_i)*\frac{\sum_{t}{\frac{N^t}{P^t(category=C_i)}+G}}{\sum_{t}{N^t}+G}                                 ......\(8\)[/tex]

当[tex]N^t =0[/tex] 时, 

[tex] P^0(category=C_i|click) = \frac{P^0(category=C_i) * G}{G} =P^0(category=C_i)[/tex] , 即使用当前大众新闻兴趣趋势作为对用户当前对类别[tex]C_i[/tex]兴趣度的预测值。

读后感:
1. 直接使用用户点击某类新闻的概率表示用户对该类新闻的兴趣是使用了MLE估计,没有考虑一些热点新闻趋势,例如亚运会的召开,可能不准确。 Bayes也许更加合理.
2. 论文对时间特性建模教简单, 也许可以扩充一下很好地预测的用户长期兴趣变化:利用Bayes模型结合不同时间段的数据预测用户兴趣,以及发现新闻热点。

推荐阅读

[读后感]Personalized news recommendation based on click behavior

Posted by alan 2010年12月23日 22:03