一种增量式密度峰搜索聚类方法与流程

文档序号:14129750阅读:160来源:国知局
本发明属于面向实时应用的动态数据分析与处理
技术领域
,具体涉及通过增量式计算和调整局部数据对象进行聚类的机器学习方法,增量式发现动态数据集内隐藏的知识结构特征和分布规律的方法,适用于网络检测、信号分析和信息检索等实时应用领域。
背景技术
:在机器学习方法中,聚类分析是一种能够通过数据对象之间的相似性度量发现数据集内隐藏的知识结构特征和分布规律的有效途径,适用于网络检测、信号分析、数据压缩和信息检索等应用领域。随着计算机和网络技术的迅猛发展,人们获取数据的途径和方式变得越来越丰富,数据产量和更新速度促使静态数据规模日益增大,这也对聚类分析的实时性提出更高要求。《科学》(science,vol.344,no.6191,pp.1492-1496,2014)所公开的“快速密度峰搜索聚类”(clusteringbyfastsearchandfindofdensitypeaks)一文基于高密度簇中心应由其低密度邻居点环绕这一认识,提出一种利用数据对象之间的距离测算数据对象的局部密度及其与高密度邻居的距离,进而快速实现数据分簇的新型静态聚类方法。经美国加州大学欧文分校提供的机器学习标准数据集等多种数据源检验,该方法能够有效发现具有任意空间结构和可变密度簇,同时可实现自适应簇数目估计和噪点识别,相比于其他类型的静态聚类方法,体现出较好的数据集适应性。为了更好地满足实时应用需求,同时降低数据存储开销,许多实际应用通常仅维护动态数据集,即在新增部分数据对象的同时删除部分历史数据对象。显然,每当数据集发生变化时,直接使用快速密度峰搜索聚类方法从完整数据集中挖据有价值信息并非高效率的处理手段。因为,对数据集中大部分历史数据对象进行重新聚类势必产生大量的冗余计算,其运算效率的降低甚至导致聚类分析无法跟上数据集的更新速度。原则上,对动态数据集的高性能聚类分析,必须能够在保证动态聚类效果等价于静态聚类效果的前提下,通过深入解析增量数据对象带来的特殊计算需求和局部制约因素来大幅改善执行效率、降低系统开销。因此,将快速密度峰搜索聚类方法拓展为一种适用于动态数据集的增量式密度峰搜索聚类方法,获得适用于动态数据集的高性能聚类分析方法具有重要的现实意义和应用价值。技术实现要素:本发明的目的是提出一种增量式密度峰搜索聚类方法,面向新增数据对象依次逐项插入数据集的细粒度应用场合,通过增量式计算和更新新增数据对象及其近邻的密度表、增量式构建和更新新增数据对象与局部历史数据对象的邻居关系表、增量式测算和更新新增数据对象与局部历史数据对象的邻居距离表,实现针对动态数据集的密度峰增量式搜索和簇头发现,从而以较低的计算开销配合完成簇创建和簇合并,实时输出增量式聚类分析结果,有效提高运算效率。本发明增量式密度峰搜索聚类方法,设数据集已存放数据总数为n的历史数据对象,每一数据对象含有特征维度为m的实数据,令数据对象的密度表为邻居关系表为邻居距离表为邻居半径为r,新增数据对象为其特征在于具体操作步骤为:第一步:根据欧式距离测算关系式dn=||x-xn||,符号||·||代表向量范数运算,依次测算新增数据对象x与数据集x中的历史数据对象之间的欧式距离,其中令数据编号为n的第n个历史数据对象xn∈x与新增数据对象x之间的欧式距离为dn,且数据编号n从1依次递增至数据总数n;第二步:从数据集x中构造新增数据对象x的邻居集q,其中邻居集中任一数据对象与新增数据对象x之间的欧式距离dn均应满足邻居集选择条件式dn≤r;如果邻居集q为空集,则跳转至第六步;如果邻居集q非空,则将密度表p中数据编号对应于邻居集q中所有数据对象的密度值增1;第三步:从邻居集q中取出一个邻居关系尚未更新的数据对象作为当前数据对象,然后从数据集x中构造关于该数据对象的邻居关联集其中假设邻居关联集u中任一数据对象的密度为p,令邻居集q中当前数据对象的密度为q,其未更新之前的历史密度为q-1,则邻居关联集u中任一数据对象与邻居集q中当前数据对象之间应满足邻居关联集选择条件式q-1≤p≤q;第四步:如果邻居关联集u非空,则依欧式距离测算关系式依次测算邻居关联集u中所有数据对象至邻居集q中当前数据对象之间的距离;当此距离小于邻居关联集u中某数据对象对应的历史邻居距离时,则将邻居集q中当前数据对象设定为邻居关联集u中该数据对象的邻居,同时更新与邻居关联集u中该数据对象对应的邻居关系表r和邻居距离表d的相应表项;如果邻居关联集u为空集,则返回第三步;第五步:根据以最短距离高密度数据对象为邻准则更新邻居集q中当前数据对象在邻居关系表r和其对应的邻居距离表d中的相应表项;重复第三步至第五步,直至邻居集q中所有数据对象依次被执行一遍;第六步:将密度表p、邻居关系表r和邻居距离表d分别追加一个表项,然后将邻居集q中所有数据对象的数目作为新增数据对象x的密度添加进密度表p的相应表项中;如果邻居集q为空集,则记新增数据对象x的密度为1并添加进密度表p的相应表项中;接着根据以最短距离高密度数据对象为邻准则将新增数据对象x的邻居及其邻居距离分别添加进邻居关系表r和邻居距离表d的相应表项;第七步:从数据集x中构造密度低于新增数据对象密度的新增数据关联集s;如果新增数据关联集s非空,则依欧式距离测算关系式依次测算新增数据关联集s中所有数据对象与新增数据对象x之间的距离;当该距离小于新增数据关联集s中某数据对象对应的邻居距离时,则将新增数据对象x设定为新增数据关联集s中该数据对象的邻居,同时更新与新增数据关联集s中该数据对象对应的邻居关系表r和邻居距离表d的相应表项;如果新增数据关联集s为空集或该步操作已全部完成,则将新增数据对象x添加进数据集x,同时输出增量计算结果,然后返回等待下一个新增数据对象到达;第八步:当用户提出聚类查询指令时,根据增量计算结果对数据集x中所有数据对象进行簇划分,即依据簇头度量关系式计算簇头度量γ并对其元素τn进行降序排列,其中符号表示矩阵哈达马乘积;然后依据簇头选择条件式选择簇头度量γ中分离度超过阈值σ的一组元素对应的数据对象作为簇头;接下来给各个簇头分配不同簇编号,并分别以各个簇头作为根结点,通过遍历邻居关系表r将每一数据对象划分入特定簇中,向用户输出聚类分析结果。上述本发明增量式密度峰搜索聚类方法,是一种基于快速密度峰搜索聚类方法的扩展应用方法。针对动态数据集,将插入新增数据对数据集中历史数据聚类结果的影响限制在新增数据的邻居集、邻居关联集及新增数据关联集这三个局部数据子集,通过增量式更新局部数据子集对应的密度表、邻居关系表和邻居距离表表项,有效避免了冗余计算,使执行效率获得数量级式提升。值得指出的是,由于本发明增量式密度峰搜索聚类方法严格遵循以最短距离高密度数据对象为邻准则,其聚类结果与直接对完整数据集使用快速密度峰搜索聚类方法获得的结果完全一致。采用本发明方法能够快速有效地挖掘动态数据集知识,适用于网络检测、信号分析和信息检索等实时应用领域。附图说明图1为本发明增量式密度峰搜索聚类方法的实现结构图。图2为本发明增量式密度峰搜索聚类方法的增量计算模块数据处理流程示意图。图3为将本发明应用在实施例1时的数据集x所含历史数据对象的二维分布及其邻居关系示意图。图4为采用本发明方法与快速密度峰搜索聚类方法的运行时间与新增数据对象样本数之间的关系曲线。具体实施方式实施例1:增量式密度峰搜索聚类处理过程本实施例以向一个初始非空的二维动态数据集中插入一个新增数据对象为例,具体说明采用本发明增量式密度峰搜索聚类方法的增量式处理过程。本实施例中设数据集x已存放总数n=15个历史数据对象,每一数据对象含有特征维度m=2的实数据。图1给出了本发明增量式密度峰搜索聚类方法的实现结构图:由增量计算模块a1根据数据集模块a3对新增数据对象进行计算,完成聚类分析所需的密度表、邻居关系表和距离表相关表项的增量式更新。当用户向系统发出聚类查询指令时,簇生成模块a2依据增量计算模块a1输出的增量计算结果,结合数据集模块a3完成聚类分析,并向用户输出聚类分析结果。其中所述各模块的具体内容体现在下面实施例中涉及到的相关操作过程中。图2给出了本发明增量式密度峰搜索聚类方法的增量计算模块数据处理流程示意图,图3给出了数据集x所含历史数据对象的二维分布及其邻居关系示意图,图中每一小圆圈内的数据编号对应的数据对象的具体数据如下表所示:数据编号特征维1特征维2数据编号特征维1特征维2111.889.2997.9010.20211.547.89108.2711.12311.358.811111.438.4447.7910.901210.847.73511.507.77137.8911.38612.067.731412.088.03711.589.771511.298.08810.469.02给定邻居半径r=1.2,已知数据集x中所含的隶属数据对象的密度表p=[4,8,10,4,8,6,3,3,4,4,10,6,4,7,8],邻居关系表r=[3,11,0,3,2,14,1,3,4,4,3,15,10,2,2],邻居距离表d=[0.72,0.56,4.30,4.12,0.13,0.30,0.56,0.91,0.70,0.53,0.39,0.56,0.46,0.56,0.32]。令小圆圈内数据编号16对应的数据对象为新增数据对象x=[11.41,9.13]。下面结合附图描述本实施例增量式密度峰搜索聚类方法的具体实施操作步骤如下:首先,向增量计算模块a1输入新增数据对象。在增量计算模块a1中,对于新增数据对象x=[11.41,9.13],先执行计算数据对象间距步骤b1:根据欧式距离测算关系式dn=||x-xn||,符号||·||代表向量范数运算,依次测算新增数据对象x与数据集x中的历史数据对象之间的欧式距离,其中令数据编号为n的第n个历史数据对象xn∈x与新增数据对象x之间的欧式距离为dn,且数据编号n从1依次递增至数据总数n;于是计算获得的d1~d15依次分别为[0.50,1.24,0.32,4.02,1.36,1.54,0.66,0.96,3.67,3.71,0.69,1.51,4.17,1.29,1.05];然后实施构造邻居集并更新邻居密度步骤b2:从数据集x中构造新增数据对象x的邻居集q,其中邻居集中任一数据对象与新增数据对象x之间的欧式距离dn均应满足邻居集选择条件式dn≤r;于是从数据集x中搜索获得邻居集q,其中共含有6个数据对象,其数据编号分别为[1,3,7,8,11,15];由于邻居集q非空,于是将密度表p中数据编号对应于邻居集q中所有数据对象的密度值增1,此时密度表更新为p=[5,8,11,4,8,6,4,4,4,4,11,6,4,7,9];接着进行构造邻居关联集步骤b3:从邻居集q中取出一个邻居关系尚未更新的数据对象作为当前数据对象(设当前取出数据编号为15的数据对象),然后从数据集x中构造关于该数据对象的邻居关联集由于邻居集q中当前数据对象的密度q=9,其未更新之前的历史密度为8,于是根据邻居关联集u中任一数据对象与邻居集q中当前数据对象之间应满足邻居关联集选择条件式q-1≤p≤q;构造获得的邻居关联集u应包含的数据对象编号为[2,5];随后执行更新邻居关联集步骤b4:由于邻居关联集u非空,于是依欧式距离测算关系式依次测算邻居关联集u中所有数据对象至邻居集q中数据编号为15的当前数据对象之间的距离,经测算获得该距离分别为0.32及0.38;由于邻居关联集u中数据编号为2的数据对象对应的历史邻居距离为0.56,高于当前对应距离0.32,故必须调整邻居关联集u中该数据对象在邻居关系表r和邻居距离表d的相应表项,即分别调整为15及0.32;接下来进行更新邻居集步骤b5:根据以最短距离高密度数据对象为邻准则更新邻居集q中数据编号为15的当前数据对象在邻居关系表r和其对应的邻居距离表d中的相应表项,即分别调整为11及0.38;重复第三步至第五步,直至邻居集q中所有数据对象依次被执行一遍,此时邻居关系表更新为r=[3,15,0,3,2,14,1,3,4,4,3,15,10,2,11],邻居距离表更新为d=[0.72,0.32,4.30,4.12,0.13,0.30,0.56,0.91,0.70,0.53,0.39,0.56,0.46,0.56,0.38];再实施添加新增数据对象步骤b6:将密度表p、邻居关系表r和邻居距离表d分别追加一个表项,然后将邻居集q中所有数据对象的数目(本实施例中为6)作为新增数据对象x的密度添加进密度表p的相应表项中;接着根据以最短距离高密度数据对象为邻准则添加新增数据对象x的邻居关系表r的相应表项为数据编号3,添加新增数据对象x的邻居距离表d中的相应表项为0.32;增量计算模块a1的最后一步是构造并更新新增数据关联集步骤b7:从数据集x中构造密度低于新增数据对象密度的新增数据关联集s=[1,4,6,7,8,9,10,12,13];由于新增数据关联集s非空,于是依欧式距离测算关系式依次测算新增数据关联集s中所有数据对象与新增数据对象x之间的距离,分别为[0.50,4.02,1.54,0.66,0.96,3.67,3.71,1.51,4.17];查询邻居距离表d可知,只有新增数据关联集s中数据编号为1和4两个数据对象的历史邻居距离小于当前对应距离;于是将新增数据对象x设定为新增数据关联集s中这两个数据对象的邻居,同时将新增数据关联集s中小圆圈内的数据编号为1和4这两个数据对象在邻居关系表r和邻居距离表d的相应表项分别更新为16和0.50、16和4.02;该步骤执行完毕后,将新增数据对象送入数据集模块a3:即添加进数据集x,同时向簇生成模块a2输出增量计算结果,然后返回等待下一个新增数据对象到达;当用户提出聚类查询指令时,实施簇生成模块a2:根据增量计算结果对数据集x中所有数据对象进行簇划分,即依据簇头度量关系式计算簇头度量γ并对其元素τn进行升序排列,其中符号表示矩阵哈达马乘积,此时γ=[1.05,1.79,1.84,2.10,2.25,2.26,2.50,2.54,2.81,3.39,3.46,3.65,3.90,4.24,16.10,44.22];然后令阈值σ=0.1,依据簇头选择条件式选择簇头度量γ中分离度超过阈值σ的一组元素对应的数据对象作为簇头,计算获得的簇头对应于小圆圈内数据编号为3和4的数据对象;接下来给两个簇头依次分配不同簇编号1和2,并分别以各个簇头作为根结点,通过遍历邻居关系表r将每一数据对象划分入特定簇中,向用户输出聚类分析结果,即簇编号为1的聚类中包含小圆圈内数据编号为[1,2,3,5,6,7,8,11,12,14,15,16]的数据对象,簇编号为2的聚类中包含小圆圈内数据编号为[4,9,10,13]对应的数据对象。从上述实施例1可以看出,当小圆圈内数据编号为16的一项新增数据插入数据集x时,采用本发明增量式密度峰搜索聚类方法通过将插入新增数据这一事件对数据集x历史聚类结果的影响分解为分别调整邻居集q、邻居关联集u和新增数据关联集s这三个局部数据子集对应的邻居关系表和邻居距离表表项,因此可以有效避免冗余计算。从图2还可以看出,事实上实施例1中向数据集x插入一项新增数据后,除了新增数据必须要新建其邻居关系以外,需要调整邻居关系和其他相应表项的历史数据对象仅包含小圆圈内数据编号为1、2、4和15共四项,且随着数据量的不断增大,这种局部调整带来的计算效率的提升效果将体现得越来越明显。实施例2:运行效率分析本实施例通过将采用本发明增量式密度峰搜索聚类方法与采用快速密度峰搜索聚类方法在运行时间方面的对比分析来说明采用本发明增量式密度峰搜索聚类方法所获得的运行效率的改善程度。其中所用的经典数据集选自《国际电气与电子工程师协会-模式分析与机器智能汇刊》(ieeetransactionsonpatternanalysisandmachineintelligence,vol.24,no.9,pp.1273-1280,2002)所公开的“一种最大方差聚类方法”(amaximumvarianceclusteringalgorithm)一文中使用的d31数据集。该数据集共包含31个随机分布的二维高斯簇,每一簇含100条数据对象。本实施例中首先建立一个无数据对象的动态数据集,然后将d31数据集中的样本逐项依次向该动态数据集中添加。而快速密度峰搜索聚类方法在本实施例中的使用方式为:每向数据集中新增一项数据对象时,均针对数据集中所含完整数据集运行一次快速密度峰搜索聚类方法。为了综合比较不同方法之间的时间开销,本实施例中将邻居半径r固定设为1.65,并进行了50次蒙特卡洛(montecarlo)仿真实验。从聚类结果看,本发明增量式密度峰搜索聚类方法与快速密度峰搜索聚类方法获得的分析结果完全一致,且利用随机索引(randindex)指标计算两者的识别率均为99.5%。图4给出了采用本发明增量式密度峰搜索聚类方法与快速密度峰搜索聚类方法两者的运行时间与新增数据对象样本数之间的关系曲线。从图中可以看出,当新增数据对象样本数逐步增长时,采用本发明增量式密度峰搜索聚类方法运行时间曲线c2与快速密度峰搜索聚类方法运行时间曲线c1均逐渐上升。但是从具体运行时间和上升速度角度看,采用本发明增量式密度峰搜索聚类方法运行时间曲线c2均明显低于快速密度峰搜索聚类方法运行时间曲线c1。在新增数据对象样本数较少时(例如低于400),两者之间的区别尚不十分明显。然而随着新增数据对象样本数的增长超过一定裕量时(例如高于600),采用本发明增量式密度峰搜索聚类方法的运行时间相比于快速密度峰搜索聚类方法的运行时间,至少低1个数量级,特别是当新数据对象样本数达到2800时,本发明增量式密度峰搜索聚类方法的运行时间相比于快速密度峰搜索聚类方法的运行时间降低了54倍,可见其运行效率的改善非常明显。由此可见,随着数据集规模的增大,相比于快速密度峰搜索聚类方法,采用本发明增量式密度峰搜索聚类方法可以有效降低运行时间,并在动态数据集应用中展示出更具吸引力的性能优势。当前第1页12
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1