[paper阅读] 基于点击行为的个性化新闻推荐

本周研读了一篇谷歌2010年发表在IUI的论文–Personalized News Recommendation Based on Click Behavior. 在文中, 作者基于日志分析, 提出了一个贝叶斯框架, 基于 [特定用户的行为] 和 [所有用户行为中展示的新闻趋势] 来预测用户当前的新闻兴趣. 作者使用学到的用户画像 将 [信息过滤机制] 和一个现有的 [协同过滤机制] 结合起来生成个性化的新闻推荐. 混合的方法用于谷歌新闻, 在网站上的分桶实验表明: 该方法优于现有方法.

背景

为了理解个性化新闻推荐这个问题, 作者对大量谷歌新闻的日志进行了分析, 以度量用户新闻兴趣的稳定性. 调研发现: 用户兴趣确实会随着时间变化而变化, 但是也会随着新闻事件的趋势而变化. 基于这些发现, 作者提出了一个贝叶斯模型, 基于 [特定用户的行为] 和 [群体用户行为中展示的新闻趋势] 预测单个用户的新闻兴趣. 为用户生成新闻推荐时, 系统考虑了单个用户的真实兴趣和当前的新闻趋势. 通过这样的做法, 推荐引擎将会给用户推荐那些尾部兴趣, 不会错过重大的新闻时间, 即使这些时间并不严格匹配用户特定的兴趣.

动机

之前谷歌新闻推荐系统主要使用的是协同过滤方法, 它的基本思想是: 向用户推荐那些其他与之有相似点击历史的用户看过的新闻. 这种方法在新闻推荐中有两大缺陷:

  • 系统无法将未被阅读过的新闻推荐给其它用户(新闻的冷启动问题), 而新闻这个领域对时效性要求又特别高, 协同过滤方法得花几个小时短时间收集到足够多的点击才能生成可靠的推荐
  • 并不是所有的用户都是相同的, 协同过滤方法可能不会考虑用户之间单独的可变性, 例如, 作者观察到娱乐新闻会持续退给大部分用户, 即使是那些从来不点击娱乐新闻的用户也会收到. 原因在于: 娱乐新闻一般是比较受欢迎的, 因此, 经常会在一个用户的”邻居”用户中有足够多的娱乐点击使得其收到娱乐新闻的推荐

上面两个问题的解决方案是: 构建用户的真实兴趣, 然后基于用户的真实兴趣生成推荐. 画像可以帮助系统过滤掉那些用户不感兴趣的新闻, 例如上文中提到的娱乐新闻. 而即使新闻之前没有被其它用户点击过, 新闻也会推荐给那些对主题感兴趣的用户.

注意: 在这里, 作者选择的是分类这个维度来描述用户的兴趣. 选择通用级别的主题分类而不是预先定义好的主题的原因在于: 大部分用户访问新闻网站是抱着”给我呈现一些有意思的东西”, 而不是有特定目标的态度. 过度细化用户的画像可能会给用户推荐那些他已经知道的事情.

信息过滤机制需要满足两个原则:

  • 一个用户的兴趣可能会随着时间的变化而变化. 系统应该能够增量地更新用户的画像来反映用户兴趣的变化
  • 用户的点击历史大小有非常大的差异

用户兴趣的日志分析

数据

用户筛选规则:

  • 每个月超过10次点击
  • 随机抽取用户
  • 来自超过10个国家和地区

点击分布

在日志分析中, 作者们计算了单个用户在分类上的点击分布以及不同地域的用户集合在分类上的点击分布. 将时间段分为14个月, 然后对于每个用户u, 计算其在每个月中的点击分布: t. D(u, t) 表示用户在分类上的向量:

D(u,t) = (\frac{N_1}{N_{\text{total}}}, \frac{N_2}{N_{\text{total}}}, … , \frac{N_n}{N_{\text{total}}}), N_{total}=\sum_i N_i 公式1

