计算机应用   2017, Vol. 37 Issue (4): 1075-1082  DOI: 10.11772/j.issn.1001-9081.2017.04.1075
0

引用本文 

褚征, 于炯, 王佳玉, 王跃飞. 基于LDA主题模型的移动应用相似度构建方法[J]. 计算机应用, 2017, 37(4): 1075-1082.DOI: 10.11772/j.issn.1001-9081.2017.04.1075.
CHU Zheng, YU Jiong, WANG Jiayu, WANG Yuefei. Construction method of mobile application similarity matrix based on latent Dirichlet allocation topic model[J]. Journal of Computer Applications, 2017, 37(4): 1075-1082. DOI: 10.11772/j.issn.1001-9081.2017.04.1075.

基金项目

国家自然科学基金资助项目(61462079,61262088,61562086,61363083)

通讯作者

于炯 (1964-), 男, 新疆乌鲁木齐人, 教授, 博士, CCF会员, 主要研究方向:网络安全、网格计算、分布式计算.E-mail: yujiong@xju.edu.cn

作者简介

褚征 (1991-), 男, 河南南阳人, 硕士研究生, CCF会员, 主要研究方向:数据挖掘、内存计算、绿色计算;
王佳玉 (1991-), 女, 黑龙江哈尔滨人, 硕士研究生, CCF会员, 主要研究方向:数据挖掘、移动计算;
王跃飞 (1991-), 男, 新疆乌鲁木齐人, 博士研究生, 主要研究方向:数据挖掘、内存计算、绿色计算

文章历史

收稿日期:2016-09-26
修回日期:2016-12-25
基于LDA主题模型的移动应用相似度构建方法
褚征1, 于炯1,2, 王佳玉1, 王跃飞1,2    
1. 新疆大学 软件学院, 乌鲁木齐 830008;
2. 新疆大学 信息科学与工程学院, 乌鲁木齐 830046
摘要: 随着移动互联网的快速发展,如何从大量的移动应用中抽取有效的描述信息继而为移动用户提供有效准确的推荐策略变得尤为迫切。目前,移动应用市场对应用的推荐策略相对传统,大多是根据应用的单一属性进行推荐,如下载量、应用名称、应用分类等。针对推荐粒度过粗和推荐不准确的问题,提出了一种基于潜在狄利克雷分布(LDA)主题模型的移动应用相似度构建方法。该方法从应用的标签入手,构造应用的主题模型分布矩阵,利用该主题分布矩阵构建移动应用的相似度矩阵,同时提出了将移动应用相似度矩阵转化为可行的存储结构的方法。实验结果表明该方法是有效的,相比现有的360应用市场推荐的应用其相似度提升130%。该方法解决了移动应用推荐过程中推荐粒度过粗的问题,可使推荐结果更加准确。
关键词: 相似度矩阵    主题模型    隐含信息    应用推荐    标签    
Construction method of mobile application similarity matrix based on latent Dirichlet allocation topic model
CHU Zheng1, YU Jiong1,2, WANG Jiayu1, WANG Yuefei1,2     
1. School of Software, Xinjiang University, Urumqi Xinjiang 830008, China;
2. School of Information Science and Engineering, Xinjiang University, Urumqi Xinjiang 830046, China
Abstract: With the rapid development of mobile Internet, how to extract effective description information from a large number of mobile applications and then provide effective and accurate recommendation strategies for mobile users becomes urgent. At present, recommendation strategies are relatively traditional, and mostly recommend applications according to the single attribute, such as downloads, application name and application classification. In order to resolve the problem that the granularity of recommended applications is too coarse and the recommendation is not accurate, a mobile application similarity matrix construction method based on Latent Dirichlet Allocation (LDA) was proposed. Started from the application labels, a topic model distribution matrix of mobile applications was constructed, which was utilized to construct mobile application similarity matrix. Meanwhile, a method for converting the mobile application similarity matrix to the viable storage structure was also proposed. Extensive experiments demonstrate the feasibility of the proposed method, and the application similarity achieves 130 percent increasement by the proposed method compared with that by the existing 360 application market. The proposed method solves the problem that the recommended granularity is too coarse in the mobile application recommendation process, so that the recommendation result is more accurate.
Key words: similarity matrix    topic model    latent information    application recommendation    label    
0 引言

随着互联网和移动互联网技术的飞速发展, 全球的移动设备数量也在急速上升。根据来自iGR2015年的调查报告显示, 到2019年全球移动设备的总数将会从2014年的69亿增加到95亿, 即2015年的全球移动设备普及率为96.4%, 到2019年将达到125%的普及率。当前的移动设备高普及率意味着全球中的每个人能都拥有一个移动设备,每个移动设备中一般会安装了几个到几十个的应用,而这些海量的移动应用散布在各个应用市场。仅360手机助手的应用总量就有11万多项, 而且这些应用还在不断地增加。

有些应用的名称从总体上概括了一个应用的主要内容, 但是有时即使知道应用的名称也不知道该应用的具体作用。应用介绍具有时效性,而且应用介绍不能全面客观地描述应用的特征, 它具有一定的广告内容。应用标签则能够相对客观准确地描述应用的特征,这些标签很好地在细粒度范围内刻画了该应用的特征。

