APP下载

融合用户兴趣表征与注意力机制的推荐算法

2021-03-23孙静宇

计算机工程与设计 2021年3期
关键词:示例数据包向量

孙 静,孙静宇,李 璨,魏 东

(太原理工大学 软件学院,山西 太原 030024)

0 引 言

个性化推荐算法[1]一方面为用户在海量数据中找到自己所需信息起到了重要作用,另一方面也能够有效地为信息生产者寻找到符合信息定位的目标人群。算法关键在于挖掘用户兴趣。协同过滤推荐[2]是目前应用最广的推荐算法,通过挖掘用户和项目之间的关系,为用户提供其感兴趣的具体项目。传统推荐方法大多都是基于用户的显性反馈行为,而实际情况中多数用户没有提供显性反馈的上网习惯。随着研究的深入,研究者们发现数据量较大的用户隐性行为包含着更多反映用户喜好的深层信息,用户行为日志[3]可以看作是最有代表性的用户隐性行为。用户日志中的行为记录和用户所访问项目间的相关性对准确预测用户兴趣有重要意义。因此,分析用户隐性行为发掘用户潜在兴趣成为目前推荐算法的一个研究热点。本文提出的算法模型通过对用户行为日志的分析,对原始数据进行用户兴趣表征,同时融入时间注意力机制,使用一种新的深度学习模型挖掘并预测用户兴趣,减少了对用户可能感兴趣的具体项目的关注度,更加侧重于挖掘用户兴趣标签、定位目标用户。将建立起来的用户-兴趣模型与用户协同过滤算法结合产生推荐,从而为精准定位目标用户、实现项目精准营销提供一种新的思路。

1 相关工作

智能设备的发展和普及使用户上网日志数据量急剧增大。推荐系统随之面临新的机遇和挑战——在数据爆炸的时代下如何准确地提取和预测用户兴趣偏好,从而实现精准推荐。

推荐算法[4,5]通常基于用户历史行为记录并通过挖掘用户或项目之间的相似性关系主动帮助用户发现其感兴趣的项目。而传统的推荐算法采用的浅层模型无法学习到用户和项目的深层次特征。深度学习方法[6]能够有效处理涉及海量高维数据并抽象出隐含特征。Roy S等[7]在推荐系统中利用视觉CLiMF方法学习视频潜在因素有效缓解了常见的视频冷启动问题;He Ming等[8]构建了一种名为协同附加变分自动编码器的新型深度学习模型,有效的从辅助信息中无监督地学习潜在表示。众所周知,深度神经网络取得优异表现在于其独特的网络结构——复杂的多层网络将低层特征组合抽象为高层语义特征。也正是如此,深度神经网络受到计算能力和参数众多的限制。

除了深度学习之外,通过将多个学习者结合在一起的集合方法同样强大[9,10]。Breiman分别于1996年和2001年提出了Bagging[11]和随机森林[12]两种集成方法。一个好的集合方法总是由一些具有高度准确性和多样性的个体学习者构成。Kontschieder P等[13]研究显示深度神经网络特征促进的集合方法将比简单地使用DNN或集合方法表现更好。Zhou和Feng[14]提出了一种不同的深度学习方法,称为gcForest(多粒度级联森林),它生成一个具有级联框架的深度森林集合,并且能够进行表征学习。

在实际情况中用户不可能对自己的上网日志都产生标记行为,因此,训练模型的预测准确率会受到一定影响。多示例学习[15]中,训练集由有标记的数据包(Bag)组成,每个包由若干个没有标记的示例(Instance)构成。唐俊等[16]利用多示例学习方法在用户反馈不明确的情况下有效地解决了手游道具推荐问题。但对于客户端用户日志数据,用户访问链接大多没有显示实质文本内容,因此基于词频的表示方法有一定的局限性。

本文改变用户项目表征为用户兴趣向量表征,在此基础上,建立一种改进的基于集成随机森林的多粒度扫描深度森林模型,同时利用用户行为信息和用户对项目的停留时间作为模型的输入,并将其应用于刻画用户兴趣偏好,提高兴趣预测准确率,结合基于用户的协同过滤推荐算法以提升推荐效果。

2 用户兴趣向量表征

