基于内存计算框架、融合社交环境及时空数据的位置推荐方法与流程

文档序号:12465330阅读:141来源:国知局
基于内存计算框架、融合社交环境及时空数据的位置推荐方法与流程

本发明涉及计算机领域,具体涉及一种基于内存计算框架、融合社交环境及时空数据的位置推荐方法。



背景技术:

随着城市快速发展,餐厅、影院等线下服务地点日益增加,极大丰富了人们的生活体验。然而琳琅满目的位置地点也增加了用户的选择成本,因此一种解决信息过载并改善用户体验的有效方法即提供个性化位置推荐方法被提出。

由于位置社交网络包含大量的位置,基于位置服务的推荐技术可以使用户更容易找到符合自己偏好的位置。因此,位置推荐有利于人们探索城市中的新地带,提高城市生活质量。特别是当用户身处在一个陌生环境的时候。也可以利用位置推荐为实体商店发现潜在客户,并为这些客户提供相关广告,促使客户访问商店,从而提高商家的利润。位置推荐还可以为用户推荐符合个人偏好的旅行路线,帮助用户避免信息过载、节约行程安排时间,以及提高旅行意愿,推动旅游业的发展。因为位置推荐能够过滤无用信息,也能提高服务商的利润,为大众、商家和旅行者带来便利和利益,所以,在位置社交网络中,为用户进行位置推荐是尤为重要的。



技术实现要素:

为了克服上述现有技术中存在的缺陷,本发明的目的是提供一种基于内存计算框架、融合社交环境及时空数据的位置推荐方法,该方法计算速度快,准确性高。

为了实现本发明的上述目的,本发明提供了一种基于内存计算框架、融合社交环境及时空数据的位置推荐方法,包括以下步骤:

第一步,搭建形成包含master主机和slave从机的集群,将用户签到表数据导入master主机中,由master主机进行分割,并将数据的预处理任务分派给slave从机,同时追踪slave从机上的分布式计算,收集slave从机的反馈信息进行汇总统计,得到用户签到矩阵CIt

第二步,从社交网络中去获取用户的社交好友关系数据,并对用户签到矩阵CIt和用户的社交好友关系数据进行整理,得到用户之间的社交关系矩阵SN;

第三步,对社交环境进行分析,具体包括建立基于时间状态的社交圈、利用用户签到矩阵CIt和签到日志分析和量化个人偏好、个人偏好相似度、用户之间的社交信任以及社交亲近度;

第四步,对签到矩阵进行拆分并分解,得到用户隐特征矩阵Ut和位置隐特征矩阵L,并构建推荐模型目标函数得到用户隐特征矩阵Ut和位置隐特征矩阵L,将用户隐特征矩阵Ut和位置隐特征矩阵L进行合并预测用户在每个时间状态t下的签到偏好矩阵采用投票方案将不同时间状态下的预测矩阵合并为统一的位置偏好预测矩阵

第五步,将得到的位置偏好预测矩阵的数据提取,转换成可视化的形式,输出分析结果。

本发明利用Apache Spark内存计算框架对庞大的用户历史签到历史记录数据进行处理以及利用Spark上的矩阵库进行矩阵运算,提高计算效率,提升算法在处理海量数据情况下的速度和容错能力,提高了给用户推荐位置的准确性和快速性。

进一步的,所述第二步包括以下几个步骤:

B1、整理用户签到表数据,数据包含用户社交关系、用户的签到的时空数据、用户签到的主题数据,得到用户签到集合U={u1,u2,...,un}和位置集合L={l1,l2,...,lm},u表示用户,n代表用户的ID,l表示签到位置,m代表签到位置的ID,;

B2、对用户签到表数据统计,得出用户和位置之间关联关系,用Lu表示用户u历史签到过的位置集合,使用地理坐标<经度,纬度>对位置进行地理编码;

B3、对用户签到数据做预处理:统计用户在各位置的签到频率,记为用户-位置签到频率矩阵用户-位置签到频率矩阵中的元素cu,i代表用户u在位置i上的签到次数;

