CN104965846A - MapReduce平台上的虚拟人建立方法 - Google Patents
MapReduce平台上的虚拟人建立方法 Download PDFInfo
- Publication number
- CN104965846A CN104965846A CN201410855499.4A CN201410855499A CN104965846A CN 104965846 A CN104965846 A CN 104965846A CN 201410855499 A CN201410855499 A CN 201410855499A CN 104965846 A CN104965846 A CN 104965846A
- Authority
- CN
- China
- Prior art keywords
- node
- key
- value
- rho
- class
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Granted
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Data Mining & Analysis (AREA)
- Databases & Information Systems (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明涉及一种MapReduce平台上的虚拟人建立方法。该虚拟人建立方法包括:步骤1、从行为日志中提取账号及与账号对应的登陆时间、登陆终端信息;步骤2、根据账号之间协同出现的情况计算账号之间的相似度,构造以节点表征账号的连通图,并以节点之间的边的长度表征账号之间的相似度,节点之间的边越短,节点所表征的账号之间相似度越高;步骤3、基于MapReduce平台对所述连通图中的节点进行聚类,根据聚类结果建立虚拟人。本发明基于行为日志建立虚拟人,复杂度低,准确率高,适合于处理大数据;借助流行的MapReduce分布式计算思想在集群上实现了基于本地密度的聚类,弱化了处理时单机本身资源有限等所带来的限制,能实现对海量数据的处理,更快的完成聚类操作。
Description
技术领域
本发明涉及数据处理技术领域,尤其涉及一种MapReduce平台上的虚拟人建立方法。
背景技术
当前,即时通讯,电子邮件,网络游戏,P2P软件下载,网络论坛,网络招聘,电子商务交易,网络预定机票酒店等各种网络服务给网络用户的生活带来极大的便利。各种网络服务一般会给每个用户分配一个帐号,该帐号跟用户的注册信息相关联并用以对各用户进行记录和识别,比如网络用户的即时通信号码(如QQ账号)或电子邮件地址,网络游戏帐号,论坛登陆帐号,以及P2P软件帐号等等。
每个网络用户都拥有类型多样的账号,而大量的网络用户则带来的巨量的账号数据,对相关部门来说,有效管理网络用户信息已经成为艰巨的任务。为有效管理网络用户信息,实现对网络帐号归属关系的分析,即哪些帐号属于同一个人(虚拟人),现已成为亟需解决的问题。
现有技术在面对构建虚拟人的问题时,大多归于属性匹配方式。属性匹配的方案大致如下:
A)指定网络帐号属性匹配的规则,在哪种情况下用哪些属性进行匹配,以及相应的匹配成功判定方法。比如,当匹配一个QQ帐号和一个淘宝帐号时,如果两帐号的“姓名”和“联系方式”两个字段的编辑距离(editdistance)均小于3,则认为这两个帐号匹配成功。
B)根据属性匹配的情况,构建帐号之间属于同一个人的程度(相似度)。并最终根据相似度分辨出哪些帐号属于同一个人。比如,上例中,只要匹配成功则认为属于同一个人。
但是,实际生活中存在如下情况:
1.账号数据中经常出现属性缺失的情况,例如账号注册时只填写了部分属性值。
2.不同类型的账号数据,共有的属性少。而且共有的属性中,不一定都能用于属性匹配。
3.不同类型的账号数据,对同一语义的属性不同,需要对齐,这进一步增加了难度。比如在A类帐号中,姓名对应的字段就是“姓名”这一个字段,但在B类帐号中,姓名实际上是用“姓”和“名”两个字段来表示。
4.实际账号数据中,属性值的可信度并不是很高。例如,因为缺乏实名认证,可能存在身份证号不真实的情况。
5.需要进行属性级别的比较,复杂度较高。
这些情况使得属性匹配的过程复杂、计算量大且实际结果不理想,尤其是针对大量数据处理时,准确度较低。
另一方面,MapReduce是谷歌提出的分布式并行计算框架,用于大规模数据集的并行运算,主要通过“Map(映射)”和“Reduce(化简)”这两个步骤来并行处理大规模的数据集。在MapReduce平台上的计算过程中,输入数据首先被切分到集群的不同计算机上,集群中其他计算机分配为执行Map作业或Reduce作业;Map作业从输入数据中抽取出键值对<Key,Value>,每一个键值对都作为参数传递给map函数,map函数产生的中间键值对被缓存在内存中,缓存的中间键值对会被定期写入本地磁盘,而且这些中间键值对被分为R个区,R的大小是由用户定义的,将来每个区会对应一个Reduce作业;带有相同Key的键值对由同一个Reduce作业来处理,Reduce作业读取这些中间键值对,对于每个唯一的键,都将键与关联的值传递给reduce函数,reduce函数产生的输出会添加到这个分区的输出文件中。Map/Reduce作业和map/reduce函数的区别:Map作业处理一个输入数据的分片,可能需要调用多次map函数来处理每个输入键值对;Reduce作业处理一个分区的中间键值对,期间要对每个不同的键调用一次reduce函数,Reduce作业最终也对应一个输出文件。整个过程中,输入数据是来自底层分布式文件系统的,中间数据是放在本地文件系统的,最终输出数据是写入底层分布式文件系统。为了能实现对海量数据的处理,克服单机本身资源有限所带来的限制,亟需在MapReduce平台上实现虚拟人的建立。
发明内容
因此,本发明的目的在于提供一种MapReduce平台上的虚拟人建立方法,解决因帐号类型多样等带来的虚拟人构建复杂、准确度低的问题,实现对海量数据的处理,克服单机本身资源有限所带来的限制。
为实现上述目的,本发明提供了一种MapReduce平台上的虚拟人建立方法,包括:
步骤1、从行为日志中提取账号及与账号对应的登陆时间、登陆终端信息;
步骤2、根据账号之间协同出现的情况计算账号之间的相似度,构造以节点表征账号的连通图,并以节点之间的边的长度表征账号之间的相似度,节点之间的边越短,节点所表征的账号之间相似度越高;
步骤3、基于MapReduce平台对所述连通图中的节点进行聚类,根据聚类结果建立虚拟人。
其中,步骤3包括:
步骤20、以连通图中的节点和边的信息作为输入数据,通过Map作业生成包括节点以及邻边信息的键值对,通过Reduce作业生成包括节点、节点的本地密度Rho以及节点所有邻边信息的输出,Rho定义为连接本节点的长度低于预定义值Dc的邻边的数目;
步骤30、对于步骤20中Reduce作业的输出,通过Map作业生成包括节点、节点Rho、邻居节点Rho以及邻边信息的键值对,对每个节点,通过Reduce作业遍历节点Rho、所有邻居节点Rho以及所有邻边信息,得出每个节点的离散度Delta,Delta定义为本节点所有连接更高Rho值邻居节点的邻边中最短边的边长,若不存在这样的邻居节点,则取本节点最长邻边的边长;再结合预定规则来进行类标识
步骤40、相同类的各个节点一同构成一个虚拟人。
其中,所述预定规则包括:节点的Rho和Delta分别高于作为输入参数的阈值R_T和阈值D_T,则该节点为一个类的中心,该节点的类标识取其自身类标识;否则,节点的类标识取距离其最近且Rho更高的邻居节点的类标识;
孤立节点的类标识为自身类标识。
其中,所述预定规则包括:预先划分Rho值可能取值区间以及对应的Delta值可能取值区间,如果节点的Rho值属于Rho值可能取值区间且节点的Delta值属于对应的Delta值可能取值区间,则该节点为一个类的中心,该节点的类标识取其自身类标识;否则,节点的类标识取距离其最近且Rho更高的邻居节点的类标识;
孤立节点的类标识为自身类标识。
其中,还引入账号之间协同出现的情况以外的因素计算所述账号之间的相似度。
其中,还包括合并所有虚拟人及与虚拟人对应的账号成为虚拟人数据库。
其中,步骤20中Reduce作业的输出存储于关系数据库或键值数据库中。
其中,步骤30中的Map作业中,通过对步骤20中Reduce作业的输出进行笛卡尔积,实现对邻居节点Rho的遍历。
其中,步骤20包括:
步骤21、连通图中的节点和边的信息作为输入数据经由Map作业生成键值对,其中,键包括标识节点的字段,值包括标识邻居节点的字段和标识该节点和邻居节点之间邻边的边长的字段;
步骤22、对键值对按照键所包括的节点进行分区,键包括相同节点的键值对分配至同一分区;
步骤23、对于同一分区内的键值对按照键所包括的节点进行分组,键包括相同节点的键值对分配至同一组;
步骤25、经由Reduce作业,通过对属于同一组的键值对的值的迭代来遍历同一节点的所有的邻边,生成包括节点、节点的本地密度Rho以及节点所有邻边信息的输出。
其中,步骤20还包括:
步骤21中,键还包括标识该节点和邻居节点之间邻边的边长的字段;
步骤24、对于属于同一组的键值对按照键所包括的邻边的边长进行排序。
其中,步骤30包括:
步骤31、对于步骤20中Reduce作业的输出经由Map作业生成键值对,其中,键包括标识节点的字段,值包括标识邻居节点的字段、标识该节点和邻居节点之间邻边的边长的字段、标识该邻居节点Rho的字段和标识该节点Rho的字段;
步骤32、对键值对按照键所包括的节点进行分区,键包括相同节点的键值对分配至同一分区;
步骤33、对于同一分区内的键值对按照键所包括的节点进行分组,键包括相同节点的键值对分配至同一组;
步骤35、经由Reduce作业,对每个节点,通过对属于同一组的键值对的值的迭代来遍历节点Rho、所有邻居节点Rho以及所有邻边信息,得出每个节点的离散度Delta,再结合预定规则来进行类标识。
其中,步骤30还包括:
步骤31中,键还包括标识该邻居节点Rho的字段;
步骤34、对于属于同一组的键值对按照键所包括的邻居节点Rho进行排序。
综上所述,本发明的MapReduce平台上的虚拟人建立方法基于行为日志建立虚拟人,复杂度低,准确率高,适合于处理大数据;借助流行的MapReduce分布式计算思想在集群上实现了基于本地密度的聚类,弱化了处理时单机本身资源有限等所带来的限制,能实现对海量数据的处理,更快的完成聚类操作。
附图说明
附图中,
图1为本发明MapReduce平台上的虚拟人建立方法一较佳实施例的流程图;
图2为本发明MapReduce平台上的虚拟人建立方法一较佳实施例的逻辑示意图;
图3为本发明MapReduce平台上的虚拟人建立方法一较佳实施例中的Rho值-Delta值分布示意图。
具体实施方式
下面结合附图,通过对本发明的具体实施方式详细描述,将使本发明的技术方案及其有益效果显而易见。
参见图1,其为本发明MapReduce平台上的虚拟人建立方法一较佳实施例的流程图。本发明的主要步骤包括:
步骤1、从行为日志中提取账号及与账号对应的登陆时间、登陆终端信息;
步骤2、根据账号之间协同出现的情况计算账号之间的相似度,构造以节点表征账号的连通图,并以节点之间的边的长度表征账号之间的相似度,节点之间的边越短,节点所表征的账号之间相似度越高;
步骤3、基于MapReduce平台对所述连通图中的节点进行聚类,根据聚类结果建立虚拟人。
本发明还可以包括合并所有虚拟人及与虚拟人对应的账号成为虚拟人数据库的步骤。
为应对因帐号类型多样等带来的虚拟人构建复杂、准确度低等实际问题,本发明基于行为日志的分析来建立虚拟人。行为日志记录了网络用户应用网络服务的情况,可采集自服务器端,用户终端等。该方法基于如下对现实情况的观察:
1.一段时间内,在同一台终端上有活动的帐号可能属于同一个人。我们称在某一段时间内多个帐号在同一终端上都有过活动,为这些帐号的协同出现。
2.多个帐号协同出现的情况越近似—比如次数越多,那这些帐号属于同一个人可能性(称,相似度)就越大。
3.单个用户拥有的多个帐号中,总是有部分帐号使用更为频繁。
4.不同用户的部分帐号之间,即便偶尔有协同出现过,其协同出现的情况不会比用户自己的各个帐号之间协同出现的情况更近似。
参见图2,其为本发明MapReduce平台上的虚拟人建立方法一较佳实施例的逻辑示意图。
该较佳实施例的关键性步骤包括:
将行为日志中的记录抽象为【时间,终端,帐号】,从而得到包含时间戳,账号ID及终端ID的数据,从而得知什么时候在哪个终端上哪个帐号有活动过,通过对每一个账号统计该账号一段时间内与其他帐号在同一终端上都有过活动的协同出现次数,可以得出账号之间协同出现的次数。
“次数”是衡量“情况”的一种方式,此实施例中采用“次数”的说法仅是为了简化说明。实际上,还可以加入时段等信息作为权值来一起衡量“情况”—比如,下班时间的协同出现的权重可稍重于上班时间—上班时间更可能会共用电脑终端。
基于上述账号协同出现情况的观察,计算得出帐号之间的相似度。若抽象成连通图,则连通图中的节点代表帐号,边的长度表征帐号之间的相似度。通常情况下,相似度越高,边越短。
如有其他模型,比如属性匹配,可将对应模型的匹配结果同样作为影响边长度的一个因素。
得到上述图后,可以进行如下计算,得出哪些帐号属于同一个人:
对各个节点,求出其本地密度Rho。Rho的定义为本节点长度低于某个预定义值Dc的边的数目。
对每个节点,求出其离散度Delta。Delta定义为本节点所有连接更高Rho值邻居节点的邻边中最短边的边长;若不存在这样的邻居节点,则取本节点最长邻边的边长。
将Rho值和Delta值分别高于特定阈值R_T和D_T的节点,标识为类的中心节点。每一个这样的节点代表一个类,也就是一个虚拟人。
将其他非中心节点归类为到其距离最短且Rho值高于自己的中心节点的那一类。
相同类的各个节点即表示属于同一个虚拟人。对应各个类分别建立相应的虚拟人。
参见上述计算得出哪些帐号属于同一个人的过程,本发明采用基于本地密度的聚类算法来对行为日志进行分析,与其他K-Means、层次聚类等聚类方式相比较而言,降低了整个系统的分析复杂度。同时,籍由Delta和Rho值这两个源自数据本身的分布特征量,提供了对聚类数目选定的一种客观参考方式。
所示类中心点标识方法为节点的Rho值和Delta值同时高于某个相应阈值。实际中可采取其他基于Rho值或Delta值的方法。如Rho值高于3,则delta值在4-5之间,Rho值高于5,则Delta值在5-6之间。
下面对本发明MapReduce平台上的虚拟人建立方法中各种值的含义结合简单示例具体说明如下。
边长表征:节点之间属于同一个人的可能性(相似度)的衡量。
Rho表征:当前节点对其邻接点的重要性。
Delta表征:若以当前节点为类中心,其相对其他类中心的可区别性。
举例来说:
边长可定义为:两个帐号在行为日志里,协同出现的次数(ca,b)的倒数1/(ca,b)。即两个帐号在同一个终端上一定时间内先后活动过的次数的倒数。
Rho可定义为:当前节点的邻边中,长度小于参数值Dc的边的数量。
Delta定义为本节点所有连接更高Rho值邻居节点的邻边中最短边的边长;若不存在这样的邻居节点,则取本节点最长邻边的边长。
在上述定义示例下对应的公式表达为:
令c(a,b)为从行为日志中统计到的帐号a和b的协同出现次数,则有:
1.a,b之间的边长:
d(a,b)=1/c(a,b)[等式1]。
2.则对a的所有N个邻居节点bn,n=1…N(N为自然数),a的Rho值:
其中,X(x)的定义为:1.如果x<0,则X(x)=1,否则X(x)=0。
3.a的Delta值:
令节点a的邻居节点依次为b1…bN,则Delta(a)可定义为:
1)如果存在满足Rho(bx)>Rho(a)的邻边,则有:
Delta(a)=min{d(a,bn))|n=1..N且Rho(bn)>Rho(a)}。
2)否则:
Delta(a)=max{d(a,bn),n=1..N}。
特别的,对于没有任何邻边的节点,在标记其类标识时,可直接标识为其自己,即独立形成一个虚拟人。
Delta值的求得与Rho值有关,而Rho值的定义也可用常见的中心度等其他定义方式。
Dc的取值在实践中和具体的数据有关,通常我们会在得到连通图后,再确定Dc的取值。也就是说,和在其他常见聚类方式中一样,它是一个输入参数。但与K-Means中的K值的选取不同的是,K值的选取直接确定类的数目,但这里的Dc会通过Rho值和Delta值以及R_T和D_T的取值而弱化了主观因素的影响,因为这些参数的选取会引入对数据本身特性的客观考虑。
R_T和D_T的选取的一种方法如下。如图3所示,其为本发明MapReduce平台上的虚拟人建立方法一较佳实施例中的Rho值-Delta值分布示意图,图中每一个点代表一个节点。首先画出各个点的Rho值-Delta值分布图,之后观察Delta值(Rho值)的分布情况,看在哪个值时,分布情况发生了突变,则取该值为D_T(R_T)。如图3中,在d’(r’)处,Delta值的分布情况发生了间断/突变,则D_T(R_T)的取值为d’(r’)。若数据点较多,则可进行抽样,再以样本点的分布图做取值的参考。
通过引入其他模型,比如属性匹配,可将对应模型的匹配结果同样作为影响边长度的一个因素。也就是说,引入账号之间协同出现的次数以外的因素计算所述账号之间的相似度。
以属性匹配举例来说,用数学符号表示的话,即是将属性匹配的结果作为计算边长的一个参数。即,令Match(a,b)为属性匹配到的a和b的帐号相似度,则可如下定义边长:
d(a,b)=f(c(a,b),match(a,b))。
以[等式1]为例,可选择将其具体定义为:
引入属性匹配模型后的边长
通过上述说明可以了解,本发明基于行为日志采用基于本地密度的聚类过程来建立虚拟人,复杂度低,准确率高,适合于处理大数据;更进一步,为了能实现对海量数据的处理,克服单机本身资源有限所带来的限制,本发明将基于本地密度的聚类过程在MapReduce平台上进行实施,以针对海量数据的处理,更快的完成聚类操作。
下面来举例说明该较佳实施例的步骤3在MapReduce平台上的具体实施方式。步骤3具体可以包括:
步骤20、以连通图中的节点和边的信息作为输入数据,通过Map作业生成包括节点以及邻边信息的键值对,通过Reduce作业生成包括节点、节点的本地密度Rho以及节点所有邻边信息的输出,Rho定义为连接本节点的长度低于预定义值Dc的邻边的数目。
步骤20具体可以包括:
步骤21、连通图中的节点和边的信息作为输入数据经由Map作业生成键值对,其中,键包括标识节点的字段,值包括标识邻居节点的字段和标识该节点和邻居节点之间邻边的边长的字段。邻边信息包括对应的邻居节点和邻边边长。作为优化,步骤21中,键还可以包括标识该节点和邻居节点之间邻边的边长的字段。
应用时,可以将输入数据的每一行对应一组节点之间的边信息。故为方便起见,可以将输入数据设定为依次由小标识值节点a、大标识值节点b和边长len(a,b)组成的三元组:[a,b,len(a,b)]。
因为对于每个节点都需要计算它们的Rho值,对连通图中的一条边信息,Map作业将会有两次<Key,Value>输出。每个Key值或Value值均依次由left和right两个字段组成。具体来说,第一次的Key值可以是K1=<a,len(a,b)>(这里,left=a,right=len(a,b)),Value值可以是V1=<b,len(a,b)>,第二次的Key值可以是K2=<b,len(a,b)>,Value值可以是V2=<a,len(a,b)>。
步骤22、对键值对按照键所包括的节点进行分区,键包括相同节点的键值对分配至同一分区。在此实施例中具体来说,各记录所将归属的分区(Partition)的序列将只与Map输出Key值的第一个字段有关。比如说,分区序列可以为Key的left字段的哈希值与已知总分区数的余数,以伪代码表示即:
K.left.hashCode()%总分区数。
这实际上保证了相同节点left字段的节点的边信息,都会分配到同一个分区中进行存储。
步骤23、对于同一分区内的键值对按照键所包括的节点进行分组,键包括相同节点的键值对分配至同一组;
分组(GroupCompare)的结果将只与相比较的Key值它们的第一个字段的比较结果有关。举例来说,对于两个Key,k1和k2,相应的比较(compare)结果为:
k1.left.compare(k2.left)。
这实际上保证了,每一个节点的所有边的信息(Value值,邻居点和边长),都会在同一次Reduce过程中调用。
步骤24、对于属于同一组的键值对按照键所包括的邻边的边长进行排序。步骤24中的排序可以为升序排序。步骤24作为一个可选的优化措施,可以称为组内排序(SortComparator,SC),可设定为按left和right次序两个字段先后进行比较的结果。以伪代码表示即:
l_compare=k1.left.compare(k2.left)
if(l_compare==0)//如果left值都相等,则比较right值
return k1.right.compare(k2.right)
else
return l_compare。
由于Key的right值均表示边长,故这里实际上保证在Reduce过程中的迭代式时,边信息是按照边长的长短的升序顺序返回的。注:实际上,步骤21中Key值设定为由节点标识和边长两个字段构成,就是为了进行该优化;若无该优化的考虑,则步骤21中Key值仅有节点标识组成即可。
步骤25、经由Reduce作业,通过对属于同一组的键值对的值的迭代来遍历同一节点的所有的邻边,生成包括节点、节点的本地密度Rho以及节点所有邻边信息的输出。
步骤25中Reduce作业的输出为键值对,其中,键包括标识节点的字段,值包括标识节点的字段,标识节点Rho的字段以及标识节点所有邻边信息的字段。
经过上述步骤,在每一次Reduce调用时,均可通过对Values的迭代来遍历同一节点的所有的边。每次Reduce过程调用时,都会输出如下三部分信息:当前节点n的标识,n的Rho值,按边长进行排序后的n的所有邻边信息。
当使用上述SC进行了优化时,Rho值的计数可在迭代到的边长大于预定义值Dc时便结束。同时,由于邻边已经借助SC进行了升序排序,邻边信息亦可按迭代时的先后拼接即可。若未进行该优化,则Rho值的计数需迭代到了最后一条边时才能结束,而邻边信息需要排序后再作为Value值的一部分。
作为举例,输出的格式可以为键值对:
[K=n,V=<n,Rho(n),n1:len(n,n1),n2:len<n,n2>…nN:len<n,nN>>]。
该较佳实施例通过以上所述的第一个MapReduce任务,主要实现计算Rho值,并对邻居节点按距离升序排序。接下来的第二个MapReduce任务,主要实现计算Delta值,并标识类中心点。
步骤30、对于步骤20中Reduce作业的输出,通过Map作业生成包括节点、节点Rho、邻居节点Rho以及邻边信息的键值对,对每个节点,通过Reduce作业遍历节点Rho、所有邻居节点Rho以及所有邻边信息,得出每个节点的离散度Delta,再结合预定规则来进行类标识。
在此较佳实施例中预定规则为:节点的Rho和Delta分别高于作为输入参数的阈值R_T和阈值D_T,则该节点为一个类的中心,该节点的类标识取其自身类标识;否则,节点的类标识取距离其最近且Rho更高的邻居节点的类标识;
孤立节点(没有邻居的节点)的类标识为自身类标识。该预定规则与中国专利申请CN 201410814330.4“虚拟人建立方法及装置”中所采用的规则类似—刚性的要求Rho值和Delta值一定高于某个分别对应的阈值。
这只是节点是否可标识为类中心的方法之一。从根本来说,节点是否可作为类中心节点是根据节点的Rho值和Delta值来进行的。其实,还存在其他利用包括Rho值和Delta值在内的因素来进行判断的各种方法。本发明MapReduce平台上的虚拟人建立方法在类中心点的确认方式上,也可以松懈,能更快的完成聚类操作。例如,预定规则可以包括:预先划分Rho值可能取值区间以及对应的Delta值可能取值区间,如果节点的Rho值属于Rho值可能取值区间且节点的Delta值属于对应的Delta值可能取值区间,则该节点为一个类的中心,该节点的类标识取其自身类标识;否则,节点的类标识取距离其最近且Rho更高的邻居节点的类标识;孤立节点的类标识为自身类标识。比如:如果节点的Rho值在[10,20]范围,且Delta值也在[0.9*10,0.8*20](即Delta值也在随Rho值变动的某个范围内,Delta值取值范围与Rho值取值范围相对应,该节点也可标识为类中心)。
这样,最终可以得到所有节点对应的类标识。同时,相同类标识的即为同一个类—即同一个虚拟人,从而完成步骤40、相同类的各个节点一同构成一个虚拟人。
求解某个节点的Delta值,需要取得其邻边对应的Rho值。在步骤20中Reduce作业的输出下,可以借助通用的MapReduce上进行笛卡尔积(Cartesian Product)的方式,来实现对邻居节点的Rho值的遍历—通过自定义InputFormat来实现全连接。这里的遍历,实际上是为了后续求出Delta值。相关的案例可参见[<<MapReduce Design Patterns>>,O’Reilly,Dec.2012,p:128-138]所述。
步骤30具体可以包括:
步骤31、对于步骤20中Reduce作业的输出经由Map作业生成键值对,其中,键包括标识节点的字段,值包括标识邻居节点的字段,标识该节点和邻居节点之间邻边的边长的字段,标识该邻居节点Rho的字段,标识该节点Rho的字段。
对于步骤20中Reduce作业的输出经由Map作业输出当前节点和经连接得到的邻居节点的信息。一种优化的示例输出格式为:
[K=<a,Rho(b)>,V=<Rho(b),Rho(a),b,len(a,b)>]。
步骤31中,作为选择,键还可以包括标识该邻居节点Rho的字段,优化处在于将Rho(b)的信息也并入到Key部分,便于后续步骤34的排序。
步骤32、对键值对按照键所包括的节点进行分区,键包括相同节点的键值对分配至同一分区。具体方式可参见步骤22。
步骤33、对于同一分区内的键值对按照键所包括的节点进行分组,键包括相同节点的键值对分配至同一组。具体方式可参见步骤23。
步骤34、对于属于同一组的键值对按照键所包括的邻居节点Rho进行排序。作为可选的优化措施,首先根据Key值的第一个字段区别出是否为同一个节点的Key值,若相同则以第二个字段降序排序。这样排序保证了在同一个Reduce过程中,高Rho值的邻居节点会被首先迭代访问到。
步骤35、经由Reduce作业,对每个节点,通过对属于同一组的键值对的值的迭代来遍历节点Rho、所有邻居节点Rho以及所有邻边信息,得出每个节点的离散度Delta,再结合预定规则来进行类标识。
经过上述步骤,在每一次Reduce过程中,都可以通过对Value值的迭代来遍历某个节点的自身及其所有邻边的信息。这时可以再选择结合作为输入参数的阈值R_T和阈值D_T值,便生成进行类标识所需的信息。
在此较佳实施例中,步骤30的Map过程是在原生的MapReduce方案上实现,但实际中可通过常见的数据库技术而加速处理过程。例如,在步骤20中Reduce作业输出时,将各节点的Rho值存在关系型数据库或K-V数据库中。从而在步骤30的Map时,只需对邻居点的Rho值进行查询即可,而不需要通过自定义InputFormat来处理;也就是说,不再需要进行笛卡尔操作,可在Map阶段直接访问数据来获取邻居节点的Rho值便可。
在本发明的MapReduce平台上的虚拟人建立方法中,通过分析行为日志的方式,实际分析所得出的结果是“哪些帐号是属于同一个人操作的”。在现实系统需求中,使用者比帐号所有人往往更有意义,同时这也能降低因“身份证号码”等关键值不真实,而引起帐号归属关系结果上的偏差。用行为日志来进行分析,增加了整个系统的可适用性–只需要帐号标识,而并不一定需要具体的帐号属性。源自行为日志的特征与上述复杂度的降低,本发明能更好适用更大范围下、更长时间范围内、更多数据量的环境。实际上,数据采集自的范围越广、时间越长、数据量更大会使得系统的实际准确率越高。本发明根据上述对行为日志分析后,聚类得出的帐号归属关系,可结合帐号属性等额外数据,进一步描绘出该虚拟人的姓名、住址等属性信息。
综上所述,本发明的MapReduce平台上的虚拟人建立方法基于行为日志建立虚拟人,复杂度低,准确率高,适合于处理大数据;借助流行的MapReduce分布式计算思想在集群上实现了基于本地密度的聚类,弱化了处理时单机本身资源有限等所带来的限制,能实现对海量数据的处理,更快的完成聚类操作。
以上所述,对于本领域的普通技术人员来说,可以根据本发明的技术方案和技术构思作出其他各种相应的改变和变形,而所有这些改变和变形都应属于本发明后附的权利要求的保护范围。
Claims (10)
1.一种MapReduce平台上的虚拟人建立方法,其特征在于,包括:
步骤1、从行为日志中提取账号及与账号对应的登陆时间、登陆终端信息;
步骤2、根据账号之间协同出现的情况计算账号之间的相似度,构造以节点表征账号的连通图,并以节点之间的边的长度表征账号之间的相似度,节点之间的边越短,节点所表征的账号之间相似度越高;
步骤3、基于MapReduce平台对所述连通图中的节点进行聚类,根据聚类结果建立虚拟人。
2.如权利要求1所述的MapReduce平台上的虚拟人建立方法,其特征在于,步骤3包括:
步骤20、以连通图中的节点和边的信息作为输入数据,通过Map作业生成包括节点以及邻边信息的键值对,通过Reduce作业生成包括节点、节点的本地密度Rho以及节点所有邻边信息的输出,Rho定义为连接本节点的长度低于预定义值Dc的邻边的数目;
步骤30、对于步骤20中Reduce作业的输出,通过Map作业生成包括节点、节点Rho、邻居节点Rho以及邻边信息的键值对,对每个节点,通过Reduce作业遍历节点Rho、所有邻居节点Rho以及所有邻边信息,得出每个节点的离散度Delta,Delta定义为本节点所有连接更高Rho值邻居节点的邻边中最短边的边长,若不存在这样的邻居节点,则取本节点最长邻边的边长;再结合预定规则来进行类标识;
步骤40、相同类的各个节点一同构成一个虚拟人。
3.如权利要求2所述的MapReduce平台上的虚拟人建立方法,其特征在于,所述预定规则包括:
节点的Rho和Delta分别高于作为输入参数的阈值R_T和阈值D_T,则该节点为一个类的中心,该节点的类标识取其自身类标识;否则,节点的类标识取距离其最近且Rho更高的邻居节点的类标识;
孤立节点的类标识为自身类标识。
4.如权利要求2所述的MapReduce平台上的虚拟人建立方法,其特征在于,所述预定规则包括:
预先划分Rho值可能取值区间以及对应的Delta值可能取值区间,如果节点的Rho值属于Rho值可能取值区间且节点的Delta值属于对应的Delta值可能取值区间,则该节点为一个类的中心,该节点的类标识取其自身类标识;否则,节点的类标识取距离其最近且Rho更高的邻居节点的类标识;
孤立节点的类标识为自身类标识。
5.如权利要求2所述的MapReduce平台上的虚拟人建立方法,其特征在于,步骤20中Reduce作业的输出存储于关系数据库或键值数据库中。
6.如权利要求2所述的MapReduce平台上的虚拟人建立方法,其特征在于,步骤30中的Map作业中,通过对步骤20中Reduce作业的输出进行笛卡尔积,实现对邻居节点Rho的遍历。
7.如权利要求2所述的MapReduce平台上的虚拟人建立方法,其特征在于,步骤20包括:
步骤21、连通图中的节点和边的信息作为输入数据经由Map作业生成键值对,其中,键包括标识节点的字段,值包括标识邻居节点的字段和标识该节点和邻居节点之间邻边的边长的字段;
步骤22、对键值对按照键所包括的节点进行分区,键包括相同节点的键值对分配至同一分区;
步骤23、对于同一分区内的键值对按照键所包括的节点进行分组,键包括相同节点的键值对分配至同一组;
步骤25、经由Reduce作业,通过对属于同一组的键值对的值的迭代来遍历同一节点的所有的邻边,生成包括节点、节点的本地密度Rho以及节点所有邻边信息的输出。
8.如权利要求7所述的MapReduce平台上的虚拟人建立方法,其特征在于,步骤20还包括:
步骤21中,键还包括标识该节点和邻居节点之间邻边的边长的字段;
步骤24、对于属于同一组的键值对按照键所包括的邻边的边长进行排序。
9.如权利要求2所述的MapReduce平台上的虚拟人建立方法,其特征在于,步骤30包括:
步骤31、对于步骤20中Reduce作业的输出经由Map作业生成键值对,其中,键包括标识节点的字段,值包括标识邻居节点的字段、标识该节点和邻居节点之间邻边的边长的字段、标识该邻居节点Rho的字段和标识该节点Rho的字段;
步骤32、对键值对按照键所包括的节点进行分区,键包括相同节点的键值对分配至同一分区;
步骤33、对于同一分区内的键值对按照键所包括的节点进行分组,键包括相同节点的键值对分配至同一组;
步骤35、经由Reduce作业,对每个节点,通过对属于同一组的键值对的值的迭代来遍历节点Rho、所有邻居节点Rho以及所有邻边信息,得出每个节点的离散度Delta,再结合预定规则来进行类标识。
10.如权利要求9所述的MapReduce平台上的虚拟人建立方法,其特征在于,步骤30还包括:
步骤31中,键还包括标识该邻居节点Rho的字段;
步骤34、对于属于同一组的键值对按照键所包括的邻居节点Rho进行排序。
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201410855499.4A CN104965846B (zh) | 2014-12-31 | 2014-12-31 | MapReduce平台上的虚拟人建立方法 |
PCT/CN2015/072486 WO2016106944A1 (zh) | 2014-12-31 | 2015-02-09 | MapReduce平台上的虚拟人建立方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201410855499.4A CN104965846B (zh) | 2014-12-31 | 2014-12-31 | MapReduce平台上的虚拟人建立方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN104965846A true CN104965846A (zh) | 2015-10-07 |
CN104965846B CN104965846B (zh) | 2018-10-02 |
Family
ID=54219882
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201410855499.4A Active CN104965846B (zh) | 2014-12-31 | 2014-12-31 | MapReduce平台上的虚拟人建立方法 |
Country Status (2)
Country | Link |
---|---|
CN (1) | CN104965846B (zh) |
WO (1) | WO2016106944A1 (zh) |
Cited By (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2016107297A1 (zh) * | 2014-12-31 | 2016-07-07 | 深圳市华傲数据技术有限公司 | MapReduce 平台上基于本地密度的聚类方法 |
CN109816029A (zh) * | 2019-01-30 | 2019-05-28 | 重庆邮电大学 | 基于军事操作链的高阶聚类划分算法 |
CN110728317A (zh) * | 2019-09-30 | 2020-01-24 | 腾讯科技(深圳)有限公司 | 决策树模型的训练方法、系统、存储介质及预测方法 |
CN112487250A (zh) * | 2019-09-11 | 2021-03-12 | 武汉斗鱼网络科技有限公司 | 识别养号账号群的方法及装置 |
CN112765660A (zh) * | 2021-01-25 | 2021-05-07 | 湖南大学 | 一种基于MapReduce并行聚类技术的终端安全性分析方法和系统 |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20130262485A1 (en) * | 2010-12-14 | 2013-10-03 | The Regents Of The University Of California | High Efficiency Prefix Search Algorithm Supporting Interactive, Fuzzy Search on Geographical Structured Data |
CN103544289A (zh) * | 2013-10-28 | 2014-01-29 | 公安部第三研究所 | 基于布控数据挖掘实现特征提取的方法 |
Family Cites Families (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1804882A (zh) * | 2006-01-25 | 2006-07-19 | 深圳市中科新业信息科技发展有限公司 | 一种虚拟人口系统及其建立方法 |
US10817840B2 (en) * | 2007-06-19 | 2020-10-27 | Red Hat, Inc. | Use of a virtual persona emulating activities of a person in a social network |
CN103902709A (zh) * | 2014-03-31 | 2014-07-02 | 安徽新华博信息技术股份有限公司 | 一种关联分析方法 |
CN104504264B (zh) * | 2014-12-08 | 2017-09-01 | 深圳市华傲数据技术有限公司 | 虚拟人建立方法及装置 |
-
2014
- 2014-12-31 CN CN201410855499.4A patent/CN104965846B/zh active Active
-
2015
- 2015-02-09 WO PCT/CN2015/072486 patent/WO2016106944A1/zh active Application Filing
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20130262485A1 (en) * | 2010-12-14 | 2013-10-03 | The Regents Of The University Of California | High Efficiency Prefix Search Algorithm Supporting Interactive, Fuzzy Search on Geographical Structured Data |
CN103544289A (zh) * | 2013-10-28 | 2014-01-29 | 公安部第三研究所 | 基于布控数据挖掘实现特征提取的方法 |
Non-Patent Citations (2)
Title |
---|
LAURENT GALLUCCIO 等: "Graph based k-means cluster", 《SIGNAL PROCESSING》 * |
冀素琴 等: "基于MapReduce的K-means 聚类集成", 《计算机工程》 * |
Cited By (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2016107297A1 (zh) * | 2014-12-31 | 2016-07-07 | 深圳市华傲数据技术有限公司 | MapReduce 平台上基于本地密度的聚类方法 |
CN109816029A (zh) * | 2019-01-30 | 2019-05-28 | 重庆邮电大学 | 基于军事操作链的高阶聚类划分算法 |
CN109816029B (zh) * | 2019-01-30 | 2023-12-19 | 重庆邮电大学 | 基于军事操作链的高阶聚类划分算法 |
CN112487250A (zh) * | 2019-09-11 | 2021-03-12 | 武汉斗鱼网络科技有限公司 | 识别养号账号群的方法及装置 |
CN112487250B (zh) * | 2019-09-11 | 2022-06-21 | 武汉斗鱼网络科技有限公司 | 识别养号账号群的方法及装置 |
CN110728317A (zh) * | 2019-09-30 | 2020-01-24 | 腾讯科技(深圳)有限公司 | 决策树模型的训练方法、系统、存储介质及预测方法 |
CN112765660A (zh) * | 2021-01-25 | 2021-05-07 | 湖南大学 | 一种基于MapReduce并行聚类技术的终端安全性分析方法和系统 |
Also Published As
Publication number | Publication date |
---|---|
CN104965846B (zh) | 2018-10-02 |
WO2016106944A1 (zh) | 2016-07-07 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US10484413B2 (en) | System and a method for detecting anomalous activities in a blockchain network | |
CN107193894B (zh) | 数据处理方法、个体识别方法及相关装置 | |
CN110519128B (zh) | 一种基于随机森林的操作系统识别方法 | |
CN104504264A (zh) | 虚拟人建立方法及装置 | |
CN104965846A (zh) | MapReduce平台上的虚拟人建立方法 | |
CN111932386B (zh) | 用户账号确定方法及装置、信息推送方法及装置、电子设备 | |
Yuan et al. | An improved network traffic classification algorithm based on Hadoop decision tree | |
CN110166344B (zh) | 一种身份标识识别方法、装置以及相关设备 | |
CN112700332B (zh) | 一种基于图计算的比特币账户聚类方法 | |
CN108520471A (zh) | 重叠社区发现方法、装置、设备及存储介质 | |
CN105678590A (zh) | 一种面向社交网络基于云模型的topN推荐方法 | |
CN109977131A (zh) | 一种房型匹配系统 | |
CN107871055A (zh) | 一种数据分析方法和装置 | |
CN106411704A (zh) | 一种分布式垃圾短信识别方法 | |
CN103414756B (zh) | 一种任务分发方法、分发节点及系统 | |
CN104978382A (zh) | MapReduce平台上基于本地密度的聚类方法 | |
Andi et al. | Association rule algorithm with FP growth for book search | |
CN115329078B (zh) | 文本数据处理方法、装置、设备以及存储介质 | |
CN107767278B (zh) | 社群层次结构构建方法和装置 | |
CN114896977A (zh) | 一种物联网实体服务信任值的动态评估方法 | |
Podaras | Measuring the accuracy levels regarding the dual business function criticality classifier | |
Wang et al. | Community detection with self-adapting switching based on affinity | |
Zhang et al. | Community detection based on structural balance in signed networks | |
CN104199828A (zh) | 一种基于事务日志数据的社会网络构建方法 | |
CN111626887A (zh) | 一种社交关系评估方法及装置 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant | ||
CP02 | Change in the address of a patent holder | ||
CP02 | Change in the address of a patent holder |
Address after: 518057 2203/2204, Building 1, Huide Building, North Station Community, Minzhi Street, Longhua District, Shenzhen, Guangdong Province Patentee after: SHENZHEN AUDAQUE DATA TECHNOLOGY Ltd. Address before: 518057 Rooms 713, 715 and 716, 7/F, Software Building, No. 9, High-tech Middle Road, High-tech Zone, Nanshan District, Shenzhen, Guangdong Province Patentee before: SHENZHEN AUDAQUE DATA TECHNOLOGY Ltd. |