一种社交网络的用户聚类方法、装置以及计算机设备与流程

文档序号:20685062发布日期:2020-05-08 18:45阅读:305来源:国知局
一种社交网络的用户聚类方法、装置以及计算机设备与流程

本发明属于机器学习与数据挖掘领域,涉及的是聚类问题中的一种快速高效的k-means聚类算法及其在社交网络中的应用,具体为一种社交网络的用户聚类方法、装置以及计算机设备。



背景技术:

社交网络分析是人类社会学分自然科学相结合的产物,关于社交网络的研究,包括了电子邮件、微信、qq、新浪微博、twitter、facebook等等网络,而在社交网络中,存在着各式各样的对象,而想要将这些对象进行分类,最好的一个方法就是使用聚类算法,聚类分析是数据挖掘的一个重要领域,它的目的是发掘相似度高的对象组合成的团体,使得团体内的相似度高,而团体间的相似度小的特点。k-means聚类算法又是聚类算法中最常用、简单有效的算法之一。标准k-means聚类算法是由steinhaus在1955年、lloyd在1957年、ball&hall在1965年、mcqueen在1967年分别在各自的不同的科学研究领域独立提出的。聚类分析是对于统计数据分析的一门技术,如今在许多领域受到广泛应用,包括机器学习,数据挖掘,模式识别,图像分析以及生物信息等。

传统的k-means算法在处理小批量数据场景下,表现得很好,不管是在效率上,还是在聚类的效果上。然而在社交网络中,需要对海量的用户数据进行处理,那么聚类算法的效率就显得尤为重要了。而以往的研究主要是用传统的一些聚类算法来做技术支撑,但传统的聚类算法在大数据场景下变得低效,主要表现在,收敛速度极慢、算法的时间复杂度高、对噪声和离群点敏感、聚类结果依赖初始的聚类中心等方面。

针对传统的k-means算法存在的问题,主要的改进可以分为以下三个方面,一是对于初始聚类中心的选取上;二是近似k-means;三是加速k-means。davidarthur等提出了一种基于采样方法(d2-sampling)的初始聚类中心点选择方法—k-means++。其核心为:最开始的质心间两两的距离要尽可能远。这是一种目前最为广泛应用的初始化聚类中心的方法,虽然这种方法改进了标准k-means算法随机选取初始中心点的缺点,其内在的有序性导致了它的可扩展型不足,从而使得算法无法并行扩展而应用在超大规模数据集上。在针对海量数据进行聚类的时候,近似k-means是一种非常有效的方法。近年来,学者们从不同的角度出发提出了很多种近似k-means方法:将数据点存储在k-d树中,并为树的每个节点维护候选中心的子集,这通过避免将每个点与所有中心点进行比较来消除计算时间。另一种方案是基于对数据点进行二次采样。这种方法是在子采样数据点上运行k均值,而它的扩展是以递增方式添加剩余点,并重新运行k-means以获得更精细的聚类。前一种方案不适用于许多应用,如社交网络应用中的聚类不太准确并且性能较低。而精确加速的k-means聚类方法也有很多种,但针对社交网络的海量数据场景下,仍然存在额外的时空消耗、不自适应等问题。



技术实现要素:

本发明的目的是为了解决在社交网络场景下对海量数据进行聚类的所引起的效率问题,针对性的提出了一种基于划分的快速高效k-means聚类算法,具体提供了一种社交网络的用户聚类方法、装置以及计算机设备。

一种社交网络的用户聚类方法,所述方法包括:

步骤1:获取社交网络中各个待聚类用户的账户信息,包括用户id、用户地区、用户性别、用户粉丝数、用户关注数、内容标签以及发布时间;

步骤2:将社交网络中各个账户信息分别向量化,形成向量数据集;

步骤3:从所述向量数据集中选择多个向量分别作为初始聚类中心,按照初始聚类中心对用户分簇,按照分簇后的结果或聚类后的结果更新聚类中心,并按照聚类中心继续对各个用户聚类;直到聚类中心不再发生变化时,得到聚类后的多个分类,每个分类至少包括一个待聚类用户。

另一方面,本发明还提供了一种社交网络的用户聚类装置,包括:

数据接口模块,用于接入社交网络中各个待聚类用户的账户信息;

数据整形模块,用于对数据接口模块接入的账户信息进行整形,形成向量数据集;

聚类结果模块,用于对向量数据集中的向量进行处理,得到聚类后的多个分类,每个分类至少包括一个待聚类用户。

本发明的有益效果:

本发明在社交网络海量数据处理的场景下,首先通过数据预处理,将社交网络的用户账户信息数据向量化,本发明所提供的改进的初始聚类中心的选择方法使得最终的聚类结果更加精确,而本发明中在改进的k-means框架中,由于定义了“核心域”这一概念,并且为每个簇球搜索各自的近邻簇,最后使得所有的计算量在限定在一个很小的范围之内,进而省去了原本需要进行的超大计算量,提高了对海量社交网络数据的聚类的效率。本发明在理论上可以将这个算法的时间复杂度由原来每轮迭代的o(nk)降低到o(k2+n)。这对于超大规模的社交网络用户聚类问题来说,本发明可以极大的降低计算量,进而提高了整个方法、装置的效率。

附图说明

为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一个简单示意图。

图1是本发明一个实施例的整体流程图;

图2是本发明另一个实施例的整体流程图;

图3是对社交网络数据的一个提取以及处理流程图;

图4是本发明的一个实施例中改进过后的k-means聚类框架的详细流程图;

图5是本发明的另一个实施例中改进过后的k-means聚类框架的详细流程图;

图6是本发明的一种社交网络的用户聚类装置的示意图;

图7是本发明的数据整形模块的示意图;

图8是本发明的聚类结果模块的示意图。

具体实施方式

为了使本发明的目的、技术方案及优点更加清楚明白,以下结合附图对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。

如图1所示,一种社交网络的用户聚类方法,包括:

步骤1:获取社交网络中各个待聚类用户的账户信息,包括用户id、用户地区、用户性别、用户粉丝数、用户关注数、内容标签以及发布时间;

步骤2:将社交网络中各个账户信息分别向量化,形成向量数据集;

步骤3:从所述向量数据集中选择多个向量分别作为初始聚类中心,按照初始聚类中心对用户分簇,按照分簇后的结果或聚类后的结果更新聚类中心,并按照聚类中心继续对各个用户聚类;直到聚类中心不再发生变化时,得到聚类后的多个分类,每个分类至少包括一个待聚类用户。

在另一个实施例中,如图2所示,一种社交网络的用户聚类方法还可以包括:

获取社交网络(例如:新浪微博)中用户账户信息,包含了用户id、用户地区、用户性别、用户粉丝数、用户关注数、微博内容标签、发布时间等信息;

将用户信息预处理后进行向量化;

用改进过的方法进行初始聚类中心的选择;

将所有处理过的数据集,输入到改进后的k-means算法框架中,经过不断迭代直到算法收敛;

输出精确的聚类结果。

在一个实施例中,如图3所示,是对社交网络数据的一个提取以及处理流程图,所述方法包含以下过程:

对社交网络数据进行数据清洗,并对用户的特征数据进行预处理;

对数据的格式进行转换,包括一部分数据采用数字化向量处理,另一部分数据采用语义化向量处理;例如用户的id使用归一化将其范围限定在0-1之间、用户性别(比如:男用1表示,女用0表示),用户地区用数字表示(例如:北京001,上海002,重庆003等),将语义信息通过语句转向量sen2vec方法转化成语义向量,包括先使用预训练的词向量转化语义信息中的单词,对所有单词进行加权处理,再使用主成分分析法对整个语义信息集进行处理,得到每一条语义信息的向量表示。在以上步骤基础上,将用户数据信息向量化。

在一个实施例中,如图4所示,是改进过后的k-means聚类框架的详细流程图,包含了整个聚类的详细过程。所述方法包含以下步骤:

步骤301:用改进的初始聚类中心方法从向量数据集中选取k个向量作为初始聚类中心;

步骤302:根据距离最近原则将所有的向量划分到距离它最近的聚类中心所代表的簇球中;

步骤303:计算每个簇球中所有向量的均值作为新的聚类中心,并计算簇球半径;

步骤304:根据簇球半径,和聚类中心之间的距离关系,找出每个簇的近邻簇;

步骤305:计算每个向量跟它所在近邻簇聚类中心之间的距离,根据就近原则将其划分到距离最近的簇球内;

步骤306:重复步骤303~步骤305,直到聚类中心不再发生变化时,输出聚类结果。

在一个实施例中,所述步骤301包括:

步骤3011:从向量数据集中随机选择一个向量数据作为第一个初始聚类中心;

步骤3012:使用马尔科夫模特卡罗方法从向量数据集中采取长度为3k的马尔科夫链,将马尔科夫链上的3k个数据作为候选的初始聚类中心;

步骤3013:对这3k个向量数据集中的候选初始聚类中心,采用普里姆最小生成树的方法,重复将最近的两个初始聚类中心合并成一个新的初始聚类中心,直到最后只剩下k个数据当作初始聚类中心。

当然,上述马尔科夫模特卡罗方法采集的数据可以为4k个向量数据,也可以为4.5k个向量数据等等。

在一个实施例中,所述步骤301还可以包括:

