2. 科技部高技术研究发展中心 北京 海淀区 100044;
3. 电子科技大学计算科学与工程学院 成都 611731
2. High Technology Research and Development Center, Ministry of Science and Technology Haidian Beijing 100044;
3. School of Computer Science and Engineering, University of Electronic Science and Technology of China Chengdu 611731
随着移动互联网的发展,许多互联网公司越来越关心用户的基础属性信息,包括性别、年龄、收入及文化水平等,以便于提供更好的个性化服务。如Google公司提供的个性化搜索服务,结合了用户的地理位置信息返回相应的搜索结果[1];亚马逊购物网站则根据用户的浏览和购买记录,向用户推荐相应的商品以促进用户消费。与此同时,定制广告投放也是一种越来越流行的个性化服务,定制广告投放是指根据用户的兴趣爱好投放相应的广告[2]。最近的研究表明定制广告投放可以获得比普通广告投放更好的宣传效果[3]。
在个性化服务和定制广告投放业务中,用户的浏览记录、搜索兴趣、地理位置信息和人口统计信息等个人信息扮演着重要的角色。其中,用户的人口统计信息(如性别、年龄、收入和文化程度等)尤为重要。然而,人口统计信息是用户比较敏感的隐私信息,用户不愿意公开这类隐私属性,这类信息不易获取。
尽管如此,近年来很多学者通过分析用户的行为数据(如博客、照片、社交网站状态、心情评论等)获取用户的人口统计信息。文献[4]指出通过研究用户的书写和说话方式可以预测出用户的人口统计信息;文献[5]的研究表明通过分析博客内容可以预测博客作者的性别;文献[6]通过研究Twitter用户在Twitter上发表的内容来预知用户的性别。此外,还有一些学者通过分析用户的搜索历史记录和浏览历史记录等Internet行为数据,分析用户的人口统计信息。文献[7]研究不同性别和年龄的人搜索行为之间的差异性,并且发现搜索引擎用户的基础属性分布和美国的人口分布相符;文献[8]的另一项研究表明用户搜索的内容和用户的性别、年龄等是相关联的;文献[9]通过分析用户浏览网页的历史记录判别出用户的性别和年龄;文献[10]通过分析用户浏览网页的内容和关键字预测用户的性别和年龄。
随着移动互联网的发展,智能手机应用成了人们生活中必不可少的重要组成部分。但是由于用户的个体需求和兴趣的差异,每个用户智能手机上安装的应用有所差别。如,男性更偏好运动类的手机应用,而女性则比较喜欢时尚类的手机应用。即便对于相同的应用,不同的用户也会有不同的使用偏好。如,对于一个网络视频应用,成年人更倾向于观看时政新闻,而儿童则更倾向于观看娱乐节目。由于智能手机和用户是紧密相关的,分析手机的使用行为使得预测用户的人口统计信息成为可能,本文将尝试通过分析用户智能手机上应用的使用情况,进而预测用户的性别和年龄。
1 问题定义和数据说明本文旨在通过分析一定数量的人口统计信息已知的用户的智能手机应用情况,结合部分人口统计信息未知的用户的智能手机应用情况,对其他用户的人口统计信息进行预测。
本文着重关注用户的性别和年龄。用户的性别预测被定义为将用户分类为男性或者女性的一个二分类问题;用户的年龄预测被定义为一个多分类问题,分类类别如表 1所示。
本文的数据集是:国内一家网络运营商提供的近5万智能手机用户在2013年10月-2013年12月3个月期间使用智能手机应用产生的网络日志文件。当智能手机应用向Internet获取资源时,则产生一条日志,记录在日志文件中。数据集中一共有179954181条日志记录,每一条日志记录由用户的ID、应用名称和相应的网络资源组成。数据集中用户的性别和年龄分布如表 2所示。
对于上述日志文件,本文中采用正则表达式将相应的网络资源匹配到相应的主题(如,将德甲归类到运动\足球\欧洲足球\德甲)。每一条记录都映射到一个主题。本文将每个主题定义为用户的一个兴趣。通过匹配,最终本文将日志文件中所有的记录匹配到266个主题(兴趣)。
这样,本文中使用的数据集则可以定义为一个有权有向偶图$G = (V,E)$,V是顶点的集合,E是边的集合。顶点集V中的一个顶点代表某个用户或者某个用户的一项兴趣类别;边集E中的一条边代表某个用户对某个兴趣类别的偏好程度。进一步,顶点集V可划分为两个子集合$U = \{ {u_1},{u_2}, \cdots ,{u_m}\} $和$C = \{ {c_1},{c_2}, \cdots ,{c_n}\} $,其中子集U为用户集,子集C为用户的兴趣集。如果用邻接矩阵R表示有权有向图G,那么邻接矩阵R中的元素rij代表用户i对兴趣类别j的偏好程度。本文中取用户i对兴趣类别j的请求次数来评估用户对其的偏好程度。将用户的性别、年龄和邻接矩阵R相结合,可以统计出具有不同性别、年龄的用户兴趣分布,其分布如图 1所示。
性别和年龄相似的用户可能有相似的兴趣爱好,有相似兴趣爱好的用户也很可能具有相似的性别和年龄。根据该假设,若采用一种直接的方法,可以用协同过滤[11, 12]的方法预测用户的性别和年龄,但是因为数据(邻接矩阵R)的稀疏,而协同过滤对数据的稀疏性很敏感[13],如果直接采用协同过滤方法进行预测,会引入很多的噪声,对预测效果造成不良影响。
为了解决该问题,本文将采用奇异值分解(singular value decomposition)[14, 15, 16]技术对邻接矩阵R进行预处理。经过奇异值分解之后,可以得到相互正交的向量,避免原始数据(邻接矩阵R)行列向量之间的干扰,进而可以更好地挖掘数据间的隐性关系[14]。
2.2 方法步骤本文首先用余弦相似性计算用户之间的相似度,得到用户的相似性矩阵;然后利用SVD技术[14]分解用户的相似性矩阵,得到用户的隐性反馈矩阵;最后将隐性反馈矩阵作为特征向量输入高斯核的支持向量机[17]预测用户的性别和年龄。
根据邻接矩阵R,采用余弦相似性计算出用户(子集U中的元素)之间的相似性,计算公式为:
${\rm{sim}}({R_i},{R_j}) = \frac{{\sum\limits_{k = 1}^n {{R_{ik}}{R_{jk}}} }}{{\sqrt {\sum\limits_{k = 1}^n {R_{ik}^2\sum\limits_{k = 1}^n {R_{jk}^2} } } }}$ | (1) |
$\hat S = {\bf{P}} \times {{\bf{P}}^{\rm{T}}}$ | (2) |
${\widehat s_{ij}} = \sum\limits_k {{p_{ik}}{p_{jk}}} $ | (3) |
$C(p) = {\sum {\left( {{s_{ij}} - \sum\limits_{f = 1}^k {{p_{if}}{p_{jf}}} } \right)} ^2} + \lambda (||{p_i}|{|^2} + ||{p_j}|{|^2})$ | (4) |
$\left\{ \begin{array}{l} \frac{{\partial C(p)}}{{\partial {p_{if}}}} = - 2{p_{jf}}({s_{ij}} - \sum\limits_{f = 1}^k {{p_{if}}{p_{jf}}} ) + 2\lambda {p_{if}}\\ \frac{{\partial C(p)}}{{\partial {p_{jf}}}} = - 2{p_{if}}({s_{ij}} - \sum\limits_{f = 1}^k {{p_{if}}{p_{jf}}} ) + 2\lambda {p_{jf}} \end{array} \right.$ | (5) |
$\left\{ \begin{array}{l} {\rm{err}} = {s_{ij}} - \sum\limits_{f = 1}^k {{p_{if}}{p_{jf}}} \\ {p_{if}} = {p_{if}} + \alpha ({p_{jf}} \times {\rm{err}} - \lambda {p_{if}})\\ {p_{jf}} = {p_{jf}} + \alpha ({p_{if}} \times {\rm{err}} - \lambda {p_{jf}}) \end{array} \right.$ | (6) |
在学习完成之后可以得到用户的隐私反馈矩阵P,将用户隐私反馈矩阵P和用户的基础属性相结合,P作为特征矩阵,采用高斯核的SVM分类,对用户的性别和年龄进行预测。
3 实验结果 3.1 评价指标本文中采用准确率(Acc)、精确率(Prec)、召回率(Rec)和F1值[9]作为评价指标。准确率(Acc)定义为正确预测的用户数和实际用户的总人数的比值,精确率(Prec)定义为正确预测为某类的人数和预测为该类的人数的比值,召回率(Rec)定义为正确预测某类人数和该类实际人数的比值,F1值是精确率和召回率的权衡,计算公式为:
${F_1} = \frac{{2{\rm{Prec}} \times {\rm{Rec}}}}{{{\rm{Prec}} + {\rm{Rec}}}}$ | (7) |
根据本文提出的方法,首先初始化矩阵P。对矩阵P的初始化有多种方法,一般是将P用随机数填充[9]。在实验中,则是用和${\rm{sqrt}}(k)$成反比的高斯分布随机数初始化矩阵P。参数$\lambda 和\alpha $以最小化损失函数$C(p)$为目标,可通过交叉验证得出。本文通过反复实验得出$\alpha {\rm{ = }}0.01$,$\lambda = 0.001$,且$\alpha $在每一步学习之后自乘0.9衰减。
在SVD分解中,SVD的维度k是一个重要的参数,通过实验研究k对预测结果的影响。最小化损失函数$C(p)$,设定维度k从5~100逐步变化。对于每一个维度k,设定SVD迭代次数从1~150变化,进行反复迭代学习,得到每个维度下的最优迭代次数,从而得到隐私反馈矩阵P。以性别预测为例,SVD维度k对预测结果的影响效果如图 2所示。
从图 2可以看出,随着维度k的增加,预测结果的准确率和F1值都有所提升,当k值达到70时,得到一个较稳定的预测结果,准确率为75.79%和F1值为74.96%。在后面的分类实验中将P矩阵作为特征向量,采用高斯核的支持向量机分类方法分类预测用户的基础属性。对用户的性别和年龄分别训练分类模型,实验采用10倍交叉验证法,对性别和年龄进行预测。
用户的性别和年龄的预测结果如表 3所示。用户的年龄分类预测是一个五分类问题,预测结果达到准确率57.14%和F1值52.52%;对于用户的性别分类这样的二分类问题,预测效果更佳,达到准确率76.29%和F1值75.21%。
本文提出的预测方法可以根据移动用户智能手机应用的使用情况,预测用户性别、年龄等用户隐私属性。该预测方法主要包含3个步骤:1) 将智能手机用户的手机应用每条日志记录匹配相应的主题,从而得到一个关联用户和兴趣类型的邻接矩阵;2) 结合用户的兴趣偏好计算用户的相似相关性,得到用户的相关性矩阵,再采用SVD分解技术,分解用户的相关性矩阵以得到用户的隐性反馈矩阵;3) 将用户的隐性反馈矩阵作为用户的特征,采用高斯核的支持向量机分类器分别训练用户的性别和年龄的分类模型。基于运营商的现实数据,采用交叉验证的实验结果显示本文的方法对用户的性别、年龄预测能够取得很好的分类预测效果,对用户的性别的预测能够达到76.29%的准确率和75.21%的F1值,对用户的年龄预测能够达到准确率57.14%和52.52%的F1值。