主题模型 (Topic Model)[1]是一种概率产生式的模型 (Generative Model), 同时也是一种层次型的贝叶斯模型,其在自然语言处理、机器学习等领域具有广泛的应用。由于隐含主题具有很强的抽象性, 所以人们理解这些主题将具有很大的挑战性。通过构建移动应用相似度矩阵, 可以对当前移动应用市场中的移动应用建立全面的相似度关系, 这些相似度关系不仅可以作为各种推荐策略的基础内容之一, 同时也可以使用构建好的相似度关系来作基于内容的推荐策略。

本文通过潜在狄利克雷分布 (Latent Dirichlet Allocation, LDA) 模型对移动应用标签进行分析, 抽取出隐含在应用标签背后的潜在主题, 构建出移动应用的主题矩阵。并通过应用的主题矩阵计算出应用主题相似度矩阵, 最后还提出了将应用相似度转化为链表的存储结构的方法。

1 相关工作

本文可以看作是以移动应用为对象, 利用LDA主题模型对应用隐含信息进行深层次挖掘, 融合移动应用细粒度的描述信息 (应用标签)、LDA主题模型和移动应用推荐三者的研究。

1.1 移动应用的特征表示

经过仔细研究国内较大的移动应用市场 (如360手机助手、豌豆夹、小米应用商店等) 中的应用, 发现移动应用的分类、描述和推荐都存在较大的问题。应用的描述中包含了基本信息和更新内容, 但是这些内容大多是以广告效果为导向, 为了更好地吸引用户的眼球, 在内容中主要是新版应用的更新信息,同时应用截图又不能很方便地提取出应用的特征。页面中的应用标签则能够很好地展现移动应用的特点, 故而可以用应用的标签来表示移动应用的特征。

1.2 主题模型

近几年, 很多需要大规模文本分析的领域都成功地应用了主题模型, 包括自然语言处理、文本分析[2-5]、数据挖掘、信息检索、新闻分类[6]、商业智能[7]、微博可视化[8]、聚类算法[9-10]等领域。Salton等[5]提出的向量空间模型 (Vector Space Model, VSM) 是较早的文本数据挖掘算法。后来, Deerwester等[11]提出了一种新的潜在语义分析 (Latent Semantic Analysis, LSA) 方法, 它是一种基于矩阵模型挖掘文本主题的思想。LSA利用奇异值分解 (Singular Value Decomposition, SVD) 的降维方法来对文档的潜在结构 (语义结构) 进行挖掘, 此方法的优点是可以在较低维的语义空间中进行查询并进行相关性分析, 挖掘出隐含在文档中的语义相关性。主题模型中具代表性的是在1999年Hofmann等[12]提出的基于概率潜在语义分析 (Probabilistic Latent Semantic Analysis, PLSA) 模型和2003年Blei等[13]提出的LDA模型。概率潜在语义分析模型是基于双模式和共现的数据分析方法延伸的经典的统计学方法。概率潜在语义分析模型用统计学的角度看待问题, 它的概率变种有着巨大的影响;而LDA模型是一种文档主题生成模型。LDA模型是一种非监督的机器学习技术, 只要是用来识别大规模文档集或者语料库中潜在的主题信息。采用词袋的方法, 将每一篇文档视为一个词频向量, 从而将文本信息转化为易于建模的数字信息。此外, 词袋模型中又不考虑词和词的顺序, 这样就降低了需要解决的问题的复杂性。

1.3 推荐策略

按照所使用的数据进行分类[14], 推荐策略可以分为协同过滤[15-16]、内容过滤[17-18]、社会化推荐等策略。Massa等[19-20]研究的是利用信任关系来改进协同过滤的方法。Ma等[21]研究的是一种新的基于矩阵分解的社会化推荐方法, 它们利用一个共享的低维的潜在的用户特征矩阵, 将用户间的信任关系网络和评分矩阵结合在了一起。但是在移动应用市场中, 推荐算法的应用相对不足和缺乏,而移动应用相似度又是研究应用推荐算法的内容之一。

2 移动应用的LDA主题提取

本章研究的主要内容是利用LDA主题模型挖掘出移动应用背后的潜在主题信息, 在潜在主题信息的基础上对移动应用构建主题分布矩阵。基于这个主要目标, 确定了该研究内容的主要步骤:1) 数据搜集, 此步骤主要从移动应用市场抓取大量的应用信息, 包含应用超链接、应用名称、应用描述、应用标签等信息。2) 数据预处理, 对步骤1) 中搜集到的数据进行分析, 去除一些抓取失败的信息, 将杂乱的数据标准化,同时也将没有标签的应用数据去除。3) 训练LDA主题模型, 将步骤2) 处理之后的数据输入到LDA主题模型中, 同时设置好模型参数进行模型训练 (本文使用Python中的LDA模型进行训练)。4) 输出LDA主题, 将数据输入到训练好的模型进行测试, 然后将所有的移动应用构建出主题并输出。5) 优化LDA模型, 观测和分析移动应用的主题分布矩阵, 发现不足并优化模型参数, 重复步骤3) 和步骤4), 直到步骤4) 中输出的每个LDA主题标签能够明显地表达出相同的主题。6) 输出移动应用LDA主题分布矩阵, 在最终优化好的模型中测试数据并输出应用的主题分布矩阵。以上描述的研究步骤如图 1所示。

图 1 移动应用构建主题分布矩阵过程 Figure 1 Process of constructing topic model distribution matrix of mobile applications
2.1 问题分析

