一种数据聚类的方法、装置及Spark大数据平台与流程

文档序号:13219375阅读:157来源:国知局
技术领域本发明属于数字电视技术领域,尤其涉及一种数据聚类的方法、装置及Spark大数据平台。

背景技术:
随着现代通信技术的飞速发展以及多媒体电视的逐步普及,数字电视已经成为广大家庭获取信息的主要途径。技术的变革使得我们每天可以获取大量的电视用户行为数据,同时也面临着两方面的挑战:一方面是需要对这些繁杂数据进行实时解析与高效存储;另一方面是如何基于数据挖掘洞悉用户行为进而产生更高的经济效益。但传统的数据存储与数据挖掘方法在分析应用中存在着以下的缺陷:由于电视用户行为数据存在较多的关联矩阵,当用户量不断增长、节目不断增加时,传统存储数据的矩阵大小就会出现几何式的增长,会占用大量的硬盘空间,增加资源消耗。

技术实现要素:
本发明实施例提供了一种数据聚类的方法、装置及Spark大数据平台,旨在解决现有技术提供的数据聚类方法,进行聚类处理的数据的数据量非常庞大,占用大量的硬盘空间,增加资源消耗的问题。一方面,提供一种数据聚类的方法,所述方法包括:根据奇异值分解法SVD将矩阵A分解成第一矩阵、第二矩阵和第三矩阵,并存储所述第一矩阵、第二矩阵和第三矩阵;读取所述第一矩阵、所述第二矩阵和所述第三矩阵,并将所述第一矩阵、所述第二矩阵和所述第三矩阵相乘,得到所述矩阵A中的数据;利用聚类算法对所述矩阵A中的数据进行分类处理,得到一颗聚类树。进一步地,所述利用聚类算法对所述矩阵A中的数据进行分类处理,得到一颗聚类树,包括:利用基于K-均值优化的层次聚类方法对所述矩阵A中的数据进行分类处理,得到一颗聚类树。进一步地,所述利用基于K-均值优化的层次聚类方法对所述矩阵A中的数据进行分类处理,得到一颗聚类树,包括:应用K-均值聚类算法对所述矩阵A中的数据进行分类处理,生成K个约束类;将每一个约束类作为一个数据集,应用凝聚层次聚类算法对每一个数据集进行分类处理,生成K颗子聚类树;将所述K颗子聚类树作为聚类处理所产生的中间类,再应用凝聚层次聚类算法将所述K颗子聚类树合并成一颗聚类树。进一步地,所述利用聚类算法对所述矩阵A中的数据进行分类处理,得到一颗聚类树,包括:根据所述矩阵A中的数据,生成弹性分布式数据集RDD;对所述RDD数据集进行处理,生成K个第三聚类中心;根据所述K个第三聚类中心,应用K-均值聚类算法对所述RDD数据集中的数据进行分类处理,生成K个约束类;将所述K个约束类平均分配至每个集群的工作节点进行单个约束类的层次聚类,生成K颗子聚类树;将所述K颗子聚类树作为聚类处理所产生的中间类,再应用凝聚层次聚类算法将所述K颗子聚类树合并成一颗聚类树。进一步地,所述对所述RDD数据集进行处理,生成K个第三聚类中心,包括:步骤A、利用Map操作,计算所述RDD数据集中的数据与K个第一聚类中心的距离MapRDD;步骤B、利用Reduce操作,对所述MapRDD进行处理,生成K个第二聚类中心;步骤C、确定所述K个第二聚类中心与所述K个第一聚类中心之间的距离;步骤D、若所述距离大于预设阈值,则用所述第二聚类中心替代所述第一聚类中心,返回步骤A,直至迭代形成K个第三聚类中心。另一方面,提供一种数据聚类的装置,所述装置包括:矩阵分解单元,用于根据奇异值分解法SVD将矩阵A分解成第一矩阵、第二矩阵和第三矩阵,并存储所述第一矩阵、第二矩阵和第三矩阵;数据获取单元,用于读取所述第一矩阵、所述第二矩阵和所述第三矩阵,并将所述第一矩阵、所述第二矩阵和所述第三矩阵相乘,得到所述矩阵A中的数据;聚类处理单元,用于利用聚类算法对所述矩阵A中的数据进行分类处理,得到一颗聚类树。进一步地,所述聚类处理单元利用基于K-均值优化的层次聚类方法对所述矩阵A中的数据进行分类处理,得到一颗聚类树。进一步地,所述聚类处理单元,包括:第一约束类生成模块,用于应用K-均值聚类算法对所述矩阵A中的数据进行分类处理,生成K个约束类;第一子聚类树生成模块,用于将每一个约束类作为一个数据集,应用凝聚层次聚类算法对每一个数据集进行分类处理,生成K颗子聚类树;第一聚类树生成模块,用于将所述K颗子聚类树作为聚类处理所产生的中间类,再应用凝聚层次聚类算法将所述K颗子聚类树合并成一颗聚类树。进一步地,所述聚类处理单元,包括:RDD数据集生成模块,用于根据所述矩阵A中的数据,生成弹性分布式数据集RDD;第三聚类中心生成模块,用于对所述RDD数据集进行处理,生成K个第三聚类中心;第二约束类生成模块,用于根据所述K个第三聚类中心,应用K-均值聚类算法对所述RDD数据集中的数据进行分类处理,生成K个约束类;第二子聚类树生成模块,用于将所述K个约束类平均分配至每个集群的工作节点进行单个约束类的层次聚类,生成K颗子聚类树;第二聚类树生成模块,用于将所述K颗子聚类树作为聚类处理所产生的中间类,再应用凝聚层次聚类算法将所述K颗子聚类树合并成一颗聚类树。进一步地,所述第三聚类中心生成模块,包括:第一距离确定子模块,用于利用Map操作,计算所述RDD数据集中的数据与K个第一聚类中心的距离MapRDD;第二中心确定子模块,用于利用Reduce操作,对所述MapRDD进行处理,生成K个第二聚类中心;第二距离确定子模块,用于确定所述K个第二聚类中心与K个第一聚类中心之间的距离;第三中心确定子模块,用于若所述第二距离确定子模块确定的距离大于预设阈值,则用所述第二聚类中心替代所述第一聚类中心,并返回调用所述第一距离确定子模块,直至迭代形成K个第三聚类中心。再一方面,提供一种Spark大数据平台,所述Spark大数据平台包括如上所述的数据聚类的装置。在本发明实施例,将矩阵A分解成第一矩阵、第二矩阵和第三矩阵,这三个矩阵的面积之和远远小于矩阵A的面积,因此在存储矩阵A时,只需存储第一矩阵、第二矩阵和第三矩阵,可以节省硬盘空间,减少资源消耗。后续,在对矩阵A进行聚类处理时,可以将三个矩阵相乘,得到三者之积,对三者之积进行聚类处理,以对数据进行分类,洞悉用户的行为,挖掘不同用户的内在价值,为后续的实时推荐与营销活动提供支撑。附图说明图1是本发明实施例一提供的数据聚类的方法的实现流程图;图2是本发明实施例一提供的基于K-均值优化的层次聚类并行算法的执行过程示意图;图3是本发明实施例二提供的数据聚类的装置的结构框图。具体实施方式为了使本发明的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本发明进行进一步详细说明。应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。在本发明实施例中,先根据奇异值分解法SVD将矩阵A分解成第一矩阵、第二矩阵和第三矩阵,并存储所述第一矩阵、第二矩阵和第三矩阵;再读取所述第一矩阵、所述第二矩阵和所述第三矩阵,并将所述第一矩阵、所述第二矩阵和所述第三矩阵相乘,得到所述矩阵A中的数据;最后利用聚类算法对所述矩阵A中的数据进行分类处理,得到一颗聚类树。以下结合具体实施例对本发明的实现进行详细描述:实施例一图1示出了本发明实施例一提供的数据聚类的方法的实现流程,详述如下:在步骤S101中,根据奇异值分解法SVD将矩阵A分解成第一矩阵、第二矩阵和第三矩阵,并存储所述第一矩阵、第二矩阵和第三矩阵。在本发明实施例中,矩阵A中存储的是电视用户行为数据。电视用户行为主要是指用户在观看电视过程中所呈现出来的规律,可以用某些特征量的统计值或特征量的关联关系定量或定性表示,每天的用户日志信息解析后会存在比较多的用户行为关联矩阵。下面举例简单说明如下:首先,用矩阵A来表示一百万电视用户与五万部电影之间的关联性,在这个矩阵中每一行对应一个用户,每一列对应一部电影。A=a11...a1j...a1n...............ai1...aij...ain...............am1...amj...amn]]>在矩阵A中,m=1,000,000,n=50,000;第i行,第j列的元素表示的是第i个用户观看第j个电影的时长(或其它处理加权值)。可以发现这个矩阵非常大,即有500亿个元素。根据奇异值分解法SVD,可以得到下述全等公式:Am*n=Um*n∑r*rVn*r其中,U为左奇异向量单位正交矩阵,∑为奇异值对角阵,V为右奇异向量单位正交矩阵,r为矩阵A的秩(Rank),r<=n。奇异值与矩阵特征值类似,在矩阵Σ中也是从大到小排列,而且奇异值的衰减速度特别快,在很多情况下,前10%甚至1%的奇异值的和占了全部的奇异值之和的99%以上了。也就是说,可以用前d大的奇异值来近似描述矩阵(这里取d=100,即前100个大奇异值),因此可以将矩阵A近似分解成三个小矩阵相乘,如下式所示:A1,000,000*50,000≈U1,000,000*100∑100*100V50,000*100其中,矩阵U为一百万乘以一百,矩阵∑为一百乘一百,矩阵V为五万乘以一百。这三个矩阵的面积之和(在存储观点来说,矩阵面积越小,存储量越小,三个矩阵的元素总数加起来总计为1.05亿,仅仅为矩阵A的五百分之一)要远远小于原始的矩阵A,如果想要压缩空间来表示原矩阵A,只需存储这三个矩阵:U、Σ、V就可以了。而且这三个矩阵都有非常清晰的物理含义:第一个矩阵U中的每一行表示相关的一类电影,其中每个非零的元素表示的是这类电影中每个电影的重要性(相关性),数值越大越相关。第二个矩阵∑表示用户与电影之间的相关性。第三个矩阵V中的每一列表示同一电影中的一类用户,其中每个元素表示每个用户之间的相关性。将矩阵A分解为矩阵U、矩阵∑和矩阵V后,存储矩阵U、矩阵∑和矩阵V在Spark大数据平台中。在步骤S102中,读取所述第一矩阵、所述第二矩阵和所述第三矩阵,并将所述第一矩阵、所述第二矩阵和所述第三矩阵相乘,得到所述矩阵A中的数据。在本发明实施例中,若需要对矩阵A中的数据进行分类处理,则Spark大数据平台先从自身的存储介质中读取矩阵U、矩阵∑和矩阵V,并将矩阵U、矩阵∑和矩阵V相乘,得到矩阵A中的数据。在步骤S103中,利用聚类算法对所述矩阵A中的数据进行分类处理,得到一颗聚类树。在本发明实施例中,利用聚类算法对步骤S102中计算得到的矩阵A中的数据进行分类处理,得到一颗聚类树。具体的,可以采用传统的层次聚类算法对矩阵A中的数据进行分类处理,得到一颗聚类树。层次聚类算法是一种常用的数据聚类的方法,但应用存在一定局限性。一方面,由于其算法使用距离矩阵,所以它的时间和空间复杂性都很高,数据量较大时会导致计算量几何式增加;另一方面,当它一旦一组对象合并后,它已做的处理便不能撤消和更改,如果某一步没有很好的进行合并,则可能会导致低质量的聚类效果。优选地,在本发明实施例中,利用基于K-均值优化的层次聚类方法对所述矩阵A中的数据进行分类处理,得到一颗聚类树。具体的,所述利用基于K-均值优化的层次聚类方法对所述矩阵A中的数据进行分类处理,得到一颗聚类树,包括以下步骤:步骤1、应用K-均值聚类算法对所述矩阵A中的数据进行分类处理,生成K个约束类。步骤2、将每一个约束类作为一个数据集,应用凝聚层次聚类算法对每一个数据集进行分类处理,生成K颗子聚类树;步骤3、将所述K颗子聚类树作为聚类处理所产生的中间类,再应用凝聚层次聚类算法将所述K颗子聚类树合并成一颗聚类树。利用基于K-均值优化的层次聚类方法对所述矩阵A中的数据进行分类处理的优点在于:既可以因使用K-均值聚类算法从数据集的全局特征得益,又可以从凝聚层次聚类算法所使用的局部特征得益。上述两个问题的具体优化原理如下:1)、首先K-均值聚类算法效率很高,基于K-均值聚类算法生成的约束类,再做凝聚层级聚类,可以降低凝聚层次聚类算法的算法复杂度,基于K-均值优化的层次聚类方法的聚类效率会较传统的凝聚层次聚类算法有比较大的提升。2)、在生成约束类的过程中,由于K-均值聚类算法在计算中不断进行迭代,对于某一次分类错误的数据点会进行重新计算与分类,可以纠正某一次迭代中所出现的聚类错误,因此基于约束类的凝聚层次聚类算法可以避免低质量聚类的出现。由于经典的数据聚类算法都是单机环境下的,当要处理的数据是海量数据时,不能很好的完成数据挖掘任务,所以需要将数据挖掘和其它技术结合实现挖掘算法的并行化,利用多机的资源,提高挖掘任务的效率。优选地,在本发明实施例中,采用基于K-均值优化的层次聚类并行算法对矩阵A中的数据进行分类处理,得到一颗聚类树。图2示出了基于K-均值优化的层次聚类并行算法的执行过程,其中,图2中示出的聚类中心为本发明实施例中的第一聚类中心,图2中示出的新的聚类中心为本发明实施例中的第二聚类中心。具体的,基于K-均值优化的层次聚类并行算法包括以下实现步骤,:步骤11、根据所述矩阵A中的数据,生成弹性分布式数据集RDD。Spark大数据平台从分布式文件中读取矩阵U、矩阵∑和矩阵V,并将矩阵U、矩阵∑和矩阵V相乘,得到矩阵A中的数据,并根据所述矩阵A中的数据,生成弹性分布式数据集(ResilientDistributedDatasets,RDD)。步骤12、对所述RDD数据集进行处理,生成K个第三聚类中心。具体的,Spark大数据平台根据以下步骤对RDD数据集进行处理,生成K个第三聚类中心:步骤21、利用Map操作,计算所述RDD数据集中的数据与K个第一聚类中心的距离MapRDD。其中,所述K个第一聚类中心是随机从矩阵A中的数据抽取出的K个数据,将所述K个数据作为初始聚类中心。步骤22、利用Reduce操作,对所述MapRDD进行处理,生成K个第二聚类中心。步骤23、确定所述K个第二聚类中心与K个第一聚类中心之间的距离。步骤24、若所述距离大于预设阈值,则用所述第二聚类中心替代所述第一聚类中心,返回步骤A,直至迭代形成K个第三聚类中心。步骤13、根据所述K个第三聚类中心,应用K-均值聚类算法对所述RDD数据集中的数据进行分类处理,生成K个约束类。步骤14、将所述K个约束类平均分配至每个集群的工作节点进行单个约束类的层次聚类,生成K颗子聚类树。步骤15、将所述K颗子聚类树作为聚类处理所产生的中间类,再应用凝聚层次聚类算法将所述K颗子聚类树合并成一颗聚类树。本实施例,将矩阵A分解成第一矩阵、第二矩阵和第三矩阵,这三个矩阵的面积之和远远小于矩阵A的面积,因此在存储矩阵A时,只需存储第一矩阵、第二矩阵和第三矩阵,可以节省硬盘空间,减少资源消耗。后续,在对矩阵A进行聚类处理时,可以将三个矩阵相乘,得到三者之积,对三者之积进行聚类处理,以对数据进行分类,洞悉用户的行为,挖掘不同用户的内在价值,为后续的实时推荐与营销活动提供支撑。另外,可以利用基于K-均值优化的层次聚类方法对矩阵A中的数据进行分类处理,既可以因使用K-均值聚类算法从数据集的全局特征得益,又可以从凝聚层次聚类算法所使用的局部特征得益,极大地提高了聚类质量。此外,还可以基于K-均值优化的层次聚类并行算法对矩阵A中的数据进行分类处理,可以充分的利用多机资源,提高挖掘任务的效率。本领域普通技术人员可以理解实现上述各实施例方法中的全部或部分步骤是可以通过程序来指令相关的硬件来完成,相应的程序可以存储于一计算机可读取存储介质中,所述的存储介质,如ROM/RAM、磁盘或光盘等。实施例二图3示出了本发明实施例二提供的数据聚类的装置的具体结构框图,为了便于说明,仅示出了与本发明实施例相关的部分。该数据聚类的装置可以是内置于Spark大数据平台中的软件单元、硬件单元或者软硬件结合的单元,该数据聚类的装置3包括:矩阵分解单元31、数据获取单元32和聚类处理单元33。其中,矩阵分解单元31,用于根据奇异值分解法SVD将矩阵A分解成第一矩阵、第二矩阵和第三矩阵,并存储所述第一矩阵、第二矩阵和第三矩阵;数据获取单元32,用于读取所述第一矩阵、所述第二矩阵和所述第三矩阵,并将所述第一矩阵、所述第二矩阵和所述第三矩阵相乘,得到所述矩阵A中的数据;聚类处理单元33,用于利用聚类算法对所述矩阵A中的数据进行分类处理,得到一颗聚类树。具体的,所述聚类处理单元33利用基于K-均值优化的层次聚类方法对所述矩阵A中的数据进行分类处理,得到一颗聚类树。具体的,所述聚类处理单元33包括:第一约束类生成模块,用于应用K-均值聚类算法对所述矩阵A中的数据进行分类处理,生成K个约束类;第一子聚类树生成模块,用于将每一个约束类作为一个数据集,应用凝聚层次聚类算法对每一个数据集进行分类处理,生成K颗子聚类树;第一聚类树生成模块,用于将所述K颗子聚类树作为聚类处理所产生的中间类,再应用凝聚层次聚类算法将所述K颗子聚类树合并成一颗聚类树。具体的,所述聚类处理单元33包括:RDD数据集生成模块,用于根据所述矩阵A中的数据,生成弹性分布式数据集RDD;第三聚类中心生成模块,用于对所述RDD数据集进行处理,生成K个第三聚类中心;第二约束类生成模块,用于根据所述K个第三聚类中心,应用K-均值聚类算法对所述RDD数据集中的数据进行分类处理,生成K个约束类;第二子聚类树生成模块,用于将所述K个约束类平均分配至每个集群的工作节点进行单个约束类的层次聚类,生成K颗子聚类树;第二聚类树生成模块,用于将所述K颗子聚类树作为聚类处理所产生的中间类,再应用凝聚层次聚类算法将所述K颗子聚类树合并成一颗聚类树。具体的,所述第三聚类中心生成模块包括:第一距离确定子模块,用于利用Map操作,计算所述RDD数据集中的数据与K个第一聚类中心的距离MapRDD;第二中心确定子模块,用于利用Reduce操作,对所述MapRDD进行处理,生成K个第二聚类中心;第二距离确定子模块,用于确定所述K个第二聚类中心与K个第一聚类中心之间的距离;第三中心确定子模块,用于若所述第二距离确定子模块确定的距离大于预设阈值,则用所述第二聚类中心替代所述第一聚类中心,并返回调用所述第一距离确定子模块,直至迭代形成K个第三聚类中心。本发明实施例提供的数据聚类的装置3可以应用在前述对应的方法实施例一中,详情参见上述实施例一的描述,在此不再赘述。值得注意的是,上述系统实施例中,所包括的各个单元只是按照功能逻辑进行划分的,但并不局限于上述的划分,只要能够实现相应的功能即可;另外,各功能单元的具体名称也只是为了便于相互区分,并不用于限制本发明的保护范围。以上所述仅为本发明的较佳实施例而已,并不用以限制本发明,凡在本发明的精神和原则之内所作的任何修改、等同替换和改进等,均应包含在本发明的保护范围之内。
当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1