B4、统计用户社交关系表,得出用户之间是否存在好友关系,用户之间的社交关系用矩阵表示。

该方法能准确快速的得到用户之间的社交关系。

进一步的,所述第三步包括以下几个步骤:

C1、建立社交圈给定时间状态,同时满足下列两个条件的所有用户v构成用户u的社交圈

1)在原始社交网络中用户u和v之间存在直接社交关系,即SNu,v=1;

2)其中代表用户u在时间状态t下的历史签到集合,代表u在时间状态t下有过签到记录;

如果用户v在特定时间状态t下符合上述条件,则记为否则记为

C2、分析个人偏好:

1)分析签到日志中包含的位置信息和主题信息,为日志中出现的每个位置计算主题分布向量,使用符号Dl表示位置l的主题分布向量,其中,代表主题标识;

2)为确定时间状态下的每个用户计算个人偏好分布向量计算公式为:其中*号表示归一化处理;

计算用户偏好分布和位置主题分布之间的相似度Qu,l,并将其视为用户u对位置l潜在访问的可能性,其中Qu,l=cosin(Du,Dl);

C3、分析用户偏好相似度,计算公式为:其中,表示在特定时间状态t下,用户u和v之间的主题偏好相似度;

C4、分析用户之间的社交信任Su,v:用代表用户u在时间状态t下的信任值,计算公式为:

其中是用户u在时间状态t下的签到次数,是v在时间状态t下社交圈的好友数量,d是衰减因子,0<d<1;

根据计算用户之间的社交信任,计算公式为:

C5、分析用户之间的亲近度,首先计算用户之间的亲密程度,计算公式为:

得到用户之间的亲近度,计算公式为:其中,是时间状态t下用户u和v签到中心点之间的空间距离,利用用户签到位置的经纬度数据的平均值表示用户签到中心,将用户的位置投射到地球这个球面上,计算用户之间的距离

通过对社交圈个人偏好分布向量用户偏好相似度、用户之间的社交信任和用户之间的亲近度的分析,使得对社交环境的分析准确性更高,更全面。

进一步的,所述第四步包括以下几个步骤:

D1、对签到矩阵进行拆分:将一天分为Φ个时间状态,把原始社交网络矩阵SN和用户-签到频率矩阵CI分别拆分成Φ个子矩阵,每个子矩阵对应一个时间状态t,使用符号SNt表示子社交网络矩阵、CIt表示子用户-签到频率矩阵;

D2、对用户签到矩阵CIt进行分解,将用户签到矩阵CIt分解成多个签到频率子矩阵相乘的形式,把每个签到频率子矩阵分解成用户隐特征矩阵Ut,和位置隐特征矩阵L,k是隐空间的向量维度,分解方法为:

a、利用个人偏好、偏好相似度、社交信任以及亲近度四种社交因素建立推荐模型目标函数,具体为:

其中,*代表归一化的处理,α、λ、β、γ、μ、η代表设置的权重参数,和Ll分别代表k维用户隐特征向量和k维位置隐特征向量,是u在时间状态t下的规范化签到频率;

b、计算用户隐特征矩阵Ut和位置隐特征矩阵L:对推荐模型目标函数进行训练,将和Ll看做变量并分别对它们求偏导,其中的偏导如下:

Ll的偏导数如下:

偏导中是指示因子,代表u在时间状态t下对位置l有过签到,否则

求出偏导后,在梯度方向上更新隐特征向量,把每次更新后的向量代入到推荐模型目标函数中重新计算,让函数值以最快速度向下减小;不断迭代该过程直至推荐模型目标函数收敛为止,最后得到用户隐特征矩阵Ut和位置隐特征矩阵L;

D3、合并用户隐特征矩阵Ut和位置隐特征矩阵L:得到用户隐特征矩阵Ut和位置隐特征矩阵L后,按UtLT算法预测用户在每个时间状态t下的签到偏好矩阵并使用投票方案将不同时间状态下的预测矩阵合并为统一的位置偏好预测矩阵其中,T代表矩阵转置运算。

