1.基于相关矩阵和词向量模型的兴趣点推荐方法,其特征在于该方法的具体步骤是:步骤(1)输入用户签到数据和兴趣点经纬度数据,其中签到数据包括用户的ID、兴趣点ID以及签到的时间;兴趣点经纬度数据包括兴趣点ID、经度和纬度;
步骤(2)读取签到数据,统计用户对各个兴趣点的访问次数,构建用户‑兴趣点访问频次矩阵F;
读取兴趣点经纬度数据,构建兴趣点‑经纬度字典L,形式为{兴趣点ID:(经度,纬度)};
计算各用户最常访问的兴趣点HALu=argmax(fu),其中fu表示用户u访问各兴趣点的频次,以此构造用户最常访问兴趣点字典HAL,形式为{用户ID:兴趣点ID};
步骤(3)设置距离阈值α和γ,其中α表示用户高活跃区域半径,γ表示兴趣点的邻居半径,初始化用户‑兴趣点相关矩阵M,将矩阵各值赋为0;
步骤(4)构建用户‑兴趣点相关矩阵M:对于每个用户u,计算该用户访问过的所有兴趣点的频次的累加和∑fu;遍历所有兴趣点p,如果该兴趣点p未被用户u访问过,则通过查询兴趣点经纬度字典L得到该用户最常访问的兴趣点字典HALu与兴趣点p的经度和纬度,并据此计算最常访问的兴趣点HALu与兴趣点p两者之间的距离,如果距离大于α,则继续遍历下一个兴趣点;如果距离等于α,则初始化用户u在兴趣点p周围的访问频次 遍历用户u u
u访问过的所有兴趣点p ,如果兴趣点p与p之间的距离小于阈值γ,则通过访问频次矩阵Fu
查询用户u对兴趣点p的访问频次F[u,p]并累加至 否则遍历下一兴趣点;在遍历完成用户u访问过所有兴趣点之后,计算用户u跟兴趣点p的相关系数 遍历完成之后用户‑兴趣点相关矩阵M构造完成;fu表示查询用户u对所有兴趣点的访问频次;
步骤(5)创建一个用户访问序列文件,其中每一行为某个用户的兴趣点访问序列,其中用户的ID排在行首,该用户所有访问过的兴趣点ID按访问先后顺序排在用户的ID之后,用户ID与兴趣点ID之间使用空格分隔;
步骤(6)构建词向量训练模型,类比自然语言处理中训练词向量的Skip‑gram模型,将每个用户的兴趣点访问序列作为一个“句子”,每个用户的兴趣点访问序列中的各个兴趣点作为“单词”,同时结合用户ID信息,得出进行模型训练的目标函数:其中U表示用户集合,si为用户ui访问的兴趣点序列,S表示所有用户访问兴趣点序列的集合,c表示上下文窗口大小;
概率函数
其中 为融合函数,vi表示用户ui输入向量,|P|表示兴趣点总数,lj表示兴趣点pj输入向量,l′j表示兴趣点pj输出向量;
步骤(7)进行模型训练:首先设置模型参数,分别设置每批训练的数据量batch_size,训练的用户向量和兴趣点向量的维度embedding_dim,学习率learning_rate,负样本采样个数num_samples,最大迭代轮数epochs,兴趣点上下文窗口大小context_size;其次采用负采样方法进行训练,将损失函数定义为:其中Pneg表示m个负样本集合,为负样本输入向量, 为负样本输出向量,σ(·)为sigmoid函数,之后开始迭代训练;
步骤(8)根据步骤(4)训练得出的用户‑兴趣点相关矩阵M,以及词向量模型输出的用户ui的输入向量vi、兴趣点pj的输入向量lj,从而计算出用户对各兴趣点的偏好,输出推荐结果,计算公式为Preferenceup=(vi·lj)×M[ui,pj]。