其中, N_i表示用户u在第t个月点击分类为c_i的新闻的点击次数. N_{\text{total}} 为用户在该时间段内的总点击次数. 因此, D(u,t) 表示用户花费在阅读每个分类下新闻的时间, 反映了用户在该月的兴趣分布.

用户兴趣随着时间的变化

如果一个用户的新闻兴趣是稳定的, 那么他每个月的点击分布也应该是比较稳定的. 作者使用 d_1d_\infty来度量点击分布之间的距离. 对于向量 XY, d_1d_\infty的计算公式如下:

d_1(X,Y)=\sum_i |x_i-y_i|
d_\infty(X, Y) = max_i (|x_i – y_i|)


1: 待预测的时间与之前月份的点击分布差异

结论: 用户的新闻兴趣确实会随着时间变化而变化, 在预测未来的兴趣时, 越旧的点击历史发挥的作用越小.

新闻趋势

对于每一个国家, 群体兴趣可以表示为该国的用户在过去一段时间t内产生的所有点击分布, 表示为D(t). 假设一个国家公众兴趣的变化与该国大新闻事件的发生相对应. 而日志分析的结果也提供了实验性的证据. 例如, 美国大选宣传活动从2007年年底开始, 吸引了大量对国家政治新闻的关注. 图2展示了国家新闻的点击率在宣传活动期间比开始之前提高了整整一倍. 由于事件的重要性, 那些平和不怎么关注国家新闻的用户可能会越多更多关于精选活动的政治新闻. 同样的, 20088月的奥运会也在几个不同的国家引发了公众对体育兴趣的激增, 如图3所示.


2 美国用户随着时间推移的兴趣变化


3 体育兴趣随着时间变化的趋势

日志分析表明, 在大众的点击分布中体现出来的新闻趋势在区域方便呈现了不一样的趋势. 图3展示了三个不同国家的新闻体育兴趣: 英国/西班牙和美国. 整体说来, 西班牙人的体育兴趣高于英国和美国. 在20086月和20088月两个时间点, 体育兴趣有个激增, 对应了6月的欧洲杯和8月的奥运会. 但是美国用户表现出来的兴趣远低于两个欧洲国家. 另一方面, 美国用户在体育新闻方面的兴趣在200711月有一个骤降, 其原因在于棒球赛季的结束, 而西班牙和英国则没有这个趋势.

公众新闻趋势对单个兴趣变化的影响

作者还分别比较了单个用户与其所在地区用户和其它随机选择的地区存在的点击差异.

1 单个用户与公众点击分布的差异

区域 d_1 距离 d_\infty 距离
相同区域 0.92 0.31
不同区域 1.13 0.39

如表1所示, 单个用户的点击分布于相同地区的公众更相似.

结论

通过上面日志分析的结果, 我们可以得到下面的结论:

  • 单个用户的新闻兴趣会随着时间变化而变化
  • 大众的点击分布反映了新闻的趋势, 往往对应着大新闻事件
  • 不同区域有不同的新闻趋势
  • 在一定程度上, 单个用户的新闻兴趣与ta所属的区域相关

用户兴趣预测的贝叶斯框架

基于上面的观察, 作者将用户的新闻兴趣划分为两个部分: 用户的真实兴趣和当地新闻兴趣的影响. 其中, 用户真实的兴趣由用户本身的一些属性决定, 例如: 性别/年龄/职业等, 因此, 相对而言比较稳定. 另一方面, 在选择阅读什么的时候, 用户也可能会被当地的新闻趋势所影响. 真实兴趣新闻趋势分别对应所谓的长期画像短期画像. 但是, 现在又一个问题: 我们使用不同的方法来预测用户的新闻兴趣. 更具体地, 使用大众的点击模式生成的新闻兴趣而不是用户自己的反馈来对用户的短期兴趣进行建模.

