一种基于社交网络的用户数据预测方法
技术领域
本发明涉及计算机技术领域及行为预测领域,特别是涉及一种基于社交网络和用户行为数据的行为预测方法。
背景技术
现代社会离不开社交网络,一些在线社交网络使人们的沟通变得更加便捷,同时也使得大量的用户信息编码在这些社交连接中。除了社交网络中包含的用户信息,用户自身也产生了一些历史数据,由于打卡软件的盛行,获取用户的数据也变得相对容易。这些数据包含了用户真实的移动轨迹。
预测人们未来会去的地点是一个经典难题,它对于智慧城市,智能交通有着重大的意义。社交网络以及用户自身打卡信息变得越来越容易收集,这对于解决人类行为预测提供了大量的数据,现有的一些行为预测算法能够在这些数据上获取很高的预测精度。然而现有的预测模型还存在以下缺陷:1.在用户的信息特别少,或者用户先后的两次行为之间隔的时间很久,那么容易导致模型无法有效的学习到用户特征。2.部分用户比较关注自身的隐私,因此很少在公开场合发表评论。3.一些方法尝试融合其它的用户信息,比如用户发表的评论,图片之类的,来提升模型的预测精度,然而由于没有统一的规范,很难应用到其它数据集上。以上诸多的问题使得预测人类移动行为变得困难,我们提出了这样一种方法,在原始采集的用户行为数据上,将用户的社交网络信息编码了进去,混合成一个新的数据集,新生成的数据集可以直接应用到现有模型上。在一些数据集上的实验结果显示,该方法能大幅的提升模型的预测精度。同时,该方法无需重复计算,针对一个数据集生成一次即可。
发明内容
为了弥补用户数据稀疏情况下,预测算法的失效,本发明提出了基于游走的朋友数据采样方法,按一定的概率从用户的朋友数据中采集用户的数据,从而扩充用户的数据量;将这些新生成的数据输入到现有的行为预测算法中去,使模型的预测精度大幅度提升。
本发明所采用的技术方案如下:
一种基于社交网络的用户行为预测方法,为了说明简单,我们这里先设定符号规则,针对社交网络中的个体用户,记为ego,而该用户的朋友记为alter,如果朋友不止一个,那么可以分别记为alter1,alter2,alter3…;
所述方法包括以下步骤,
S1:获取ego用户的行为数据以及其相对应的alters用户行为数据;
S2:按设计的规则构建用户行为影响网络;
S3:针对用户行为影响网络运行随机游走算法对用户数据进行采样;
S4:初始化序列预测模型;
S5:将采样得到的用户数据与用户自身的数据当成训练数据输入到序列预测模型中进行训练;
S6:将新采集到的用户数据输入到训练好的模型中,输出即为用户接下来要去的地点。
进一步,所述步骤S1包括以下步骤:
S1.1:采集ego用户的移动行为记录;
S1.2:采集alter用户列表及其移动行为记录;
S1.3:对ego数据和alter数据进行筛选,获取ego用户最早行为的时间ta和最晚行为的时间tb,去除alter数据在[ta,tb]之外的数据。
再进一步,所述步骤S2包括以下步骤:
S2.1:首先对于数据集中的所有地点进行自适应的DBSCAN聚类,参考[AutoEpsDBSCAN:DBSCAN with Eps Automatic for Large Dataset]:
S2.2:按以下规则构建用户行为影响网络:
2.2.1.一个ego用户和其所有的alter用户构建成一个网络,网络中的节点是用户去过的餐馆,对于ego用户来说,连边构建规则是前一次ego用户去过的餐馆节点指向后一次ego用户去过的餐馆节点,对于alter用户来说,也是根据前一次alter用户去过的餐馆节点指向后一次alter用户去过的餐馆节点,对于alter用户和ego用户之间的连边,按以下规则建立:记alter用户去过一家餐馆A的时刻为Ta,ego用户去过一家餐馆B的时刻为Tb,若Tb-Ta<t,其中t是一个可调参数,那么餐馆A和餐馆B之间建立连边;
2.2.2.网络中连边的权重按以下规则建立,ego用户数据上的连边以及alter用户数据上的连边,权重都为1,而alter用户和ego用户间的连边,权重按以下公式计算:
其中
C
alter和C
ego分别表示alter节点和ego节点在经过S2.1处理之后,各自所属的类别,/>
是前后两节点的时间差,Acc
max是人类预测极限,它由以下公式计算得到:
h(a|b)=H(Accmax)+(1-Accmax)log2(Lb-1) (5)
H(Accmax)=-Accmax log2(Accmax)-(1-Accmax)log2(1-Accmax) (6)
alter用户和ego用户的交叉熵h(a|b)在一定程度上反映了alter用户中的ego用户信息含量;熵值越低,表示alter用户和ego用户的行为越相似,其中La表示ego用户的数据长度,Lb表示alter用户的数据长度;人类预测极限Accmax是依据法诺不等式推导得到的,它反映了根据已知信息量,预测模型能达到的最高预测精度,这里用它来度量ego用户和alter用户之间的相似度,相似度越大,表示alter转移到ego用户的概率越大;
表示两次行为之间的距离特征,在一定程度上来说先后两次行为间隔的距离越大,它们之间产生的影响越低,转移概率就越低;α和β是一组可调参数,由于各个数据集侧重不同,有些数据集的信息量主要分布在朋友数据里,那么此时β的值就大一点,有的数据集可能考虑时间间隔,那么此时α就大一点,有的数据集考虑地理间隔,那么此时α和β的值都要比较小。
所述步骤S3包括以下步骤:
S3.1:针对ego用户的采样是从其最后一个行为节点出发的,根据将连边的权重值作为转移概率值,逆向的进行采样,这里是希望能采集影响到当前节点的历史节点,如果采样到的节点来自ego数据,那么采样继续进行下去,如果采样到的节点来自alter数据,那么在采样了一定的深度dp之后,使节点转移到时间上最相近的ego节点上,使采样继续进行下去:
S3.2:在每个ego上运行上述随机游走算法的次数根据ego用户包含的alter用户的数量而定,同时采样次数不能超过指定的最大次数。
所述步骤S4的过程为:对行为预测模型(比如RNN)的权重参数进行初始化;
所述步骤S5的过程为:将采样得到的数据当成ego用户的数据输入到行为预测模型中进行训练。
所述步骤S6的过程为:模型训练好之后,在获取用户的数据输入到模型中,即可获知用户接下来会去的地点。
本发明所述方法具有如下有益效果:
(1)本发明所述的方法具有极大的应用前景,预测用户接下来会去哪个地点应用非常广泛,如果能准确的预测用户去的地点,那么在那些地点放上用户感兴趣的商品,销量就会大幅度的提升。
(2)本发明所述的方法可以应用到现有的大部分预测模型中去,拓展性极佳,并且预测性能提升明显,对于一些稀疏数据集,该方法甚至能将预测精度提升到10倍以上。
(3)本发明所述的方法是模块化封装的,对于后续的模型没有影响。
附图说明
图1是用户行为影响网络的示意图,黄色用户是ego用户,绿色用户是alter用户,实际的连边为黑色箭头,采样时的路径是红色箭头。
图2是RNN神经网络的训练示意图。
图3是一种基于社交网络的用户数据扩充方法的流程图。
具体实施方式
下面结合附图对本发明作进一步描述。
参照图1~图3,一种基于社交网络的用户数据预测方法,包括以下步骤:
S1:获取ego用户的行为数据以及其相对应的alters用户行为数据;
S2:按设计的规则构建用户行为影响网络;
S3:针对用户行为影响网络运行随机游走算法对用户数据进行采样;
S4:初始化序列预测模型;
S5:将采样得到的用户数据与用户自身的数据当成训练数据输入到序列预测模型中进行训练;
S6:将新采集到的用户数据输入到训练好的模型中,输出即为用户接下来要去的地点。
本实例对Yelp数据集的用户评论数据进行学习,预测用户接下来会去的地点,使用的预测模型是RNN,所述方法包括以下步骤:
S1:获取ego用户的行为数据以及其相对应的alters用户行为数据;
首先对于每个用户的朋友数据进行筛选,获取ego用户的数据时间范围[ta,tb],删除alter数据在[ta,tb]之外的数据。然后重新统计alter用户数据量,保留那些数据量大于5条的alter。删除数据集中alter用户数量少于5个的ego用户,注意这里有部分被删除的ego用户同时是别的ego用户的alter用户,所以这点要考虑进去。然后再删除用户数据少于10条的ego用户。
S2:按设计的规则构建用户行为影响网络;
S2.1:经过以上筛选获取到的数据集,找出数据集中所有用户去过的地点,运行自适应的DBSCAN聚类算法,得到每个地点所属的区域。
S2.2:一个ego用户和其所有的alter用户构建成一个网络。网络中的节点是用户去过的餐馆。对于ego用户来说,连边构建规则是前一次ego用户去过的餐馆节点指向后一次ego用户去过的餐馆节点。对于alter用户来说,也是根据前一次alter用户去过的餐馆节点指向后一次alter用户去过的餐馆节点。对于alter用户和ego用户之间的连边,按以下规则建立:记alter用户去过一家餐馆A的时刻为Ta,ego用户去过一家餐馆B的时刻为Tb,若Tb-Ta<t,其中t是一个可调参数,那么餐馆A和餐馆B之间建立连边。网络中连边的权重按以下规则建立,ego用户数据上的连边以及alter用户数据上的连边,权重都为1。而alter用户和ego用户间的连边,权重按公式(1)计算,α和β是一组可调参数,先调整α的值然后再调整β的值。
S3:针对用户行为影响网络运行随机游走算法对用户数据进行采样:
S3.1:针对ego用户的采样是从其最后一个行为节点出发的,根据将连边的权重值作为转移概率值,逆向的进行采样。如果采样到的节点来自ego数据,那么采样继续进行下去,如果采样到的节点来自alter数据,那么在采样了一定的深度dp之后,使节点转移到时间上最相近的ego节点上,使采样继续进行下去。
S3.2:在每个ego上运行上述随机游走算法的次数根据ego用户包含的alter用户的数量而定,采样次数不能超过指定的最大次数。
S4:初始化序列预测模型:
用常用的初始化函数随机初始化序列预测模型的权重;
S5:将采样得到的用户数据与用户自身的数据当成训练数据输入到序列预测模型中进行训练:
模型隐藏层的计算公式如下所示:
其中
表示用户u在时间t时的状态,/>
表示用户在时间t访问地点的向量表征,C表示序列信息的前一个状态,M表示转移矩阵,/>
输出公式如下:
其中p
u表示用户u的表征向量,代表该用户的兴趣和活动范围;
表示用户在时间t时的兴趣范围;
S6:将新采集到的用户数据输入到训练好的模型中,输出即为用户接下来要去的地点:
将测试集部分的用户数据输入到训练好的模型中,输出得到用户接下来会去各地点的概率值。实验结果如表1,表1为RNN模型预测精度对比:
表1。
其中:
R(u)表示根据用户u在训练集上的行为给用户做出的Top-10的预测列表,
T(u)表示系统向用户u推荐地点后,用户实际去的地点。
walk行表示本专利提出的方法的效果。