该计算方法简单,收敛速度快,能快速计算得到位置偏好预测矩阵

本发明利用内存计算框架加速了计算速度,在传统的模型位置推荐的方法上融入偏好相似度,亲进度和社交信任等多重社交因素,提高了推荐的准确度。

本发明的附加方面和优点将在下面的描述中部分给出,部分将从下面的描述中变得明显,或通过本发明的实践了解到。

附图说明

本发明的上述和/或附加的方面和优点从结合下面附图对实施例的描述中将变得明显和容易理解,其中:

图1是本发明流程图;

图2是基于内存计算的矩阵乘法架构图;

图3是模型训练过程图。

具体实施方式

下面详细描述本发明的实施例,所述实施例的示例在附图中示出,其中自始至终相同或类似的标号表示相同或类似的元件或具有相同或类似功能的元件。下面通过参考附图描述的实施例是示例性的,仅用于解释本发明,而不能理解为对本发明的限制。

在本发明的描述中,除非另有规定和限定,需要说明的是,术语“安装”、“相连”、“连接”应做广义理解,例如,可以是机械连接或电连接,也可以是两个元件内部的连通,可以是直接相连,也可以通过中间媒介间接相连,对于本领域的普通技术人员而言,可以根据具体情况理解上述术语的具体含义。

本发明提供了一种基于内存计算框架、融合社交环境及时空数据的位置推荐方法,如图1-3所示,包括以下步骤:

第一步,Spark搭建形成包含master主机和slave从机的集群,将用户签到表数据导入master主机中,由master主机进行分割,并将数据的预处理任务分派给slave从机,进行统计整理,用列表示用户ID,用行表示签到地点,值为0,1,签到过则表示为1,没签到过表示为0,同时追踪slave从机上的分布式计算,收集slave从机的反馈信息进行汇总统计,具体为从机分别对用户签到位置和签到频率进行统计,然后主机收集从机反馈进行汇总,最终进行统计得到用户签到矩阵CIt

由于用户频繁进行社会活动让位置社交网络中积累了丰富的社交数据和位置签到数据,社交数据揭示了用户之间的内在联系,具有时空特性的签到数据反映了用户在真实世界的活动轨迹,并且两种数据之间相互关联,通过共同作用对用户行为产生影响。

因此第二步为:从社交网络中去获得用户的社交好友关系数据,并对用户签到矩阵CIt和用户的社交好友关系数据进行整理,行列都是用户ID,如果之间存在社交关系,则值为1,否则值为0,得到用户之间的社交关系矩阵SN。

对用户社交网络和历史签到数据进行分析,通过试验发现用户社会活动具有明显的时间周期性,为了将时间周期特性注入到推荐模型中,本方法提出构建基于时间状态的社交圈概念,将社交好友和签到行为按照时间状态重新划分。社交环境下用户个人偏好容易受好友影响,对于现有推荐方法未能将社交因素考虑全面的问题,为了提高推荐的准确度,本实施例又结合社交环境中存在的多种社交因素,包括个性化、偏好相似度、信任度以及亲近度因素。

因此第三步为:对社交环境进行分析,具体包括建立基于时间状态的社交圈、利用用户签到矩阵CIt和签到日志分析和量化个人偏好、个人偏好相似度、用户之间的社交信任以及社交亲近度。

第四步,对签到矩阵进行拆分并分解,得到用户隐特征矩阵Ut和位置隐特征矩阵L,并构建推荐模型目标函数得到用户隐特征矩阵Ut和位置隐特征矩阵L,将用户隐特征矩阵Ut和位置隐特征矩阵L进行合并预测用户在每个时间状态t下的签到偏好矩阵采用投票方案将不同时间状态下的预测矩阵合并为统一的位置偏好预测矩阵

第五步,将得到的位置偏好预测矩阵的数据提取,转换成可视化的形式,输出分析结果。

作为本实施例的优选方案,第二步包括以下几个步骤:

B1、整理用户签到表数据,数据包含用户社交关系,用户的签到的时空数据、用户签到的主题数据,得到用户签到集合U={u1,u2,...,un}和位置集合L={l1,l2,...,lm},其中,u表示用户,n代表用户的ID,l表示签到位置,m代表签到位置的ID,用户签到集合U表示这个数据集合中所包含的所有有签到记录的人;位置集合L则是代表数据集合中所有有过签到记录的位置。

B2、在spark上对用户签到表数据统计,得出用户和位置之间关联关系,例如用户小明在位置y进行签到,这里就在位置集合中加入这个位置y,作为集合中的一项,用Lu表示用户u历史签到过的位置集合,使用地理坐标<经度,纬度>对位置进行地理编码。

B3、对用户签到数据做预处理:统计用户在各位置的签到频率,记为用户-位置签到频率矩阵用户-位置签到频率矩阵中的元素cu,i代表用户u在位置i上的签到次数。

B4、统计用户社交关系表,得出用户之间是否存在好友关系,用户之间的社交关系用矩阵表示,在该矩阵中,元素SNu,v=1代表用户u和v之间存在直接社交关系,SNu,v=0代表无直接关系。其中,用户社交关系表是一个在社交软件上有关系的用户,统计整理就可以得到用户之间是否在社交软件上存在直接的关系,有则表示1,没有则表示为0。

第三步包括以下几个步骤:

C1、建立社交圈给定时间状态,同时满足下列两个条件的所有用户v构成用户u的社交圈

1)在原始社交网络中用户u和v之间存在直接社交关系,即SNu,v=1;

2)其中代表用户u在时间状态t下的历史签到集合,代表u在时间状态t下有过签到记录;

如果用户v在特定时间状态t下符合上述条件,则记为否则记为

C2、分析个人偏好:

1)分析签到日志中包含的位置信息和主题信息,为日志中出现的每个位置计算主题分布向量,使用符号Dl表示位置l的主题分布向量,其中,签到日志里面包含签到位置和签到主题,代表主题标识,从签到数据中可以得到,它是签到数据中的一项,签到的主题项,就是代表用户在这个位置所做的一些主要内容,例如可以是food,service等。

2)为确定时间状态下的每个用户计算个人偏好分布向量首先对用户-位置签到频率矩阵CI进行归一化处理,将归一化后的签到频率作为主题偏好的权重,最后对用户签到过的位置主题分布向量求加权平均值得到个人偏好分布向量计算公式为:其中*号表示归一化处理。

计算用户偏好分布和位置主题分布之间的相似度Qu,l,并将其视为用户u对位置l潜在访问的可能性,其中Qu,l=cosin(Du,Dl)。

C3、分析用户偏好相似度,计算公式为:其中,表示在特定时间状态t下,用户u和v之间的主题偏好相似度。

C4、分析用户之间的社交信任Su,v:使用符号代表用户u在时间状态t下的信任值,计算公式为:

其中是用户u在时间状态t下的签到次数,是v在时间状态t下社交圈的好友数量,d是衰减因子,0<d<1;

根据计算用户之间的社交信任,计算公式为:

C5、分析用户之间的亲近度,在特定时间状态t下,亲近度代表用户u和v之间社交链接的亲疏程度以及二者活动范围的距离远近,亲密程度越高、活动范围越近则两者之间的亲近度就越高。对于任意给定的两个个体A和B以及与两者有直接社交联系的个体集合S={C,D,E…}。本发明采取下面计算方法对用户之间的亲密程度Mu,v进行衡量,用户之间的亲密程度计算公式为:

亲近度数值与亲密程度成正比,与距离成反比,本发明采用下列计算公式分析用户之间的亲近度,计算公式为:其中,是时间状态t下用户u和v签到中心点之间的空间距离,利用用户签到位置的经纬度数据的平均值表示用户签到中心,将用户的位置投射到地球这个球面上,计算用户之间的距离

第四步包括以下几个步骤:

D1、对签到矩阵进行拆分:将一天分为Φ个时间状态,把原始社交网络矩阵SN和用户-签到频率矩阵CI分别拆分成Φ个子矩阵,每个子矩阵对应一个时间状态t,使用符号SNt表示子社交网络矩阵、CIt表示子用户-签到频率矩阵。

通常Φ取为24,即将一天分为24个时间状态对签到矩阵进行拆分。

D2、对用户签到矩阵CIt进行分解,将用户签到矩阵CIt分解成多个签到频率子矩阵相乘的形式,将分解转化成优化过程,构造出目标函数并进行最小化处理,同时对目标函数添加附加条件,实现满足一定约束的矩阵分解。本方法采用上述的矩阵分解技术,将多种社交因素作为约束条件,把每个签到频率子矩阵分解成用户隐特征矩阵Ut,和位置隐特征矩阵L,k是隐空间的向量维度,分解方法为:

a、利用个人偏好、偏好相似度、社交信任以及亲近度四种社交因素建立推荐模型目标函数,具体为:

其中,*代表归一化的处理,α、λ、β、γ、μ、η代表设置的权重参数,根据具体数据权重比进行设置,不同应用场景下可尝试调整参数设置以获得最佳效果,和Ll分别代表k维用户隐特征向量和k维位置隐特征向量,是u在时间状态t下的规范化签到频率。

b、计算用户隐特征矩阵Ut和位置隐特征矩阵L:对推荐模型目标函数进行训练,将和Ll看做变量并分别对它们求偏导,其中的偏导如下:

Ll的偏导数如下:

偏导中是指示因子,代表u在时间状态t下对位置l有过签到,否则

求出偏导后,在梯度方向上更新隐特征向量,把每次更新后的向量代入到推荐模型目标函数中重新计算,让函数值以最快速度向下减小;不断迭代该过程直至推荐模型目标函数收敛为止,最后得到用户隐特征矩阵Ut和位置隐特征矩阵L。

D3、合并用户隐特征矩阵Ut和位置隐特征矩阵L:得到用户隐特征矩阵Ut和位置隐特征矩阵L后,按UtLT算法预测用户在每个时间状态t下的签到偏好矩阵并使用投票方案将不同时间状态下的预测矩阵合并为统一的位置偏好预测矩阵这里T代表矩阵转置运算。

投票方式为在每个时间状态下推举出top n个位置,然后将全部时间状态下出现次数最多的位置集合推荐给用户。本方法使用HAMA的矩阵乘法,需要使用多趟MapReduce Job完成。下面是每趟Job的工作内容:

1)从HBase表构造CollectionTable。CollectionTable是实现矩阵乘法的一个中间数据结构。其记录的是要进行矩阵乘法的两个分块的内容。block(i,j)-k代表要进行分块矩阵乘的两个block,后面的k代表第K子矩阵乘法。在Map阶段Map读入矩阵的行向量,发射(blockID,sub-vector)KV对,在Reduce阶段将sub-vector收集成分块矩阵信息,存储HDFS的文件中。

2)从CollectionTable中计算矩阵乘法。在Map阶段,Maptask读入CollectionTable中的一块,并进行MatrixA*MatrixB的操作,发射(blockID,分块矩阵乘结果)。在Reduce结算,收集所有的乘法结果,并进行累加,将最终结果存入HBase表中。

在本说明书的描述中,参考术语“一个实施例”、“一些实施例”、“示例”、“具体示例”、或“一些示例”等的描述意指结合该实施例或示例描述的具体特征、结构、材料或者特点包含于本发明的至少一个实施例或示例中。在本说明书中,对上述术语的示意性表述不一定指的是相同的实施例或示例。而且,描述的具体特征、结构、材料或者特点可以在任何的一个或多个实施例或示例中以合适的方式结合。

尽管已经示出和描述了本发明的实施例,本领域的普通技术人员可以理解:在不脱离本发明的原理和宗旨的情况下可以对这些实施例进行多种变化、修改、替换和变型,本发明的范围由权利要求及其等同物限定。

当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1