作者提出了一个基于贝叶斯框架的方法用于预测用户当前的兴趣. 方法的工作流程如下:

  • 首先, 系统在不考虑新闻趋势的情况下, 使用用户在每个过去时间段内的点击来预测用户的真实新闻兴趣
  • 然后, 结合在过去一系列时间段内的数据进行的预测来获得用户真实兴趣的精确预测
  • 最后, 系统通过结合用户的真实兴趣和其所在区域的当前新闻趋势来预测用户当前的兴趣

预测用户真实的新闻兴趣

对于过去的一个特定时间段t, 我们可以活动单个用户的点击分布 D(u, t) 以及某个地区所有用户的点击分布 D(t)(可以用于表示在那个时间段该地区的新闻趋势). 我们希望从D(u,t) 中用户获得不受D(t)影响的真实兴趣. 一个用户在分类c_i上的真实兴趣表示为: p^t(\text{click} | \text{category} = c_i), 为用户点击一篇c_i分类下的新闻的的概率. 基于贝叶斯规则, p^t(\text{click} | \text{category} = c_i) 的计算公式如下:

\text{interest}^t (\text{category}=c_i)= p^t(\text{click} | \text{category} = c_i)
=\frac{p^t(\text{category}=c_i | \text{click}) p^t(\text{click})}{p^t(\text{category}=c_i)} 公式3

p^t(\text{category}=c_i | \text{click}) 为用户的点击为分类 c_i 的概率, 可以通过用户在时间段 t 内的点击分布 D(u,t) 估计得到.

p^t(\text{category}=c_i)为文章是分类c_i的先验概率. 该值为这个时间段内发布的该类新闻的比例, 与地区的新闻趋势相关.

其成立的假设为: 在某个给定的领域发生越多的事情, 那么就会有越多的新闻关于该领域. 因此, 在这里, 作者使用这个概率来估计大众的点击分布 D(t).

p^t(\text{click})为不考虑文章分类的情况下, 用户点击任意新闻的先验概率.

根据公式3, p(\text{click} | \text{category}=c_i) 表明了用户在该分类下的兴趣与相同区域中大众用户兴趣的差异程度.

如果在一个用户阅读了大量的体育新闻的同时, 其他很多用户也阅读了很多体育新闻, 那么该用户可能并不是对体育非常感兴趣而只是阅读一些比较热门的体育事件.

而如果区域内的热门并不是体育的话, 在体育新闻上的极大部分点击就能够强烈表明用户在体育上的真实兴趣了.

稍微分析一下公式3, 直观看来, 用户对分类的兴趣应该与ta在该分类下的点击分布成正比, 与所有用户在该分类下的点击分布成反比(其它用户点击越多, 说明该分类越热门, 那么用户很有可能是因为新闻趋势而点击, 并不是用户的真实兴趣).

将过去一段时间的数据组合起来

公式3基于用户在过去一段时间内的点击分布获得了用户的真实兴趣. 为了精确地度量用户的真实兴趣, 作者将过去许多时间段的预测结合在一起, 具体公式如下:

interest(\text{category}=c_i)=\frac{\sum_t (N^t \times \text{interest}^t(\text{category}=c_i))}{\sum_t N^t}
=\frac{\sum_t (N^t \times \frac{p^t(\text{category}=c_i | \text{click}) p^t(\text{click})}{p^t(\text{category}=c_i)})}{\sum_t N^t} 公式4

N^t 表示用户在时间段 t 内的总点击数. 我们可以假设用户在任意文章上的点击先验概率在所有时间段内都是一致的. 因此从公式4, 我们可以得到公式5:

interest(\text{category}=c_i)
=\frac{p(\text{click}) \times \sum_t (N^t \times \frac{p^t(\text{category}=c_i | \text{click})}{p^t(\text{category}=c_i)})}{\sum_t N^t} 公式5

预测用户当前的新闻兴趣