传统的项目表征通常是将不同的项目以二进制编码的方式进行数值转换。这种把项目转化为由0和1组成的数字序列的直译式表征方法显然不完全适合针对用户上网行为的兴趣偏好表征。本文所提算法将包与示例的概念引入到对用户上网日志的表征,将用户兴趣的预测看作多示例学习问题。由此,本文提出采用概念向量表示算法 (concept vector representation,CVR)来处理模型的原始数据集,得到用户兴趣向量表征作为训练模型的输入。

2.1 概念向量表示算法

概念向量表示算法(CVR)是一种基于退化策略的多示例学习算法。核心思想是通过改变数据包的表现形式,将多示例数据集转化为单示例数据集从而进行求解。CVR算法首先将原始数据集整理成由包组成的训练集 {(B1,Y1),…,(Bn,Yn)},(Bi,Yi) 表示数据包Bi对应的标签为Yi,其中,Bi={x1,x2,…,xm},即数据包Bi由m个示例构成。按照以下步骤改变包的表征方式:

步骤1 使用聚类方法把所有示例划分为d簇,这里不考虑示例的所属数据包。划分之后结果用Gd表示 (d=1,2,3,…)。

步骤2 通过式(1)把包的示例量化到d个簇,获取包的初始化关系模式RP(relation-pattern),其中,f=tf(g,Bi) 为计算数据包Bi中属于簇g的示例个数

PBi={(g,f)|g∈G,f=tf(g,Bi)}

(1)

步骤3 合并具有相同簇集合的初始化关系模式RP,如式(2)所示

RPi={(g,Pi)|g∈G,Pi=Bx1⊕Bx2⊕…⊕Bxj}

(2)

式中:x1,x2,…,xj∈[1,n],合成运算符⊕连接的数据包的初始化关系模式RP拥有相同的簇集合。此时,数据包的总数为n,Pi合并的拥有相同簇集合包的个数为Pnum(Bx),即合成运算符⊕连接的数据包个数为Pnum(Bx),并由式(3)得到Pi的支持度

(3)

步骤4 将合并后的关系模式RP表示为标准形式,如式(4)所示

β(Pi)={(G1,ω1),(G2,ω2),…,(Gd,ωd)}

(4)

式中:Pi∈RP,ωd表示在关系模式Pi中属于簇Gd的示例占该模式中总示例个数的比重,计算如式(5)所示

(5)

式中:fd为关系模式RP合并后的Pi中属于簇Gd的示例个数;

步骤5 计算每个簇在数据集中的重要性,如式(6)所示

(6)

步骤6 把包表示成概念向量形式,如式(7)所示

Bagi=[N1×prβ(G1),N2×prβ(G2),…,Nd×prβ(Gd)]

(7)

步骤7 利用整理后的训练集训练学习器。

通过概念向量表示算法得到项目的概念向量表征,简化了数据集表示形式,多示例数据集被转化成单示例数据集。之后将其作为训练集训练学习器。

2.2 用户兴趣向量表征

本文提出利用CVR算法将用户日志数据进行向量表征。一般每个用户行为日志被表示为Sessioni={x1,x2,…,xn}。 本文将用户日志数据整理为多示例表示UserBagi=[Item1,Item2…,Itemn],把每一个用户行为日志看作一个数据包,该用户行为日志中访问的项目则为数据包中的示例,用户日志中每个用户都会访问多个项目,一个数据包中就有多个示例。模型最终得到的是包的标签,也就是用户的兴趣标签。

首先将所有示例聚类为d个簇,这里将d的数量设定为5,每个簇看作是相似项目所代表的一类兴趣,表1是按照式(1)给出的一个量化后的例子。

表1 用户数据包示例量化到5个兴趣簇上的 初始化RP模式

表1中的数字表示某用户数据包中属于某个兴趣簇的项目示例个数。表中的每一行都可以被看作用户数据包的初始化关系模式RP。

接着利用式(2),将表1的初始化关系模式RP合并,同时按照式(3)计算出每个合并R模式的支持度,合成运算后的结果见表2。

表2 合并初始化关系模式RP

其中,P1=UserBag1⊕UserBag2,支持度为2/5,因为P1由2个初始化R模式合并运算而成;同理,P2=UserBag3⊕UserBag4,支持度为2/5;P3=UserBag5,支持度为1/5。

至此,整个用户数据集被表示成由RP模式构成的集合。再根据式(4)和式(5)获取合并后的RP模式的标准化形式,表3给出了表2合并初始化RP模式后的标准化形式。

