作者贡献声明:桂思思: 提出研究命题, 设计实施方案, 数据分析处理, 论文起草与修订;陆伟: 设计研究方案, 论文最终版本修订;黄诗豪: Sogou数据集预处理, 使用主题模型生成用户兴趣;周鹏程: 在Sogou数据集上实现基于记忆的用户兴趣模型、基于遗忘曲线的用户兴趣度多阶段量化模型。
目的 针对用户兴趣随时间推移不断变化的问题, 利用主题模型及时间节点函数预测用户兴趣。方法 使用主题模型生成用户兴趣, 针对用户的所有兴趣, 分别利用多时间节点函数对每个兴趣的每次出现进行加权, 用以预测用户兴趣在下一个时间节点的分布情况。结果 在Sogou搜索日志上, 与基于记忆的用户兴趣模型、基于遗忘曲线的用户兴趣度多阶段量化模型进行对比实验, 余弦相似度及KL(Kullback-Leibler)距离均表明本文方法能较准确地预测用户兴趣。【局限】仅在Sogou搜索日志上进行实验测试, 还需在其他数据集上进一步检验。结论 充分考虑用户历史数据中每一个时间点可更准确地对用户兴趣进行预测。
[Objective] User interest is not static and it changes dynamically as time goes by, this paper proposes a user interest prediction model based on topic model and multi-time function.[Methods] Generate user interests by topic model, and calculate the weights of each user interest at every time point by applying multi-time function in order to predict user interest at next time point.[Results] Compared with memory-based user profile model and multi-step user profile model, cosine similarity and Kullback-Leibler divergence of the experimental results on search engine log data provided by Sogou Lab show that this model can predict user interests more effectively. [Limitations] The proposed method is only tested on search engine log data provided by Sogou Lab, and it need further examination on other data sets.[Conclusions] It is more effective to take every time point of user history data into consideration for user interest prediction.
用户兴趣建模是从能够体现用户兴趣偏好的信息(如浏览行为、浏览内容、知识背景等)中归纳出可计算的用户兴趣模型的过程[1]。用户兴趣建模能为个性化信息服务提供可信赖的用户信息, 有效改善个性化信息服务的服务质量, 是个性化信息服务有效开展的基础与核心。
用户兴趣可根据用户行为进行预测, 例如协同过滤(Collaborative Filtering)利用用户自身或相似用户的历史行为预测用户兴趣。但是用户兴趣并非一成不变, 而是随着时间的推移不断变化。协同过滤模型更偏重用户间或资源间的相似性, 却忽略了用户兴趣随时间变化的过程。时间窗口模型和遗忘模型能够反映用户的兴趣变化[2]。但是时间窗口模型不仅不能反映用户兴趣衰减, 还容易忽略窗口之外的数据; 遗忘模型虽能合理利用历史数据, 但只考虑了历史记录中的初始时间点、最近时间点数据。
本文认为用户的某类兴趣在某个时间点出现后, 会对当前时间点以及下一个时间节点的该类兴趣权重的计算产生影响, 因此预测用户兴趣时需考虑历史记录中每一个时间点的用户兴趣数据。在这个假设前提下, 本文提出一个新的用户兴趣预测模型, 该模型使用主题模型生成用户兴趣, 随后针对用户所有兴趣, 分别利用多时间节点函数对每个兴趣的每次出现进行加权, 用于预测下一个时间节点的用户兴趣分布情况。利用该模型在Sogou实验室发布的用户查询需求日志上进行实验, 结果表明本文提出的模型具有较好的预测效果, 优于其他模型。
主题模型在用户兴趣表示上已有部分研究成果。Ahmed等[3]认为用户兴趣是主题的集合, 用户检索时先确定主题, 再选用能表示该主题的查询词进行检索, 并在此基础上提出基于主题模型的用户模型构建框架。Veningston等[4]在研究个性化检索问题时, 认为用户兴趣可以表示为用户u提交查询q时检索主题T的概率分布, 并认为主题模型是一个较好的实现工具。在研究基于用户兴趣的推荐系统时, Sakamoto等[5]、Pennacchiotti等[6]、Liu等[7]及Mao等[8]采用< 用户-项目-兴趣> 用户兴趣三层表示模型, 并将其与主题模型中的< 文档-词-主题> 相对应, 使用主题模型抽取用户兴趣。
与传统聚类方式相比, 主题模型有较好的聚类效果。Ding等[9]从主题识别及主题演化两个维度将主题模型法与基于词共现、基于引文共现等传统聚类算法相比较, 综合比较后发现主题模型法在主题识别及主题演化方面优于其他两种聚类方法。
前人的研究成果表明主题模型可用于用户兴趣的表示、生成, 且在划分用户兴趣时, 优于一般聚类方法。
用户兴趣预测可采用协同过滤的思想, 但是基于传统协同过滤的用户兴趣预测方法更偏重用户间或资源间的相似性, 容易忽略用户兴趣随时间动态变化的过程。为了准确地预测用户兴趣, 必须考虑时间因素的影响。Lee等[10, 11]以移动电子商务推荐系统为例, 考虑用户购买时间、评论时间、商品上线时间、上述时间的时间差以及各种时间组合, 并证明考虑时间因素能有效提高推荐准确度。
基于协同过滤的个人兴趣预测改进法是利用时间因素, 描述用户兴趣动态变化的过程, 对协同过滤得到的用户兴趣结果集合进行加权排序。常见的方法有时间窗口法[12, 13]、遗忘模型法以及混合模型法[14, 15]。时间窗口法容易忽略时间窗口之外的历史数据, 这些窗口外的数据也可能反映出用户的一些常规需求, 不应随意剔除。Maloof等[16]针对该问题, 专门探讨了历史数据的选择问题。遗忘模型法认为用户兴趣衰减与自然遗忘规律相似, 提出一个用于模拟用户兴趣遗忘规律的时间函数[17, 18]。Chen等[19]虽未在文中明确提出一个时间函数, 但采用遗忘模型法思想, 根据用户的评分时间在[0, 1]取值并分段赋值; 其他研究者常选用一个单调递减函数作为时间函数, 例如指数函数[20, 21, 22]、逻辑函数[23]、线性函数[24]、幂函数[25]、复合函数[26]等。利用时间函数加权重主要有以下方式:
(1) Zhang等[21]、于洪等[25]利用项目初始评分时间点与最后一次评分时间点之间的时间差;
(2) Chen等[19]、邢春晓等[24]、Wu等[26]利用项目初始评分时间点与整个时间段的最后时间点之间的时间差;
(3) Karahodza 等[22]、Wang等[23]在上述基础上还区分了不同用户对同一个项目评分的差异性, 利用某项目最后一次被评分时间点与该项目被某单个用户最后一次评分时间点之间的时间差。
不考虑协同过滤, 单纯利用时间因素描述用户兴趣变化过程的研究成果相对较少。例如, Liu等[27]、Cheng等[28]选用指数函数作为时间函数, 利用遗忘模型描述博客上用户兴趣演化过程。Rybak等[29]选用线性函数作为时间函数, 描述一段时间内专家专长的变化情况。Wu等[30]提出基于记忆的用户模型(Memory-based User Profile), 简记为Memory-UP, 该模型同时考虑了用户学习、遗忘的过程, 并以在线新闻网站用户日志中的点击数据为例, 对用户兴趣进行预测[31]。于洪涛等[32]提出基于遗忘曲线的用户兴趣度多阶段量化模型(简记为Multi-Step-UP), 该模型把整个时间段分成多个阶段, 认为每一个阶段都是一个新的遗忘过程, 并在腾讯微博数据上验证模型的预测效果。
由上述分析可知, 基于协同过滤法的用户兴趣预测在考虑时间因素时, 仅考虑了项目的初始评分时间点、最后评分时间点以及整个时间段的最后时间点, 忽略了项目初始评分时间点与整个时间段的最后时间点之间的其他时间点; 不考虑协同过滤的用户兴趣预测法研究成果较少。本文在上述研究成果的基础上, 利用遗忘模型思想, 提出一个多时间节点函数对兴趣的每次出现进行加权并预测, 并在用户日志中的查询数据集上与Memory-UP模型和Multi-Step-UP模型效果进行对比。
本文使用主题模型生成用户兴趣, 针对用户所有兴趣, 分别利用多时间节点函数对每个兴趣的每次出现进行加权, 用于预测下一个时间节点的用户兴趣分布情况。
网络日志(Web Log)记载了用户访问某网站的完整记录, 包括大量用户行为以及用户IP、访问时间等数据, 这些数据可潜在反映用户兴趣。
为方便实验, 本文不区分单个用户的兴趣, 将全体用户的兴趣作为研究对象, 因此查询日志中的记录可简化为如下形式, 表示在timei时, 用户向搜索引擎提交查询queryi。
本文认为用户向搜索引擎提交的查询词是用户兴趣的表现, 查询词构成的潜在主题集合Z是用户真正的兴趣, 该主题需要使用主题模型生成。主题模型是一种用来发现文档集合中隐含主题的统计模型, 常见的有PLSI[33]与LDA[34], 它认为文档集合中的每篇文档是由多个主题按照一定比例组合而成的, 且每个主题可以表示为词表中词的分布。
对用户查询记录而言, 每一个查询(query)均由不同的查询词(word)构成。可以将本文中查询、查询词、兴趣映射成主题模型中文档、词、主题, 即:
由于LDA相比LSI与PLSI而言, 具有较好的建模能力及相对较低的计算复杂度[35], 因此使用LDA求得
(1) 时间函数
由2.2节可知, 指数函数、逻辑函数、线性函数、幂函数、复合函数等均可作为时间函数, 但是以函数本身的变化趋势而言, 指数函数优于逻辑函数[36], 所以本文的多时间节点函数如下:
公式(1)表示属于主题Zj的查询词wordi的时间函数, 它随
(2) 遗忘因子
遗忘因子
其中,
(3) 查询词权重计算
研究一段时间中某个时间点状态时, 需综合考虑该时间点之前的情况以及该时间点新增的情况。该思想在Rybak等[29]以及Wu等[30]的论文中采用过。
本文认为用户每向搜索引擎提交一次查询, 都会改变该查询词在当前时间点的权重。因此, 在考虑某个时间点查询词权重时, 需要综合考虑该时间点之前该查询词的权重, 以及该时间点因查询操作而新产生的权重。某个时间点的查询词权重计算公式如下:
| (3) |
---|---|
| (4) |
| (5) |
当
|
(4) 主题权重计算
本文认为文本主题可用加权树表示, 查询词为叶子节点, 主题为非叶子节点, 每一个主题(非叶子节点)可划分出多个查询词(叶子节点)。对于主题权重的计算方法可以借鉴专家专长研究[29]的计算方法:
若主题
| (6) |
即兴趣主题
| (7) |
为了验证本文模型预测的精准性, 从Sogou实验室①(① http://www.sogou.com/labs/dl/q.html/.)获取2008年6月1日至2008年6月29日(无6月10日)共28天的搜索日志, 并从原始数据集非空记录中抽取“ 访问时间 \t用户ID \t [查询词]” 三项信息, 共计51 537 394条。
利用ICTCLAS②(② http://ictclas.nlpir.org/).(2014年版)对Sogou日志中的用户查询词进行分词。为了保证分词质量, 笔者根据该工具的分词结果, 结合人工判断, 新增657个新词至用户词典。重新对Sogou日志中用户查询词进行分词。
本实验利用主题模型工具MALLET(MAchine Learning for LanguagE Toolkit)③(③ http://mallet.cs.umass.edu/.)生成主题模型。使用主题模型必须提前确定主题数, 虽然常使用困惑度(Perplexity)评判主题数的最佳取值[37], 但是本实验的关注点在于划分出用户兴趣的类别, 而不在于兴趣类别划分的精确性, 因此不检验困惑度。主题数常设置为100[37], 故实验中主题数设定为100。
实验中将Sogou分词后的文本作为输入文件, 利用MALLET自带的LDA算法构建主题模型, 最后的输出文件格式为: “ doc \t source \t pos \t typeindex \t type \t topic” , 即记录了每一个词的原始位置以及所属主题的编号。利用主题模型时, 可能出现同一个词属于不同主题。对于该问题, MALLET在生成主题模型时, 已经计算过同一个词属于不同主题的概率
实验原始数据总时长为28天: 取前21天数据作为训练数据(Training Data), 用以预测后7天(测试数据, Test Data)每一天的用户兴趣分布。
对于测试数据, 采用词频统计方法计算每一天用户兴趣的分布情况, 并将其作为真实用户兴趣分布: 统计属于某一个主题所有查询词的词频, 除以所有主题的查询词的词频, 进行归一化处理, 从而求得真实的用户兴趣分布情况。测试数据共有7天, 因此可计算主题分布相似性7次。
余弦相似度(Cosine Similarity)及KL距离(Kullback- Leibler Divergence)[38]是用来计算两个主题分布相似度的常用方法[39, 40]。本文同时使用这两种方法计算预测的兴趣分布与真实兴趣分布之间的相似度: KL距离的值恒不为负, 值越小, 表示两个分布越接近, 即预测的结果越准确; 余弦相似度取值范围为[0, 1], 值越大, 表示两个分布越接近, 即预测结果越准确。
为了体现本模型(Multi-Time-UP)的有效性, 选取Memory-UP、Multi-Step-UP进行对比, 并利用双尾T检验对不同模型的预测结果之间是否存在显著差异进行检验。
(1) Memory-UP[30]: 该模型较好地模拟了用户学习、遗忘等过程, 利用用户日志中的点击数据预测用户兴趣;
(2) Multi-Step-UP[32]: 该模型考虑时间因素, 把整个时间段分成多个阶段, 认为每一个阶段都是一个新的遗忘过程, 与本文思路有类似之处。相关参数取文献[32]中默认值。
Multi-Time-UP、Memory-UP、Multi-Step-UP三个模型预测的用户兴趣分布与真实用户兴趣分布的KL距离与余弦相似度如表1所示。其中, 组号为月和日组成的4位数字, 如0623表示6月23日。表2为三个模型KL距离差异的显著性检验结果。表3为三个模型余弦相似性差异的显著性检验结果。
根据表2和表3可知, 三个模型的实验结果均有显著差异(< 0.05)。由表1可知, 在三个模型中, Multi-Time-UP的KL距离(平均值为0.2174)普遍小于其他两个模型的结果, 余弦值相似性(平均值为0.8029)普遍大于其他两个模型的结果, 用户兴趣预测效果最优。
就KL距离的结果而言, Multi-Step-UP的KL距离(平均值为1.0483)普遍大于其他两个模型的结果, 用户兴趣预测效果最差; Memory-UP的预测效果居于Multi-Time-UP与Multi-UP之间。Multi-Time-UP预测的兴趣主题分布与真实兴趣分布的KL距离最低可达0.1400, KL距离最高值0.3417也比其他两个模型的KL最低值小。就余弦相似性的结果而言, Multi-Step-UP的预测效果次之(平均值为0.6277); Memory-UP预测效果相对而言不太理想(平均值为0.5731)。
总结来看, 以KL距离评估模型准确性, 预测准确性排序为: Multi-Time-UP、Memory-UP、Multi-Step-UP; 以余弦相似性评估模型准确性, 预测准确性排序为: Multi-Time-UP、Multi-Step-UP、Memory-UP。因此, 本文模型较其他模型具有更好的预测效果。
用户兴趣随着时间推移不断改变, 本文提出一种新的用户兴趣动态预测模型, 该模型利用多时间节点函数充分考虑了用户历史数据中每一个时间点的历史数据。实验结果表明, 与基于记忆的用户兴趣模型、基于遗忘曲线的用户兴趣度多阶段量化模型相比, 本文模型能较准确地实现用户兴趣的动态预测, 说明预测用户兴趣时需考虑历史记录中每一个时间点的用户兴趣数据。然而本文研究也有一定的局限性: 研究对象为集体用户兴趣, 而非个体用户兴趣; 数据时间跨度较小。今后的研究方向包括: 将该方法应用于个体用户兴趣研究; 尝试将该方法应用于分析用户兴趣周期上的可行性; 尝试用户兴趣动态预测的相关应用, 结合实际问题探讨模型的适用性。
[1] |
|
[2] |
|
[3] |
|
[4] |
|
[5] |
|
[6] |
|
[7] |
|
[8] |
|
[9] |
|
[10] |
|
[11] |
|
[12] |
|
[13] |
|
[14] |
|
[15] |
|
[16] |
|
[17] |
|
[18] |
|
[19] |
|
[20] |
|
[21] |
|
[22] |
|
[23] |
|
[24] |
|
[25] |
|
[26] |
|
[27] |
|
[28] |
|
[29] |
|
[30] |
|
[31] |
|
[32] |
|
[33] |
|
[34] |
|
[35] |
|
[36] |
|
[37] |
|
[38] |
|
[39] |
|
[40] |
|