正如我们上面讨论的, 用户的兴趣由两个部分组成: 真实新闻兴趣和新闻趋势的影响. 上边的两个部分介绍了基于用户过去的点击历史计算用户的真实新闻兴趣的方法. 为了度量当前的新闻趋势, 作者使用了在距离当前较短的时间段内大众的点击分布来进行度量(例如: 过去一小时), 表示为p^0(\text{category}=c_i). 由于用户的基数比较大, 可以在短时间内收集到足够多的点击来精确估计到区域内比较热门的分类.

最终的目标是预测用户接下来的点击分布, 再一次, 我们使用贝叶斯规则:

p^0(\text{category}=c_i|\text{click})=\frac{p^0(\text{click}|\text{category}=c_i)p^0(\text{category}=c_i)}{p^0(\text{click})} 公式6

作者使用公式5中计算的真实新闻兴趣interest(\text{category} = c_i)来表示p^0(\text{click}|\text{category}=c_i), 假设用户点击任何一篇新闻的概率都是一致的, 那么:

p^0(\text{category}=c_i|\text{click})
\propto \frac{\text{interest}(\text{category}=c_i)p^0(\text{category}=c_i)}{p^0{(\text{click})}}
\propto \frac{p^0(\text{category}=c_i) \times \sum_t (N^t \times \frac{p^t(\text{category}=c_i | \text{click})}{p^t(\text{category}=c_i)})}{\sum_t N^t} 公式7

除了用户过去的点击(能反映出用户真实新闻兴趣)之外, 我们还增加了一系列虚拟的点击, 与当前的新闻趋势相同的点击分布, 例如p^0(\text{category}=c_i). 因此, 用户接下来的新闻兴趣估计计算公式如下:

p^0(\text{category}=c_i|\text{click})
\propto \frac{p^0(\text{category}=c_i) \times (\sum_t (N^t \times \frac{p^t(\text{category}=c_i | \text{click})}{p^t(\text{category}=c_i)})+G)}{\sum_t N^t + G} 公式8

G是虚拟点击的次数(在系统中被设置为10), 可以看做是一个平滑因子. 当系统只观察到用户非常少的点击(甚至没有任何点击)时, 系统将会主要基于当前的新闻趋势来预测用户兴趣(也就是说给用户推荐热门新闻), 这也是比较合理的. 另一方面, 如果\sum_{t} {N^t} 远大于 G, 那么将会主要基于用户自己过去的点击分布进行估计.

稍微分析一下公式8, 在其它条件一定的情况下, p^0(\text{category}=c_i)表示当前的新闻趋势, 分类越热门, 那么这个值越高, 而后面则是用户的真实兴趣, 兴趣与大众越不同权重越高, 分母与分类无关, 因此不会影响各分类的排序.

方法的另一个优势在于: 可以增量地更新用户的兴趣. 系统可以存储过去每个时间段内的N^t\frac{p^t{(\text{category}=c_i)} | \text{click}}{p^t{\text{category}=c_i}}. 更新用户画像时, 系统只需要计算最近时间段的值然后与存储的值一起重新计算加权的和.

新闻推荐

为了给待推荐文章列表进行排序, 系统会生成信息过滤评分, IF(\text{article}) 以及协同过滤评分, CF(\text{article}).

对于每篇文章, IF(\text{article})主要基于该文章的主题分类和使用公式8计算的/预测的用户兴趣. [7]中的协同方法计算出 CF(\text{article}). 在排序中将两种分数组合起来用于新闻推荐:

Rec(\text{article}) = IF(\text{article}) \times CF(\text{article}) 公式9

在线流量实验

为了得到在预测过去的新闻趋势方面的准确度, 作者计算了每周大众的点击分布. 使用三种不同的度量方式来评估推荐系统的效果以及用户体验:

  • 推荐新闻的CTR
  • 谷歌新闻主页的CTR
  • 访问谷歌新闻网站的频率