然后利用概率函数根据式(6)计算每个簇的重要性,也就是计算出每类兴趣在整个数据集中的重要程度。计算表3中兴趣簇G1的重要性prβ(G1)=3/7×2/5+2/3×1/5,同理算出每簇的重要性见表4。

表3 RP模式的标准化形式

表4 每个(兴趣)簇的重要性

3 深度森林模型及优化

深度森林gcForest模型如图1所示。具有逐层处理、模型内特征转换和模型复杂度高的深度学习本质,其特点在于以集成方式对特征进行逐层转换。但该模型在利用随机森林提取更高维特征时,为所选特征分配相同权重。本文对gcForest模型的两部分结构分别改进优化:①引入停留时间注意力机制,将其与向量表征共同作为模型输入;②将簇重要性作为特征权重,对gcForest模型的两部分结构分别进行优化。

3.1 传统深度森林模型

图1 深度森林模型

传统深度森林模型主要包括两部分:多粒度扫描和级联森林。多粒度扫描结构能够有效地处理特征关系,因此它可以作为特征转换部分。级联森林结构提供了一种深度神经网络中逐层处理的替代方法,以低成本学习高维度表示,提取更多特征并同时输出最终预测结果。

多粒度扫描结构通过使用滑动窗口来扫描原始特征,并经过两种集成随机森林实现特征转换。M维特征向量经过N维窗口滑动扫描产生 (M-N+1) 个N维实例,每个实例通过随机森林和完全随机森林两种不同的集成器提取到对应的d维类向量,最终联结成2×(M-N+1)×d维的增强特征向量。如图2所示,100维的输入特征经10维的滑动窗口扫描所产生91个10维的实例通过两种森林训练,分别提取到对应的91个5维类向量,最终联结成2×(100-10+1)×5=910维的增强特征向量。

图2 多粒度扫描结构

滑动窗口维度N取不同的值体现了多个不同的扫描粒度。可将多粒度扫描得到的特征向量联结成更大维度的增强特征向量,作为级联森林的输入特征。

模型的级联森林结构如图3所示 (d=5),将多粒度扫描提取的2×(M-N+1)×d维增强特征向量作为多层级联森林第一层的输入特征,经过森林模型得到4个d维类向量,相当于得到了4×d个扩充特征。这里使用两个随机森林和两个完全随机森林,这两种不同的集成决策树,在保证准确率的同时使模型具有高度的多样性。将首层输入特征与类向量特征联结,重新组成的2×(M-N+1)×5+4×d维新特征向量作为第二层的森林模型的输入特征。

图3 级联森林结构

以此类推,每一层森林模型输出的4个d维类向量特征与2×(M-N+1)×d维首层输入特征联结,作为下一层的输入。在最后一层,将4个d维类向量取均值(或最大),得出可能性最大的类。

3.2 深度森林模型优化

深度森林模型受深度神经网络的启发,在处理特征关系时,采用基于滑动窗口的多粒度扫描策略,通过扫描原始输入数据提取局部特征,将生成的一系列局部低维特征向量训练转化为类分布向量,但考虑到所属类数据的不平衡性,森林的决策树会倾向于根据大多数实例来强调类;另外,级联森林结构试图通过在输入监督下组合集成决策树的数量来直接学习类分布特征,然而在标准深度森林模型中,多层之间的表示学习过程并没有考虑特征重要性对预测结果的影响,这可能导致整体预测性能对每个森林中的决策树的数量敏感。

本文对深度森林模型进行优化:

(1)融合停留时间注意力机制。考虑到可以将用户在浏览过程中对不同项目的驻留时间作为衡量用户对该项目喜爱程度的重要指标。通常,用户驻留时间越长,感兴趣程度越高。因此将用户的驻留时间作为注意力机制的权重来深化用户的兴趣程度,具体做法为计算每个用户数据包中各兴趣簇所含项目示例的用户驻留时间在该数据包所有示例用户驻留时间总和的占比,并将所得比重作为该兴趣簇的注意力权重。对于每个用户行为日志Sessioni={x1,x2,…,xn},其对应点击时间为ti={t1,t2,…,tn},停留时间为Δtn-1=tn-tn-1

ΔTi={Δt1,…,Δtn-1,max(Δt)}

(8)

根据学者提出的最后一个项目在序列化推荐算法中的重要性,将xn停留时间设置为ΔTi中的最大停留时间max(Δt)。 时间注意力机制的权重向量具体由式(9)和式(10)计算可得

