基于移动终端日志数据的人群特征可视化
发布时间:2022-03-05
摘 要: 随着我国移动互联网的迅猛发展,如何从海量移动终端日志数据中提取出有效信息,并进行合理、清晰的可视化分析,为工业界等提供有价值的统计分析功能显得尤为重要.目前,对于移动终端日志数据的研究和分析多是基于对单一属性的统计结果分析,如应用下载排行、用户留存率等.为了进一步挖掘移动终端日志数据背后深层次的隐含信息,更加准确地概括出移动终端用户的特征,提出了一种基于移动应用程序日志数据的人群特征分析与画像计算方法,构造了基于移动应用程序数据的主题模型,并将移动设备用户按照与不同应用主题的相关度进行聚类, 得到了具有不同特征的人群,从而提出了基于层次气泡图和 Voronoi Treemap 的可视化展现与分析方案.进一步将人群特征与时间信息、地理位置信息相结合,从多角度可视化展现人群特征.最后,根据该研究内容,实现了 B/S 架构的日志数据可视化分析原型系统,并通过案例分析验证了该方法的有效性.
关键词: 数据可视化;主题模型;移动设备用户特征
随着信息技术的不断发展,进入 21 世纪以来,智能手机产业飞速发展.智能手机可以让用户根据自己的需求和喜好安装各种功能的应用软件、各种类型的游戏,这是它吸引用户的主要特色之一.如何从含有众多应用程序的应用市场中为移动用户推荐他们确实需要的应用程序?如何将一款手机游戏推荐给喜欢该类型游戏的用户;另外,值得注意的是,用户在不断下载他们感兴趣的应用的同时也会卸载不再需要的应用,如何成功留住用户是一个重要问题.以上这些问题成为应用商店平台提供商、移动应用程序开发者都希望得到解决的问题.
通过移动终端日志信息得到的海量用户信息和应用程序数据,为商业研究和分析提供了宝贵的数据资源. 目前,很多厂商都已经开始利用日志数据进行研究和分析.但是,目前的数据研究和分析大多基于对单一属性的统计结果分析,如应用下载排行、用户留存率等.如果希望得到人群的行为习惯、更为精确的用户特征,往往需要综合多维度的数据分析.但将多维度的数据同时进行清晰的呈现,对于可视化展示而言是很困难的.
主题模型(topic model)[1]属于概率产生式模型(generative model),是一种层次贝叶斯模型,可以以无监督的方式自动组织和理解文档,发掘一系列文档中抽象的主题,在自然语言处理、机器学习等领域都有广泛的应用. 为了更加直观地展示主题模型得出的结果,帮助人们理解,主题模型越来越多地与可视化方法相结合,主题模型为数据可视化提供模型基础,可视化将主题模型结果直观地、可交互地进行展现.
本文将 LDA(latent Dirichlet allocation)主题模型引入到手机日志数据的分析中,提取出手机应用分类主题. 并将手机用户按照与不同应用主题的相关度进行聚类,形成具有代表性的人群.将人群聚类结果与时间维度相结合,用于观察变化趋势.此外,还将人群聚类信息与地理位置信息相结合,从而进一步了解手机用户更为详细的信息,如分布情况.为了能够将结果以直观、易懂的方式展现给相关厂商和研究人员,帮助他们更加有效地对手机用户进行研究和分析,本文分别采用了层次气泡图、像素地域分布图等可视化展现方法.本文第 1 节讨论相关工作.第 2 节详细介绍人群特征的可视化研究的流程和方法以及具体的实现步骤.第 3 节介绍人群聚类信息结合空间维度信息的可视化.第 4 节进行总结,并对未来的研究方向提出设想.
1 相关工作
1.1 主题模型
最早的文本数据挖掘方法是基于向量空间模型(vector space model,简称 VSM)[2].随后,Landauer 等人提出了潜在语义分析模型(latent semantic analysis,简称 LSA)[3].LSA 通过线性代数中的奇异值分解(singular value decomposition,简称 SVD[4])方法来对单词-文档矩阵进行维数约减,从而将单词-文档映射到一个低维的潜在语义空间中[5].Hofmann 等人于 1999 年提出了概率潜在语义分析模型(probabilistic latent semantic analysis,简称 PLSA)[6],Blei 等人于 2003 年提出了潜在狄利克雷分配模型(即 LDA 模型) [7].
传统判断两篇文档相似性的方法是,比较两篇文档共同包含的单词的多少,如 TF-IDF(term frequencyinverse document frequency)方法等[8,9].LDA 模型则假设一篇文档是由主题集合中的各个主题按照一定的比例构成的,而每一个主题又是由单词表中的单词按照一定的比例混合而成的.通过机器学习的方法可以得到文档的主题,从而判断两个文档是否相似.LDA 模型层次清晰,依次分为文档层、主题层和单词层.其中,文档和主题相关联,主题和单词相关联.可以通过学习文档集中的单词挖掘出所有潜在的主题信息,并通过这些信息来挖掘该文档集以外的其他文档的主题分布.
1.2 数据可视化
现代的可视化旨在研究大规模信息资源的视觉呈现[10],以及利用图形和图像的相关技术和方法将数据直观显示,为用户提供可交互操作等,帮助人们理解和分析数据[11].如今,可视化技术已成为一个基本的工具,用来揭示数据集中数据之间的关系和背后隐匿的信息[12].基于不同的显示需求、交互需求等,可视化的方法也是多种多样的.Treemap(矩形式树状结构绘图法)是一种在受限空间内展示树状数据结构的可视化方法[13],通过将矩形不断进行细分(slice and dice),可以在固定大小区域内展示多层级的数据信息,也可以比较直观地展示同层级数据之间的比较,但很容易在结果中出现细长的矩形,不利于辨别.为了解决这一问题,提出了 Voronoi Treemap (泰森多边形树状结构图) [14]的方法,可以避免出现细长矩形的情况,达到更好的可视化效果.而且最外层的区域也不再限制为矩形,可以在任意形状内进行多层级数据的展示.马赛克图(Mosaic display)是一种用来展示关联表(contingency table)的图解法[15].马赛克图与 Treemap 的区别是:每一次将一个矩形切分成几个矩形,都等价于增加一个维度的信息.一般用于二维、三维、四维的低维数据的可视化展示.本文采用了嵌套圆圈的形式来展示结果,并将这种展示形式命名为气泡图[16].用一个圆圈将构成信息包含起来,符合集合的表示形式,也能够展示数据结果的层次关系,更为用户提供了方便的交互.与传统的、一旦生成就固定不变的二维表格表现方式相比更加灵活多变,通过缩放操作可以为用户清晰地展示用户关心的数据细节,也可以进行整体上的宏观比较.
2 基于 LDA 主题模型的人群聚类
本文的研究课题是基于手机日志数据的人群特征可视化,尝试挖掘出手机日志数据背后隐含的数据信息, 更加深入地了解手机用户的人群特征.如图 1 所示,根据这一方向和目标,我们确定了研究的基本流程,主要分为 4 个步骤:(1) 获取研究所需的相关日志数据;(2) 对这些数据文件进行筛选,选取并整理出有效的数据;(3) 构造可视化系统的原始模型,探索对日志数据的可视化方法和工作流程,并最终对这些数据进行可视化转换;(4) 根据可视化展现结果,结合实际情况进行观察和对比分析,挖掘出更有效的信息,并不断调整改善模型.
2.1 问题分析
为了挖掘出手机用户的用户特征及行为习惯,本节研究内容所需要的数据主要有两类:一类是通过日志采集到的每天的手机用户安装的应用程序列表信息,包括用户 ID、安装的应用程序 ID 列表、卸载的应用程序 ID 列表以及年、月、日等时间信息;另一类是从各大应用市场得到的应用程序所属的分类标签信息,包括应用程序 ID 和分类标签名称列表.
传统的基于手机日志数据的可视化大多是以二维表格的形式展现统计结果,而我们希望可以挖掘出一些潜在的更为有价值的信息,因为经过对真实用户数据的观察以及用户调研,我们发现,手机用户安装的应用程序往往是可以进行归类的,如微博、微信、QQ、人人网、开心网等应用都是属于社交类应用程序.我们把这样的一个集合定义为一个主题“社交类主题”,我们可以发现,有些用户对某一主题类别的应用程序安装得特别多,这是很有实际价值的信息.另一方面,很多人都不会只安装某一主题类别的应用程序,如果能够挖掘两类不同主题类别应用程序安装数量的比例关系,也是很有价值的信息.例如,“安装游戏主题类别应用程序多的人往往也会安装手机安全手机清理主题类别的应用程序”,结合实际使用场景,玩游戏多的人往往对手机性能要求比较高, 所以会通过手机清理类应用程序及时清理手机上的“垃圾内存”.
因为每天都会产生大量的手机日志数据,所以,如何从庞大的日志数据中筛选出有用的数据信息进行建模分析显得十分重要.主题模型需要做的数据预处理工作主要有以下几点:
(1) 系统会每天采集很多次日志数据,但同一天同一部手机上安装的应用程序相关信息往往是一样的,所以需要做去除掉重复的记录.
(2) 对于用于收集数据的系统而言,每天都会有新激活的设备,也会存在不再激活、销毁的设备.对于主题模型而言,由于通过 LDA 学习出来的主题模型不受总的手机设备的影响,所以我们对于每个月的数据,可以固定地只观察一部分确定的手机设备的日志数据.
(3) 每天系统获取到的手机日志数据包含该手机今日新安装的应用程序信息及卸载的应用程序信息,但不包括该手机当前状态下的所有应用程序信息.所以需要额外维护一张数据表,用于存储我们观察的手机设备的历史累积的安装的应用程序列表,每天根据日志得到的应用程序变化数据以及前一天的应用程序状态数据,计算得到当天的应用程序数据信息.
2.2 主题模型的建立
在传统的手机日志数据可视化中,关于手机应用程序信息的展示往往是对单一信息进行简单的统计结果后的展示,如应用程序装机量的排名、某一应用的用户留存率统计等.另外一种对手机应用程序信息的可视化展示是统计整个手机应用市场中按类别划分后的应用程序的安装数量,最后得到的是手机市场中不同类别应用程序的安装数量排名.这样的统计数据具有一定的价值,可以知道,目前应用市场中哪类应用程序安装量最大,但也存在如下不足之处:
(1) 每个手机用户都不太可能只安装一个类型的应用程序,都会安装多个类型的应用程序,所以只统计得到的某一分类的用户数量,却无法得知该用户安装其他分类应用程序的多少.所以,这种方法是不能代表具有某类特征的人群的,一类人群的手机应用程序往往是由不同分类的应用程序按照一定比例混合组成的.
(2) 按照类别进行划分得也不够细化、精确.因为应用市场给一个应用程序划分的大类比较概括,不够细化,如,游戏类下面又可以具体分为塔防类游戏、跑酷类游戏、射击类游戏、解谜类游戏等,工具类下面又可以具体分为输入法、浏览器、词典等.每一个具体的小分类下面,会包括各种名称的应用程序. 所以,按照这些更为细化的标签进行分类,可以得到更为准确的结果.
(3) 一个应用程序可能会有多个标签,所以只归纳为一个大类进行统计不够准确.不同的应用程序也可以组合,形成新的主题分类.因为应用市场中会不断有新的应用程序产生,也可能会产生新的应用程序类别,所以主题分类需要可以据此动态改变. 我们则将 LDA 主题模型巧妙地引入到手机日志数据可视化与分析中来.定义手机应用程序所包含的多个分类标签对应单词,一部手机即对应一篇文档,采集到的所有手机用户即为语料库,通过提取应用主题来分析手机用户.
通过对用户的手机上所安装的应用程序标签数据进行分析,我们可以得到该手机用户潜在的主题信息.基于此,我们可以判断两名手机用户是否属于同一类型的用户,我们可以将类似的用户聚集在一起形成人群.在对所有手机用户进行聚类之前,LDA 主题模型很好地帮助我们对应用数据特征进行了降维操作,将原本每个手机上数十个千差万别的应用名称提取为该手机用户与几个(本文为 5 个)主题的相关度.使用这 5 个主题,按照不同比例组合,就可以代表一个手机用户的特征,从而可以很容易地对所有用户进行聚类操作,解决了直接基于手机安装的应用程序名称进行聚类,由于不同用户之间安装的应用程序差异很大、特征点太多,无法进行有效聚类的问题.
2.2.1 建立应用标签的词袋模型
首先,我们需要将手机上的应用程序数据与 LDA 模型的输入数据文档中的单词建立对应关系.将应用名称直接作为单词,会导致整个语料库单词太多、词频太小,无法有效学习出整个语料库中的文档主题信息.而将应用程序名称对应为预先维护好的几个分类标签后,可以达到名称的规范统一,保证语料库的单词量适中,词频适中,还可以增加代表该手机用户的标签数量.所以,我们使用应用程序的分类标签信息作为单词,建立了每台手机的词袋模型,见表 1.
为了得到更好的分析结果,使主题模型更加准确地代表手机用户,我们尝试对采集到的每个手机上安装的应用程序数据增加对应的打分机制.因为手机用户安装一个应用程序后,可能从未使用过该应用程序,可能使用过很多次该应用程序,可能过了一两天后将该应用程序卸载,可能该应用程序自安装后很多天都没有卸载,所以我们设计了如下的打分机制:对于手机上安装的每个应用程序,如果该应用安装当天就卸载,则认为是不得分的;该应用每在该手机上留存 1 天,对应的分类标签便增加 1 分;留存大于等于 10 天以上的应用,我们认为该应用一直在该手机上,对应的分类标签得 10 分.手机用户每实际启动该应用程序一次,便为该应用程序对应的分类标签增加 1 分.
增加打分机制后,得分越高的应用标签,我们认为该标签类别的应用在该手机上使用得越多,与该手机用户特征关系越大.与 LDA 模型中的词频相对应,一篇文档中出现次数越多的单词越能代表该篇文档.
当然,和 LDA 处理文档时会剔除像“and”这种在每篇文档中都会出现多次的无意义单词一样,我们也会剔除“免费软件”这种会属于很多应用程序、在每个手机上都会出现多次的、没有实际意义的标签.而且我们采集的日志数据,统计的是手机用户自己安装的应用程序信息,不包括原生 ROM 自带的如短信、电话等,这些每部手机买来就已经安装好的应用程序.
通过对分类标签增加打分机制,我们得到了能够更加准确代表手机用户应用数据的词袋模型.
2.2.3 手机特征聚类
通过上述 LDA 模型学习,我们同时得到了每个手机与 5 个主题的相关度.此时,用 5 个主题的相关度就可以代表该手机用户的特征.如某手机用户和“游戏”、“社交通信”、“手机工具”、“多媒体”、“生活服务”5 个主题的相关度依次为 0.8,0.3,0.3,0.2,0.1,我们可看出,该手机用户属于比较典型的游戏玩家人群.将所有手机用户都以主题 5 维向量来表示后,我们就可以用 K-Means 聚类算法[20]将具有相同主题特征的用户聚集,形成具有特征的代表性人群.基于 MDL 标准[21]以及多次实验,我们选择聚类成 5 类人群更具有代表性且易于观察.我们用该人群分别和 5 类主题的相关度大小来代表该人群的特征.如图 3(a)所示,横坐标代表 5 类主题,纵坐标代表聚成的 5 类,每个色块代表该类人群和对应主题之间相关度,色调越暖,相关度就越大.
图 3 是我们采用不同的信息作为“单词”的实验结果.图 3(a)是我们采用应用程序的分类标签信息作为单词, 建立词袋模型,参与 LDA 计算;图 3(b)所示为我们直接使用应用程序的名称作为单词以建立词袋模型,用于LDA 计算.可以看到:使用应用程序名称作为单词,由于词库太大、词频太小,无法有效提取出主题模型,导致每个聚类后的簇(cluster)和每个主题的相关度都差不多,没有区分度.而使用应用标签信息作为单词,最后的效果比较理想,每个类簇都有各自的特征,之间存在较明显的差异.
2.3 可视化转换
对海量的手机日志数据进行有针对性的筛选和处理后,通过网页的形式将结果直接展示,提供给用户自己去挖掘数据之中的价值,不应该仅仅是一副由程序计算后生成的图片或表格,而应该是一个可以进行交互的应用,使得用户可以方便地进行操作.用户根据自己的视角来获取感兴趣的内容,并可以通过交互的方式逐步缩小兴趣点的范围.当用户通过筛选确定自己感兴趣的人群或主题后,可视化系统可以将这部分人群的应用程序数据进行详细的展示,并提供关键字段的数据导出功能,供用户更近一步地进行深度分析和使用.基于上述对本次可视化研究的意义和目的的探讨以及对用户数据的分析,逐渐探索出了一个基于手机日志数据对手机用户人群特征的可视化流程和方法,这也是本文可视化研究的核心.
2.3.1 层次气泡图
通过 LDA 主题模型计算得到的应用程序主题信息以及手机用户和主题的相关度、主题和分类标签的相关度后,我们选择使用嵌套的圆圈,如图 4(a)所示,即气泡图来进行展现计算结果.层次气泡图最外层圆圈代表人群,中间一层 5 个圆圈代表该人群与 5 个应用主题的相关度比例关系,最里面一层的 5 个小圆圈代表最能表示该主题的 5 个分类标签,同样用面积去编码其相关度.用一个圆圈来将其构成信息包含起来,符合认为概念中集合的表示形式.通过 LDA 主题模型计算得到的结果,本身具有嵌套关系,用户人群由主题组成,主题又由分类标签组成,所以我们将圆圈也进行嵌套,这样更符合数据结果的层次关系.气泡图更为用户提供了方便的交互.用户选择了感兴趣的人群后,可以点击代表该人群的圆圈,人群圆圈将放大;用户可以看到该人群的具体特征,主题信息的构成比例,如图 4(b)所示;当用户选择了进一步想了解的主题的圆圈后,该主题圆圈将放大,用户可以观察到该主题里包含的具体应用程序分类标签及其对应的比例.这种层层递进的表现形式,可以使用户先对所有人群有总体的概览,进行不同人群的比较;选择了想进一步了解的人群后,可以通过放大的交互操作,得到更为详细的信息展示.
我们通过 pack()函数将后台 LDA 主题模型计算得到的 json 格式的结果数据,在指定的网页空间范围(长和宽)内,先后计算代表人群、主题、标签的大圆、中圆、小圆的半径,圆的位置都尽可能地相切.圆的面积大小分别与人群大小、每个人群和 5 个主题的相关度大小、每个主题及其内的 5 个分类标签的相关度大小相关.5 个主题选取了 5 个具有明显差异的色系来代表,每个主题内的分类标签采用同一个色系的颜色,并按照固定的差值进行深浅变化.
2.3.2 基于时间维度的动态比较
气泡图将 LDA 主题模型计算得到的人群聚类结果以嵌套圆圈的形式为用户进行展现,用户可以选取日期来查看该日的人群聚类信息.如果增加时间维度,就可以帮助用户察看一段日期范围内的人群变化趋势.
如果只是将不同天的数据进行切换,会显得很突兀,不自然,所以我们采用动画将每天的可视化结果串联起来.先使用 pack 函数计算得到后一天日期的气泡图中圆圈的半径及位置坐标,利用 transition 函数,可以对网页上的每个圆圈元素按照指定的方向及速度进行变换,实现串联动画.
然而,如果只是通过平移动画将前后两天的气泡图串联起来,那么,由于在通过 pack 函数计算每天的圆圈半径和位置坐标时,为了更有效地使用空间,会优先考虑尽可能地将圆圈之间形成相切关系,所以前后两天的代表人群的大圆圈的位置可能会出现较大变动,并且动画变换过程中会出现交叉,如图 5 中矩形框框出部分所示.这样产生的动画会变化较大,在观察连续的多天数据时变化剧烈,不方便观察人群的变化趋势.
因此,我们需要将代表 5 类人群的大圆圈的相对位置尽可能地固定下来,于是,我们对 pack函数进行了改进, 在计算大圆圈的位置坐标时优先依据人群编号进行排序操作,将人群 1~人群 5 从 9 点钟位置依次按照顺时针顺序进行排列.如图 6 所示,当代表人群的大圆圈位置相对固定后,一段日期范围内的动画也达到了平滑过渡的效果,使得用户观察变化趋势更为直观了.
2.3.3 Voronoi Treemap
气泡图可以层次分明、清晰地将人群特征和主题相关度信息进行可视化展示,但占用的面积较大.如果想看到深层次的细节信息,则需要通过点击放大后察看,适合在空间充足的网页中进行可视化展示.但在手机移动端,如手机浏览器、微信中查看,或者在网页中显示缩略图时,就会显出不足之处.
为了满足在较小的空间内也可以让用户查看到整体的人群聚类结果,我们采用泰森多边形树图(voronoi treemap)[22]来展现数据.Voronoi Treemap 中的基本图形单位是任意形状的小多边形,用面积代表这个小多边形数据的大小,由于每个小多边形可以是任意形状的,所以可以充分利用空间,不留间隙.每块区域都是不规则的多边形,再配以辅助颜色后,可以比较清楚地区分层级关系.最终得到的 Voronoi Treemap形式展示的可视化结果如图 7 所示.——论文作者:张宏鑫 1 , 盛风帆 2 , 徐沛原 1 , 汤 颖 2
本文来源于:《软件学报》注重刊登反映计算机科学和计算机软件新理论、新方法和新技术以及学科发展趋势的文章,主要涉及理论计算机科学、算法设计与分析、系统软件与软件工程、模式识别与人工智能、数据库技术、计算机网络、信息安全、计算机图形学与计算机辅助设计、多媒体技术及其他相关的内容.