总的说来, 提出的新闻兴趣预测方法提高了新闻推荐的质量. 使用新组合方法的测试组用户点击了更多推荐的新闻.因此, 用户似乎会更频繁地访问网站, 然而, 用户希望花费在新闻阅读上的时间似乎是固定的. 由于用户点击了较多的推荐新闻, 他们会减少传统非个性化新闻的点击.

需要采用更加深入的用户案例来理解信息探究和偶然发现的个性化的结果.

结论及进一步工作

在本文中, 作者展示了一个用于大型网站(例如, 谷歌新闻)新闻推荐的高效信息过滤机制.

首先, 作者们对用户在新闻主题方面的变化进行了日志分析. 日志分析结果表明了[用户新闻兴趣的变化] 以及 [单个用户的新闻兴趣会被当地的新闻趋势所影响]. 基于这些发现, 作者将用户的新闻兴趣分解为两部分: 真实兴趣和当地新闻趋势的影响.

在本文中, 作者提出了一个贝叶斯框架使用用户过去的点击历史来对用户的真实兴趣进行建模, 并且通过结合用户的真实兴趣和本地新闻趋势预测用户当前的兴趣. 该用于预测用户兴趣的方法被用于新闻信息过滤, 并且与现有的协同过滤方法结合起来一起生成个性化新闻推荐.

在本文中, 作者展示了一个用于大型网站新闻推荐的高效信息过滤机制. 提出的方法提高了新闻推荐的质量, 并且可以提高谷歌新闻网站的访问频次.

未来可以从以下几个方面继续开展工作:

  • 可以探究位置偏置的影响, 并且可以使用点击行为对用户兴趣进行建模
  • 可以探究更多用于结合信息过滤和协同过滤机制的/更加先进的方法来更好地利用两种机制的优势

小米有话说

这篇8年前的文章方法确实有点老了, 整体思想比较简单, 但是也有一些值得我们学习的地方. (Ps: 贝叶斯大法好~ 能适用于很多情况…)

在论文中, 作者认为用户是否点击某一分类的文章主要由两方面决定:

  • 用户的真实兴趣
  • 当前的新闻趋势

首先, 基于用户的历史点击分布和历史的新闻趋势通过贝叶斯方法计算得到用户的真实兴趣. 我的理解是: 越与大潮流不相同的兴趣越能表现用户的个人真实兴趣, 也就是说: 这个真实兴趣与用户的点击次数成正比, 与其它本地用户的所有点击次数成反比. 这其实与tf-idf的基本思想有异曲同工之妙.
其次, 使用文章池子中每个分类新闻的占比来表示当前的新闻趋势, 这也是符合我们常识的. 一件事情越热门, 可能关于这件事情的新闻也越多(这个具体可以分析下文章分类的占比和点击占比是否成正相关).

此外, 文章里面提到了一个挺有意思的看法: 大部分用户访问新闻网站是抱着”给我呈现一些有意思的东西”, 而不是有特定目标的态度, 因此在本文中作者选择了分类这个维度. 这与我们线上的用法也很不一样~ 目前基于内容的召回中, tag > topic > cat, 感觉这一块也可以探究下.

最后, 这篇论文值得我们学习的一些点在于:

  • 重视基础, 用数据说话: 对日志进行了非常详细的分析, 得出一些结论, 再基于这些结论去定义问题, 解决问题. 这一点非常难得, 现在在工作中很多情况下, 我们碰到一个场景, 就直接想着套公式, 并没有具体分析和思考数据, 这是一个很大的误区
  • 尽量用数学的形式来描述一个问题, 学会归纳和泛化, 例如将用户的点击归因于两个方面: 真实兴趣和新闻趋势, 其中真实兴趣对应长期兴趣, 为新闻兴趣则对应短期兴趣, 并且都用数学的形式(贝叶斯公式)来描述了问题, 这点也非常好
打赏

mickey

记录生活,写给几十年后的自己。

发表评论

电子邮件地址不会被公开。 必填项已用*标注