(9)

(10)

(2)引入特征度量权重。在多粒度扫描结构和级联森林结构中引入簇重要性prβ(G)作为权重来提升预测准确率。簇重要性在本文第2章根据用户兴趣向量表征计算可得。整体数据集经过聚类得到簇,每个簇都是一类相似项目的集合,因此可以代表用户的兴趣,即兴趣簇。经过用户向量表征得到的每个用户数据包中的簇重要性,表示该用户所访问的项目所属兴趣的比例权重,即用户具有相同兴趣的概率。因此,在图2和图3中,将经过随机森林得到的类分布向量与簇重要性权重结合得到增强类分布向量。

优化后的多粒度扫描结构如图4所示,原始特征与驻留时间融合作为输入,并将训练得到的类向量实例分别与簇重要性权重相乘之后联结成高维特征,作为级联森林结构的输入特征。优化后的级联森林结构如图5所示,将簇重要性作为权重,与每一层森林训练输出类分布向量结合进一步得到增强类向量,并联结开始输入特征作为下一级联层的输入,层层传递经过N层级联得到最终预测。

图4 改进的多粒度扫描结构

图5 改进的级联森林结构

4 实验结果与分析

实验使用真实的运营商用户日志数据和RecSys Challenge2015公开数据集作为验证数据,分别针对用户兴趣向量表征和改进深度森林模型对用户兴趣预测准确率的影响进行多次实验,并验证了本文算法对用户协同过滤推荐的有效性。为避免实验结果的偶然性,采用十折交叉验证,将实验收集的真实数据集分为训练子集和验证子集,10次结果的均值作为对算法精度的估计。

实验环境:处理器Intel(R) Core(TM) i5-8250U CPU @ 1.60 GHz 1.80 GHz;内存8.00 G;Windows 10专业版64位操作系统;编程环境Python3.1。

4.1 数据集

运营商用户日志数据集(数据集1)是北京市电信运营商2018年10月10日部分用户的DPI日志,该数据集共有1436万多条用户上网日志,12万多个项目信息。RecSys Challenge2015公开数据集(数据集2)共包含某电商网站924万多条用户行为日志、5万多个项目信息。在使用模型之前按照标准数据集的格式(见表5)提取所需字段并整理。

表5 数据集字段

4.2 评价指标

本实验使用正确率(Accuracy)和误差率(Error)作为评价用户兴趣向量表征和改进深度森林模型对用户兴趣预测影响的指标,使用精确率(Precision)、召回率(Recall)和F1值作为评价本文算法对基于用户的协同过滤推荐算法有效性的指标。

正确率(Accuracy)和误差率(Error)的计算公式如式(11)和式(12)所示。TP为样本正例被正确预测的数量,TN为样本负例被正确预测的数量,FP为样本负例被错误预测的数量,FN为样本正例被错误预测的数量,ALL为样本总数

(11)

(12)

精确率(Precision)和召回率(Recall)计算公式可参见文献[17]实验部分的评估指标,F1值计算公式如式(13)所示

(13)

4.3 实验与评价

(1)用户兴趣向量表征验证扩展实验

本文将表征过后的数据经过深度森林预测出用户兴趣,建立用户-兴趣模型之后再结合基于用户的协同过滤算法(User-CF)计算推荐结果。根据本文第2章介绍,在进行表征之前首先要对项目进行聚类,设置不同的k值会产生不同数量的兴趣簇。本部分实验主要验证不同k值对推荐准确率的影响。本实验设定k值范围为2-150,两个数据集分别计算准确率,如图6和图7所示。

图6 数据集1上不同k值下两种推荐算法的准确率

图7 数据集2上不同k值下两种推荐算法的准确率

从图6可以看出,随着k值增加,使用K-means聚类的用户协同过滤算法推荐准确率较传统的用户协同过滤算法均有所提升;k值在100附近时,数据集1准确率提升了0.9%,数据集2准确率提升了1.05%;随着k值继续增加,准确率有些回落,这是由于聚类个数增加,兴趣数增加,但有些类别个数较少,导致兴趣预测不准确,进而影响整体推荐效果。因此本文设置k=100为最优聚类数。

(2)用户兴趣向量表征验证