由于移动互联网的广泛普及, 移动设备的数量也随之增多。每个移动设备都会或多或少地安装一些移动应用。虽然当前的移动应用数量非常多 (仅360手机助手中的移动应用就有12万之多), 但是应用市场中对应用的分类却相对较少, 与移动应用的数量不成匹配。在360手机助手市场中软件的分类仅有13个, 在游戏应用分类中则更少。所以, 针对移动应用市场中的应用进行更多的和更小粒度的研究是必要的。

在应用的研究中选择哪些属性作为特征是很重要的。在移动应用市场中, 应用的描述信息相对较少。应用介绍信息带有太多的广告成分, 对应用的描述不具有客观性。用户对应用的评论则相对离散。此外, 应用的评论信息还具有太多的噪声, 而选择应用标签则能够比较客观地描述应用的特征。

由于没有开源的应用数据集, 加上应用数量较多, 这给研究移动应用带来了较大的困难。通过长时间的爬虫爬取网络上的应用数据, 很有可能造成恶意网络攻击的情况。此外, 爬取的数据会存在很多的无用数据, 这给数据处理也带来了较大的困难。

在数据预处理阶段, 要从大量的数据中去除无用信息, 然后对有用的应用信息进行标准化。如将爬取的网页数据进行页面分析, 然后去除网页标签, 再整理成适合LDA模型输入的格式, 最后还要去除无用数据等。

2.2 LDA主题模型的建立 2.2.1 LDA模型

LDA模型是当前文本表示方法的研究内容之一。它是一种产生式的主题模型, 不仅在文本研究领域应用, 还在其他一些领域内成功地应用。LDA是一个三层的贝叶斯网络, 也是一个多层的产生式全概率生成模型。LDA模型包含三层结构, 分别是文档、主题和词, 对应于本文的移动应用数据集即为移动应用、主题和标签三层, 如图 2所示。

图 2 LDA模型隐含主题拓扑结构 Figure 2 Latent topic topological structure of LDA model

LDA主题模型是一种典型的有向概率图的模型[22]。在一个给定的文档数据集合中, LDA模型将每个文档表示成主题, 每个主题又表示成词。从文档到主题服从多项式分布, 从主题到词也服从多项式分布。在LDA模型中, 所有的文档都共享所有的主题, 但是每个文档都有一个具体的主题分布。针对文本数据集进行建模的方法[23], 如图 3所示。

图 3 LDA模型盘子表示 Figure 3 Plate notation of LDA model

将移动应用数据集看作是文档集合, 每一个应用看作为一个文档, 应用的标签看作是文档中的词。图 3中:αβ是应用层的两个参数 (也即文档层的两个参数),α代表应用 (文档) 集中隐含主题之间的强弱, β则代表了隐含主题的概率分布;φ代表主题下的标签 (词) 的概率分布;θ代表应用 (文档) 中各个隐含主题的比重;z代表应用 (文档) 在每个隐含主题中每个标签 (词) 分布的比重;w是应用 (文档) 中的标签 (词) 向量;N为应用集合 (文档集合) 中应用 (文档) 的个数;D代表应用的标签总数。

2.2.2 构建应用标签的词袋模型

应用标签对应LDA主题模型中的单词。在输入LDA模型之前将移动应用名称和标签整理成统一格式的文本。此外由于应用标签是移动应用的客观特征, 同时应用的名称也在更高程度上描述了应用的信息。所以, 本文将移动应用的标签和应用的名称都看作成LDA的单词, 从而构建出词袋模型, 表 1例举了4个移动应用标签的词袋模型。

表 1 移动应用标签的词袋模型 Table 1 Bag of words model for mobile application labels
2.2.3 移动应用中的LDA模型

一个移动应用通常包含几个或者多个隐含主题, 而应用中的特定标签构成了这些隐含的主题。在本文的移动应用处理中, 应用的潜在主题是应用标签的概率分布, 而移动应用又是潜在主题的随机混合。

2.2.4 Gibbs抽样

在构建LDA模型过程中, 模型的参数估计是必不可少的。常用的估计方法主要是变分贝叶斯推理、期望传播算法、Collapsed Gibbs抽样等方法。相比其他抽样方法, Gibbs抽样比较容易理解,并且实现起来相对简单,最重要的是Gibbs抽样方法比较适合大规模数据集抽样主题, 所以本文也采用了当前流行的Gibbs抽样方法[24]为LDA模型的抽样算法。

Gibbs抽样算法可以看作是移动应用生成的一个逆向过程。换句话说就是在已知应用数据集的情况下, 通过参数聚集得到参数值。根据图 3可以计算出一个移动应用的概率值, 如式 (1) 所示:

$ \begin{array}{l} P(\mathit{\boldsymbol{w}}{\rm{|}}\alpha, \beta ){\rm{ = }}\\ \;\;\;\;\;\;\;\int {P(\theta {\rm{|}}\alpha )(\prod\limits_{n = 1}^N {P({{\bf{z}}_n}{\rm{|}}\theta )P({w_n}{\rm{|}}{{\bf{z}}_n}, \beta )} )} \rm{d}\theta \end{array} $ (1)

Collapsed Gibbs抽样方法中的Collpased所描述的是一种通过积分的形式避免了实际待估参数, 转而对每一个主题进行采样的方法。一个标签的主题一旦确定, 参数便可以在统计频次之后计算出。故而参数估计问题就变成了计算标签序列下主题序列的条件概率, 如式 (2) 所示:

$ \begin{array}{l} P({{\bf{z}}_i} = k|{z_{\neg i}}, \mathit{\boldsymbol{w}}) = \\ \;\;\;\;\;\;\frac{{P(\mathit{\boldsymbol{w}}, \mathit{\boldsymbol{z}})}}{{P(\mathit{\boldsymbol{w}}, {z_{\neg i}})}} \propto \frac{{n_{k, \neg i}^t + {\beta _t}}}{{\sum\limits_{t = 1}^V {n_{k, \neg i}^t} + {\beta _t}}}n_{{{\rm{m}}_{\neg i}}}^t + {\alpha _k} \end{array} $ (2)

其中:zi是第i个标签对应的主题变量;┐i代表不包含其中的第i项;nktk主题中出现标签t的次数;βt是标签项t的Dirichlet先验;nmk代表应用m出现出题k的次数;αk是主题k的Dirichlet先验。若取得每个标签的主题标号, 则参数的计算公式可以由式 (3)~(4) 取得:

$ {\phi _{k, t}}{\rm{ = }}\frac{{n_k^t + {\beta _t}}}{{\sum\limits_{k = 1}^K {n_m^k} + {\beta _t}}} $ (3)
$ {\theta _{m, k}}{\rm{ = }}\frac{{n_m^k + {\alpha _k}}}{{\sum\limits_{k = 1}^K {n_m^k} + {\alpha _k}}} $ (4)

其中:φk, t是主题k中标签t的概率;θm, k是应用m中主题k的概率。

2.3 应用隐含主题矩阵构建

通过连续使用式 (5), 可以计算出应用数据集中每个应用在每个主题上的概率分布, 继而构建出对应的Y矩阵:

$ \boldsymbol{Y} = \left[{\begin{array}{*{20}{c}} {{\theta _{1, 1}}}&{{\theta _{1, 2}}}& \cdots &{{\theta _{1, T}}}\\ {{\theta _{2, 1}}}&{{\theta _{2, 2}}}& \cdots &{{\theta _{2, T}}}\\ \vdots & \vdots &{}& \vdots \\ {{\theta _{N, 1}}}&{{\theta _{N, 2}}}& \cdots &{{\theta _{N, T}}} \end{array}} \right] $ (5)

其中:N是应用数据集中应用的个数;T是应用数据集中所有标签构建的主题个数。Y矩阵中的每一项都是由式 (4) 计算得到。Y矩阵实际上是一个稀疏矩阵, 这是因为每个应用只包含了所有主题中的几个主题, 所以Y矩阵中的每一行都有很多的零值项。

2.4 问题描述

应用市场的推荐过程为:当用户浏览应用A的详情页面时, 在A页面中推荐其他的应用。如,推荐应用1, 推荐应用2, …, 推荐应用q(q为指定的变量)。模型示例如表 2所示。

表 2 应用市场推荐模型 Table 2 Recommendation model for application market

在应用市场推荐模型表中, 推荐应用1与当前应用的相似度要比推荐应用2与当前应用的相似度高;推荐应用2与当前应用的相似度要比推荐应用3与当前应用的相似度高;之后的推荐应用也遵循此推荐原则。

本文提出了基于LDA主题模型的移动应用的相似度构建方法。该方法利用应用在隐含主题上的概率分布计算应用相似度矩阵, 然后将相似度矩阵转化为可实际应用的推荐模型存储结构。

2.5 移动应用相似度矩阵构建

应用的相似度计算实际上是利用了式 (6) 的结果进行处理。应用的主题分布是应用空间的映射, 利用将移动应用表示成主题的概率分布, 计算应用数据集中两个应用之间的相似度便转化为计算两个应用对应的主题概率分布。如计算应用数据集中应用1和应用2之间的相似度, 便可以利用式 (6) 中的第一行概率分布和第二行的概率分布进行计算。这样便计算出了两个应用之间的相似度。

应用的相似度计算依据应用隐含主题矩阵Y, 利用简单易行的欧氏距离计算应用数据集中两两应用之间的相似度。欧氏距离计算公式为:

$ {d_{i, j}} = \sqrt {{{\left( {{\theta _{{\rm{i}}, 1}}-{\theta _{j, 1}}} \right)}^2} + {{\left( {{\theta _{{\rm{i}}, 1}}-{\theta _{j, 1}}} \right)}^2} + \cdots + {{\left( {{\theta _{{\rm{i}}, T}}-{\theta _{j, T}}} \right)}^2}} $ (6)

其中:di, j代表应用i与应用j之间的相似度;θi, 1是主题矩阵中第i个应用 (行) 中占第一个主题的概率值;θj, 1是主题矩阵中第i个应用 (行) 中占第一个主题的概率值;T为主题个数, 也即主题矩阵的列数。

通过循环使用式 (6) 便可计算出应用数据集中两两应用之间在主题分布上的相似度并构建出应用的相似度矩阵B

$ \boldsymbol{B} = \left[{\begin{array}{*{20}{c}} {{d_{1, 1}}}&{{d_{1, 2}}}& \cdots &{{d_{1, N}}}\\ {{d_{2, 1}}}&{{d_{2, 2}}}& \cdots &{{d_{2, N}}}\\ \vdots & \vdots &{}& \vdots \\ {{d_{M, 1}}}&{{d_{M, 2}}}& \cdots &{{d_{M, N}}} \end{array}} \right] $ (7)