从向量数据集中采用蓄水库抽样(reservoidsampling)的方式随机选择一个向量数据作为第一个初始聚类中心;其中,将向量数据集中的前k个向量都放入到水库中,对之后的第m个元素,以k/m的概率替换掉水库中的某一个向量,将最终选择出的k个向量作为初始聚类中心。

在另一种实施例中,如图5所示,所述步骤3还包括:

步骤311:首先将数据集用标准的k-means流程进行第一次迭代,将所有的数据分配到距离它最近的中心点所在的簇中:

b(xi)=argminj=1...k{(dis(xi,cj)}

cj表示聚类中心,xi是样本空间中的任意一个样本。

步骤312:根据以上的分配步骤,更新所有的聚类中心:

|n|表示的是分配到cj.中的数据样本。

步骤313:计算每个簇球的半径,(半径定义为簇球中距离中心点最远的数据点与这个中心点之间的距离)半径的定义为:

ri=max(dis(xi,ci))for{xi|xi∈cj}。

步骤314:根据每个簇球的半径信息和任意两簇球之间的距离关系,找出每个簇的近邻簇(近邻簇定义为两个簇的中心点之间的距离的一半小于当前簇的半径,则为近邻簇);

步骤315:对每个簇的近邻簇按照由近到远的顺序进行排序;

步骤316:过滤掉每个簇球中“稳定域”里面的数据(“稳定域”定义为距离聚类中心很近,并且在本轮迭代中仍然会属于当前簇球的数据点所组成的集合);

步骤317:对每个簇球中的“稳定域”以外的数据进行最近原则分配,而可供分配的范围是每个簇球根据步骤315中的排过序的近邻簇;

步骤318:重复步骤312到步骤317,直到所有的中心点不再变化为止。

另外,在一个具体实施例中,本发明的向量数据集采用从twitter上爬取的用户数据和新浪微博上的用户数据,分别包含了376万条和620万条用户数据。在所有的社交网络用户数据经过预处理过后,上述两个数据集在本发明所提出的方法框架下运行聚类,结果显示比传统的k-means算法平均快51倍,并且聚类结果(评价指标为wcssd,即簇内平方和,簇内平方和越小越优)比传统的社交用户聚类算法减小3.1%。

基于本发明的同一构思,本发明还提出了一种社交网络的用户聚类装置,如图6所示,包括:

数据接口模块,用于接入社交网络中各个待聚类用户的账户信息;

数据整形模块,用于对数据接口模块接入的账户信息进行整形,形成向量数据集;

聚类结果模块,用于对向量数据集中的向量进行处理,得到聚类后的多个分类,每个分类至少包括一个待聚类用户。

如图7所示,所述数据整形模块包括数字向量生成单元和语义向量生成单元,所述数字向量生成单元用于将账户信息的部分数据转换成数字向量,所述语义向量生成模块用于将账户信息的另一部分数据转换成语义向量。

如图8所示,所述聚类结果模块包括初始聚类中心选择单元、计算单元、结果运算单元;所述聚类中心选择单元用于选择出向量数据集中的初始聚类中心;所述计算单元用于计算簇球的半径距离以及任意两个簇球之间的距离关系;所述结果运算单元用于根据聚类中心划分出聚类结果。

所述初始聚类中心选择单元包括随机选择子单元、固定选择子单元以及合并单元;所述随机选择子单元用于随机选择一个初始聚类中心,所述固定选择子单元用于根据马尔科夫模特卡罗方法从向量数据集中采取多个初始聚类中心,所述合并单元用于根据普里姆最小生成树的方法,将最近的两个初始聚类中心合并成一个新的初始聚类中心。

另外本发明还提供了一种计算机设备,包括存储器、处理器以及存储在存储器上并可在处理器上运用的计算机程序,所述处理器执行所述程序时实现本发明提供的用户聚类方法。

本发明的一个实施例中,本发明采用python程序设计语言,能够在主流计算机平台上运行。本实施所使用的操作系统为centos6.5,要求cpu为inteli5,内存8gb以上,硬盘空间要求32gb及以上。

可以理解的是,本发明的方法、装置和计算机设备的部分特征可以相互引用,本发明不再一一赘述。

本领域普通技术人员可以理解上述实施例的各种方法中的全部或部分步骤是可以通过程序来指令相关的硬件来完成,该程序可以存储于一计算机可读存储介质中,存储介质可以包括:rom、ram、磁盘或光盘等。

以上所举实施例,对本发明的目的、技术方案和优点进行了进一步的详细说明,所应理解的是,以上所举实施例仅为本发明的优选实施方式而已,并不用以限制本发明,凡在本发明的精神和原则之内对本发明所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。

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