在标准gcForest模型基础上,将用户兴趣向量表征与随机表征和二进制One-hot表征进行对比,比较3种方法对用户兴趣预测结果的影响。实验使用K-means聚类,这里取k=100。实验结果见表6,使用用户兴趣向量表征较另两种表征方式而言,预测准确率有所提升。One-hot表征采用的二进制编码形式具有一定的随机性,因此与随机表征效果相差不大;本文表征方式将注意力集中于用户兴趣,因此预测结果提升明显。

(3)优化的深度森林模型验证

为分别验证优化部分对用户兴趣预测的有效性,将标准深度森林模型gcForest与本文改进模型进行比较,加入簇重要性权重的深度森林模型记为Cluster-gcForest,融入

表6 用户兴趣向量表征对预测结果的影响

停留时间注意力机制的深度森林模型记为ATT-gcForest。同时与作为模型基础的随机森林(random forest,RF)算法进行比较。为消除干扰,本部分实验均选择二进制编码表征。

实验结果见表7,Cluster-gcForest和ATT-gcForest明显优于随机森林,随机森林是集成的决策树,而gcForest模型又都是随机森林算法的集成,包含了两种不同的森林模型(随机森林和完全随机森林),体现了集成子模型的多样性,因此效果更好。而且本文在标准gcForest的基础上,引入簇重要性作为特征权重,在多粒度扫描结构和级联森林结构中与预测类向量相结合,保证了模型在训练数据时将注意力偏向于概率较大的用户兴趣簇;另一方面,在模型输入中引入时间注意力机制,将停留时间作为输入选择权重,从大量数据中筛选出一部分有价值的信息。从而相较于gcForest模型,本文改进模型对兴趣预测准确度更高。

表7 改进的深度森林对预测结果的影响

(4)模型推荐精度对比

本实验比较了本文优化模型Cluster-ATT-gcForest和RF、CNN、gcForest模型对推荐效果的影响,实验结果见表8,使用精确率、召回率和F1值进行评价。实验分别使用上述几个模型预测用户兴趣,将建立起来的用户-兴趣标签结合用户协同过滤算法实现推荐。在计算用户相似度时,使用欧氏距离作为距离函数。

从表8和表9结果可直观看到各模型结合用户协同过滤算法的推荐效果,CNN模型与传统随机森林模型相比,推荐效果明显提升。gcForest模型吸收了集成学习和深度学习两种方法的优势,在保证与CNN相当或略有提升的结果的前提下,自动确定训练层数,从而实现模型复杂度自适应调节,提升算法效率。同时,可以看出经过用户兴趣向量表征和引入时间注意力机制的改进模型Cluster-ATT-gcForest性能表现更好。兴趣向量表征将算法注意力集中于用户兴趣,有效提高了用户-兴趣模型预测准确率;将驻留时间与模型输入融合使多维特征被选择时将目光聚集在大概率特征上,从而体现被选择特征的重要程度;使用簇重要性作为深度森林权重使随机森林中的决策树更倾向于选择概率大的兴趣簇作为类分布向量。因此Cluster-ATT-gcForest实验效果好于gcForest。

表8 在数据集1上本文方法与RF/CNN/gcForest 效果对比

表9 在数据集2上本文方法与RF/CNN/gcForest 效果对比

5 结束语

本文针对用户上网日志中行为数据对兴趣偏好的体现,提出了一种融合用户兴趣表征与注意力机制的预测推荐算法。该算法通过用户兴趣向量表征将用户对项目的访问表示转化为用户所属兴趣概率;同时引入驻留时间和簇重要性权重对gcForest模型进行改进和优化,捕获重点兴趣特征;并将建立起来的用户-兴趣模型与基于用户的协同过滤推荐算法结合。在真实数据集和公开数据集上的实验结果表明,用户兴趣向量表征和优化gcForest模型有效提升了兴趣预测准确率,验证了本文算法的有效性,同时说明了本文算法具有一定的实用性和普适性。

由于数据源局限,本文模型未考虑到用户信息多样性。将不同数据源信息融合全面构建用户兴趣模型是未来研究工作的方向;同时,组合异构网络从而构建混合推荐模型具有潜在的研究价值。

猜你喜欢

示例数据包向量
向量的分解
基于Jpcap的网络数据包的监听与分析
聚焦“向量与三角”创新题
2019年高考上海卷作文示例
常见单位符号大小写混淆示例
常见单位符号大小写混淆示例
SmartSniff
“全等三角形”错解示例
向量垂直在解析几何中的应用
向量五种“变身” 玩转圆锥曲线