其中:矩阵B是一个M×N的矩阵, M是应用数据集中应用的个数, N是主题数目 (即每个应用包含的隐含主题个数)。在计算相似度时, 矩阵主对角线上的数值都是0。因为主对角线的值是应用与自己之间的相似度, 所以这个数值肯定是0。在构建时需要对矩阵主对角线上的项目赋予一个较大的数值, 而且这个数据要比矩阵中的所有数值都大。

2.6 生成相似度矩阵算法

根据移动应用相似度矩阵构建的过程描述, 以下给出了生成相似度矩阵 (Creating Similarity Matrix, CSM) 的算法。

算法1   CSM算法。

输入:移动应用数据集appdataset; 标签字典tagdict

输出:相似度矩阵matrix[][]。

matrix[][]←null //初始化相似度矩阵

tfidfhead←TfidfMode (appdataset) //对应用标签做tfidf操作

num_topicst←160 //赋值主题数量

lda←LDAModel (tfidf, dict, num_topics) //训练LDA模型

For i=0 to appdataset.len //遍历应用数据集合

  For j=1 to appdataset.len

   matrix[i][j]←distance(appdataset[i], appdataset[j]) //计算两两应用之间的相似度

max_distancevmatrix.max()+1 //赋值最大值, 将应用与自己之间的相似度设置为最小

For i=0 to appdataset.len //遍历矩阵对角线, 赋值为最大值, 使其相似度最低

matrix[i][j]←max_distance

return maxtrix

2.7 相似度矩阵转化为链表结构

为将科学理论级别的应用矩阵相似度转化为工业级别简单易行的存储结构和过程,本文提出了一种利用纵向链表和横向链表的存储结构来实现。

应用市场的应用相似度储结构如图 4所示。

图 4 应用的相似度矩阵存储结构 Figure 4 Storage structure of application similarity matrix

相似度矩阵转化为存储结构的转化过程如下所述:

1) 获取移动应用相似度矩阵。

2) 取得第i(i为相似度矩阵中的行标, 1≤iN) 个应用, 在纵向列表尾部添加一个新节点。

3) 在相似度中的第i行寻找最大前q个最大值 (取得的最大值按照从大到小排列), 分别是L1, L2, …, Lq。在当前纵向链表中新建q个横向链表并按照从大到小的顺序将L1, L2, …, Lq数据写入横向链表的节点中。q的数据是人为指定的, 这里不对此值固定, 目的是为了可以满足不同的需求, 在本文中q代表每个应用详情页面中推荐其他应用的个数。

4) 重复步骤2)~3), 直到纵向链表中的数据节点数量等于应用数据集和中应用的个数N

使用该存储结构的优点:

1) 简单。相对于复杂的矩阵, 采用横向链表和纵向链表更加直观和容易理解。

2) 快速。此结构可以快速访问纵向链表并加载出该纵向链表节点对应的横向链表。若采用矩阵直接计算, 在每次计算过程都要将整个矩阵全部加载到内存,故而采用矩阵的形式会比该结构速度慢。

3) 可扩展。若应用数量增加, 可以在纵向链表尾部继续增加节点; 若推荐数据改变, 可以在横向链表中动态调整。如果采用矩阵的方式则需要重新构建整个矩阵。

4) 离线与在线相结合。离线的是矩阵, 在线的是该存储结构。可以离线处理复杂的矩阵而不影响当前的应用服务, 在必要时把离线处理好的矩阵结构重新更新到该存储结构,保证了当前在线服务的正常运行。

2.8 相似度矩阵转化为链表算法

针对相似度矩阵转化为链表, 本文给出了转化算法SM2LL (Similarity Matrix to Linked List) 的伪代码如算法2所示。

算法2   SM2LL算法。

输入:相似度矩阵matrix[][]; 推荐应用数量q

输出:链表head

head←null //初始化纵向链表头指针

h_thead //初始化纵向链表临时节点

v_t←null //初始化横向链表临时节点

For i=0 to matrix.len //遍历矩阵行

  h_linkedlist←null //初始化纵向链表节点

  h_t.h_nexth_linkedlist //建立纵向链表前驱关系

  h_Linklist.spp_idmatrix[i][0] //复制当前纵向链app_id

  v_linkedlist←null //初始化横向链表节点

  v_t←null //初始化横向链表临时节点

  matrix[i].sort() //排序矩阵当前行的相似度数据 (从小到大)

  For j=1 to q+1 //遍历前q个相似度最大的矩阵项目

   v_linklist.app_idmatrix[i][j] //赋值当前横向链表节点app_id

   v_t.nxetv_linkedlist //构建横向链表前驱关系

   h_tlinkedlist //纵向链表临时节点后移

return head

3 实验与分析

本文实验数据是从360应用市场爬取的约23000条数据的应用数据集。

3.1 LDA模型参数选择

在训练LDA主题模型时需要主题数目、样本迭代次数、字典、超参数α、超参数β等参数。本文实验过程中使用了自定义的词典、160个主题数目, 其他的参数则使用LDA模型默认值。

3.1.1 分词工具选择

本文实验的分词工具采用的是开源结巴分词工具。结巴分词是当前针对中文分词较好的工具之一,它支持三种分词模式, 分别是精确模式、全模式和搜索引擎模式,本文采用的是精确模式。此外结巴分词还支持繁体分词和自定义词典功能。本文在构建LDA模型时就为所有的移动应用标签建立了自定义词典。

3.1.2 LDA模型主题数选择

主题数是指整个移动应用数据集中包含的隐含主题个数,是LDA模型中必须给出的参数。从某种程度上讲, 主题数的不同会影响到应用的分布。在LDA主题模型建模过程中, 参数估计是用Gibbs抽样算法。在设置主题数目的过程中, 实验分别测试了主题数目分别为50、150、200、250不同的数值,然后在这些不同的主题数目下观测移动应用的分布图。结果显示:主题数目为150下观测到移动应用没有主题数为0, 也就是移动数据集中每个应用都有至少一个主题;而在主题数目为200时, 有很小一部分移动应用是没有隐含主题的, 所以就在主题数为150~200重新寻找合适的主题数目。然后又进行了主题数目为160到190的测试,发现主题数目设置为169时,移动应用的分布更加合适。

3.2 主题分布

图 5是LDA模型在训练过程中设置第一组不同的主题数目下的移动应用分布柱状图, 如图 5所示。

图 5 不同主题数 (间隔为50) 下的移动应用分布 Figure 5 Mobile application distribution in different numbers (interval is 50) of topic

图 5可以很容易地看出, 每个移动应用中只会出现一小部分主题。所以, 主题模型是一个稀疏的模型, 即便每个应用中有很多潜在主题, 但是也只有一小部分会被利用。其中主题数为150时, 在移动应用数据集中所有的应用都至少有一个隐含主题, 但是当主题数为200时, 有一小部分移动应用是没有隐含主题。这里的结果不符合现实际, 所以继续在主题数为150~200探索合适的主题数设置,分别设置主题数为160、170、180和190, 实验得出对应的应用主题数分布, 如图 6所示。

图 6 不同主题数 (间隔为10) 下的移动应用分布 Figure 6 Mobile application distribution in different numbers (interval is 10) of topic

图 6可看出, LDA主题模型中主题数设置为160相对合适。因为在主题数为160时, 任何一个移动应用都至少包含一个隐含主题;当主题数增大到170时, 就会有很小一部分应用是没有隐含主题的。在主题数为160时, 大约有11124个应用中包含了1个主题, 大多数文档涵盖了2~5个主题, 还有一部分应用有6~9个主题,基本上没有应用会拥有10个以上的主题 (包含是10个主题)。平均下来每个移动应用只涉及1.7个主题, 其中99.4%的移动应用设计的主题数目小于等于5。

通过LDA模型训练后得到了160个主题, 每个主题都包含了10个应用标签。在这里列取了其中10个具有典型意义的主题和每个主题最具代表性的前5个标签 (按照每个标签在当前隐含主题中的概率从大到下的排列顺序), 如表 3所示。

表 3 隐含主题标签构成 Table 3 Labels constitution of latent topics

这里并没有将主题进行明确的命名, 这是因为LDA模型训练出来的主题是具有隐含性质的,有时可以很直接地从这些应用标签中快速地反映出当前主题就是生活中很明确的含义,但有时LDA生成的主题也会很晦涩难懂。如果发现这种情况,就需要迭代地调整模型参数 (主题个数) 以达到较好的效果。

3.3 推荐评价

推荐算法常用的评价方法主要有平均绝对误差 (Mean Absolute Error, MAE)、均方根误差 (Root Mean Square Error, RMSE)、准确率 (Precision)、召回率 (Recall)、综合评价指标 (F1-measure) 以及平均精度均值 (Mean Average Precision, MAP)[25-26]

MAERMSE是用来评价预测评分准确性的标准, 反映了算法的预测评分和用户实际评分的相似程度, 其最终的值越小表示推荐的效果越好。定义如式 (8)~(9) 所示:

$ MAE = \frac{1}{N}\sum\limits_{{\rm{p}}, o} {|{R_{p, o}}-R{'_{p, o}}|} $ (8)
$ RMSE = \sqrt {\frac{1}{N}\sum\limits_{p, 0}^n {{{({R_{p, o}}-R{'_{p, o}})}^2}} } $ (9)

其中:Rp, o表示用户p对推荐对象o的实际评分; Rp, o代表相应的评分预测值; N表示移动应用的数量。

指标precisionrecallF1-measure和MAP是对推荐算法在分类准确率上进行评价的标准, 它们所反映的是推荐算法对分类预测的准确程度。这四个评价指标相对比较适合具有明显二分喜好的用户。定义如式 (10)~(13) 所示:

$ precision = \frac{1}{N}\sum\limits_{{\rm{p}}, o} {{N_{t, p}}/Q} $ (10)

其中:Nt, p代表应用推荐列表中用户喜欢的应用数量, Q则表示推荐应用的数量。

$ recall = \frac{1}{N}\sum\limits_{{\rm{p}}, o} {{N_{t, p}}/{B_u}} $ (11)

其中:Nt, p同样代表应用推荐列表中用户喜欢的应用数量; Bu则表示拥护u喜爱的推荐应用数量。公式所表达的内涵是用户所喜欢的推荐对象能被推荐的概率。

$ {F_1} = (2 \times precision \times recall)/(precision + recall) $ (12)

式 (12) 是对式 (10) 和式 (11) 的融合。F1-measure同时考虑了precisionrecall两个评价标准, 所以它可以比较全面地评价推荐算法的优劣。

$ MAP = \frac{1}{N}\sum\limits_{u = 1}^N {\sum\limits_{q = 1}^L {P({L_{uq}})/{m_u}} } $ (13)

其中:mu表示第u次推荐时用户喜爱的推荐数量; P(Luq) 则代表第u次推荐时推荐列表前q个推荐应用中用户喜爱的推荐应用数量和位置q的比值。

为了更好地提高这些评价指标,需要推荐出相似度更高的对象,对象之间的相似度计算则必不可少。为此, 提出了移动应用标签相似度计算公式, 如式 (14) 所示:

$ similarity = \frac{1}{N}\sum\limits_{a = 1}^N {(\frac{{\sum\limits_{b = 1}^L {m(a)} }}{{\sum\limits_{b = 1}^L {c(a)} }})} $ (14)

其中:N代表移动应用总量; L代表根据当前移动应用a推荐出的应用列表。为了计算推荐出来的移动应用与当前的移动应用之间标签的相似度, 需要利用c(a) 计算推荐列表中的总标签数, 同时利用m(a) 来计算当前移动应用a与推荐列表中的标签匹配相同的标签数, 最后通过累加和除以N计算数据集总体的相似度。需要注意此处的数值越大代表相似度越高。通过式 (14) 计算出的不同推荐数量下的应用相似度结果, 如图 7所示。

图 7 不同推荐数量下的LDA构建相似度 Figure 7 Similarity in different numbers of recommendation by LDA

图 7中可以看出LDA主题模型在不同推荐数量上的相似度。随着推荐数量的增加, 推荐出的应用与当前应用的相似度不断下降;但是提升了推荐的多样性。

为了使推荐出的移动应用不仅具有较高的相似度,还要具有多样性,故而需要选择合适的推荐数量。当推荐数量为6时, 使用LDA构建移动应用相似度为0.129,当前移动应用市场推荐的应用相似度为0.056。可看出,使用LDA主题模型构建移动相似度比当前移动应用市场推荐的应用相似度高130%。

4 结语

本文提出了一个基于LDA主题模型的移动应用相似度构建方法。该方法以移动应用市场中应用的标签为特征来描述应用, 利用LDA隐含主题模型对应用进行研究, 实现了在应用标签级别的小粒度的相似度构建方法。

利用移动应用数据集的隐含主题分布, 构建了应用主题分布矩阵, 进而构建了应用相似度矩阵, 并将这种基于应用隐含主题的相似度矩阵简单地应用到了基于内容的推荐策略。这种相似度的推荐策略不仅可以应用在移动应用中, 也可以应用在其他领域中,如基于文本内容的推荐、图像分类[27]等。

此外, 由于每一个隐含主题都具有随机性与不确定性, 在LDA主题模型训练过程中将导致输出的隐含主题难于理解, 此问题有待研究; 在训练LDA主题模型时, 模型的参数还需探索与优化, 从而获得最佳的结果; 在构建相似度矩阵的过程中, 最终输出的相似度矩阵有待优化与调整; 在本文实验数据集规模下, 输出的相似度矩阵保存为文本文件后约为10 GB, 这也说明相似度矩阵随着应用数量的增加会呈现平方级别增长趋势, 这也将是今后的一个主要研究内容; 应用的推荐策略在转化过程中仅使用了一种纵向和横向链表相结合的存储结构, 这种结构有着简单、快速、可扩展、离线和在线相结合的优点, 但还可再完善与提高, 所以此内容也是今后需研究的内容之一。

参考文献
[1] BLEI D M. Probabilistic topic models[J]. Communications of the ACM, 2012, 55 (4) : 77-84. doi: 10.1145/2133806
[2] 王李冬, 魏宝刚, 袁杰. 基于概率主题模型的文档聚类[J]. 电子学报, 2012, 40 (11) : 2346-2350. ( WANG L D, WEI B G, YUAN J. Document clustering based on probabilistic topic model[J]. Acta Electronica Sinica, 2012, 40 (11) : 2346-2350. )
[3] AL-SALEMI B, AB AZIZ M J, NOAH S A. LDA-AdaBoost.MH: accelerated AdaBoost.MH based on latent Dirichlet allocation for text categorization[J]. Journal of Information Science, 2015, 41 (1) : 27-40. doi: 10.1177/0165551514551496
[4] FOULDS J, BOYLES L, DUBOIS C, et al. Stochastic collapsed variational Bayesian inference for latent Dirichlet allocation[C]//KDD 2013: Proceedings of the 19th ACM SIGKDD International Conference on Knowledge Discovery and Data Mining. New York: ACM, 2013: 446-454.
[5] SALTON G, WONG A, YANG C S. A vector space model for automatic indexing[J]. Communications of the ACM, 1975, 18 (11) : 613-620. doi: 10.1145/361219.361220
[6] LEE Y-S, LO R, CHEN C-Y, et al. News topics categorization using latent Dirichlet allocation and sparse representation classifier[C]//Proceedings of the 2015 IEEE International Conference on Consumer Electronics. Piscataway, NJ: IEEE, 2015: 136-137.
[7] MORO S, CORTEZ P, RITA P. Business intelligence in banking: a literature analysis from 2002 to 2013 using text mining and latent Dirichlet allocation[J]. Expert Systems with Applications, 2015, 42 (3) : 1314-1324. doi: 10.1016/j.eswa.2014.09.024
[8] ANOOP V S, PREM SANKAR C, ASHARAF S, et al. Generating and visualizing topic hierarchies from microblogs: an iterative latent Dirichlet allocation approach[C]//Proceedings of the 2015 International Conference on Advances in Computing, Communications and Informatics. Piscataway, NJ: IEEE, 2015: 824-828.
[9] LIU X, ZENG J, YANG X, et al. Scalable parallel EM algorithms for latent Dirichlet allocation in multi-core systems[C]//WWW 2015: Proceedings of the 24th International Conference on World Wide Web. Republic and Canton of Geneva, Switzerland: International World Wide Web Conferences Steering Committee, 2015: 669-679.
[10] DEEPAK N A, HARIHARAN R, SINHA U N. Cluster based human action recognition using latent Dirichlet allocation[C]//Proceedings of the 2013 International Conference on Circuits, Controls and Communications. Piscataway, NJ: IEEE, 2013: 1-4.
[11] DEERWESTER S, DUMAIS S T, FURNAS G W, et al. Indexing by latent semantic analysis[J]. Journal of the American Society for Information Science, 1990, 41 (6) : 391-407. doi: 10.1002/(ISSN)1097-4571
[12] HOFMANN T. Probabilistic latent semantic indexing[C]//SIGIR 1999: Proceedings of the 22nd Annual International ACM SIGIR Conference on Research and Development in Information Retrieval. New York: ACM, 1999: 50-57.
[13] BLEI D M, NG A Y, JORDAN M I. Latent Dirichlet allocation[J]. The Journal of Machine Learning Research, 2003, 3 : 993-1022.
[14] 项亮. 推荐系统实战[M]. 北京: 人民邮电出版社, 2012 : 1 -2. ( XIANG L. Recommendation in Practice[M]. Beijing: Posts & Telecom Press, 2012 : 1 -2. )
[15] BELL R, KOREN Y, VOLINSKY C. Modeling relationships at multiple scales to improve accuracy of large recommender systems[C]//Proceedings of the 13th ACM SIGKDD International Conference on Knowledge Discovery and Data Mining. New York: ACM, 2007: 95-104.
[16] ONUMA K, TONG H, FALOUTSOS C. TANGENT: a novel, "surprise me", recommendation algorithm[C]//Proceedings of the 15th ACM SIGKDD International Conference on Knowledge Discovery and Data Mining. New York: ACM, 2009: 657-666.
[17] MUSTO C. Enhanced vector space models for content-based recommender systems[C]//Proceedings of the Fourth ACM Conference on Recommender Systems. New York: ACM, 2010: 361-364.
[18] SONG Y, ZHUANG Z, LI H, et al. Real-time automatic tag recommendation[C]//Proceedings of the 31st Annual International ACM SIGIR Conference on Research and Development in Information Retrieval. New York: ACM, 2008: 515-522.
[19] MASSA P, AVESANI P. Trust-aware collaborative filtering for recommender systems[C]//Proceedings of the OTM Confederated International Conferences, CoopIS, DOA, and ODBASE 2004, LNCS 3290. Berlin: Springer, 2004: 492-508.
[20] MASSA P, AVESANI P. Trust-aware recommender systems[C]//Proceedings of the 2007 ACM Conference on Recommender Systems. New York: ACM, 2007: 17-24.
[21] MA H, YANG H, LYU M R, et al. SoRec: social recommendation using probabilistic matrix factorization[C]//Proceedings of the 17th ACM Conference on Information and Knowledge Management. New York: ACM, 2008: 931-940.
[22] DONG X, WEI L, ZHU H, et al. An efficient privacy-preserving data-forwarding scheme for service-oriented vehicular Ad Hoc networks[J]. IEEE Transactions on Vehicular Technology, 2011, 60 (2) : 580-591. doi: 10.1109/TVT.2010.2095432
[23] WEI X, CROFT W B. LDA-based document models for Ad Hoc retrieval[C]//Proceedings of the 29th Annual International ACM SIGIR Conference on Research and Development in Information Retrieval. New York: ACM, 2006: 178-185.
[24] HE B, AGRAWAL D P. An identity-based authentication and key establishment scheme for multi-operator maintained wireless mesh networks[C]//Proceedings of the 7th IEEE International Conference on Mobile Ad-Hoc and Sensor Systems. Piscataway, NJ: IEEE, 2010: 71-78.
[25] 朱郁筱, 吕琳援. 推荐系统评价指标综述[J]. 电子科技大学学报, 2012, 41 (2) : 164-175. ( ZHU Y X, LYU L Y. Evaluation metrics for recommender systems[J]. Journal of University of Electronic Science and Technology of China, 2012, 41 (2) : 164-175. )
[26] MANNING C D, RAGHAVAN P, SCHUTZE H. Introduction to Information Retrieval[M]. Cambridge: Cambridge University Press, 2008 : 76 -80.
[27] LI Z, TIAN W, LI Y, et al. A more effective method for image representation: topic model based on latent Dirichlet allocation[C]//Proceedings of the 201514th International Conference on Computer-Aided Design and Computer Graphics. Piscataway, NJ: IEEE, 2015: 143-148.