本发明涉及数据挖掘和可视分析技术,尤其涉及一种基于聚类的多维流数据可视分析方法。
背景技术:
随着物联网技术的飞速发展,产生了大量的多维流数据,如金融数据、图像数据、文本数据。相比于传统的静态数据,流数据具有如下特点:1)数据潜在大小是无限的;2)数据在线不断到达,需要实时处理;3)数据到达的顺序与数量每时每刻不同;4)除非可以保存,每条数据只能被处理一次。
这类数据复杂性更高、特点更难发现,且隐含的信息更加丰富。面对复杂繁多的数据,如何进行数据分析,能够发现信息背后深层的信息与规律,一直是困扰学术界的一大难题。采用可视化的方式可以使用户更直观、更高效的获取数据流中潜藏的、未知的、有价值的信息,发觉数据流中的内在模式,为管理者进行决策提供强有力的支持,多维数据的可视化技术有平行坐标,散点图矩阵,径向坐标等。对多维流数据进行可视分析,离不开人和计算机的相互协作。多维流数据的可视分析方法可以从两个维度展开。其一是以人为分析主体出发,强调符合人类认知的分析方法,这个维度的分析方法以交互式可视分析为代表;其二是从计算机角度出发,强调高性能的数据挖掘算法,例如数据聚类。结合流数据挖掘方法,提出一种基于聚类的多维流数据可视分析方法,能够帮助人们更直观、更高效地了解多维流数据内在结构和潜在规律,从而更好地发现有价值的信息,辅助人们进行决策。
技术实现要素:
本发明要解决的技术问题在于针对现有技术中的缺陷,提供一种基于聚类的多维流数据可视分析方法。
本发明解决其技术问题所采用的技术方案是:一种基于聚类的多维流数据可视分析方法,该方法包括:
1)接收多维流数据,对多维流数据进行数据聚类,将聚类结果存储至可视化数据库中;
2)通过web后端访问可视化数据库,得到需要可视化的数据信息,然后使用websocket将可视化信息发送至web前端;
3)在web前端利用数据聚类的结果进行视觉聚类,使用平行坐标法进行多维流数据的动态加载。
按上述方案,所述步骤1)多维流数据进行数据聚类的具体方法如下:
1.1)设流数据s是一个m维的数据集合,用
其中,n为数据集的样本数量,ωi为对象
1.2)当流数据对象
其中,m为数据集的维度,xij为第i个对象第j个维度上的值。
1.3)比较mindx与用户自己设定的阈值半径dc,若mindx<dc,则将当前流数据对象
1.4)计算每一个微簇中最后到达的m个流数据对象的平均时间戳cft(m),并选择最小值mincft(m),然后比较mincft(m)与用户输入的时间阈值h;若mincft(m)<h,则合并两个最早的(若没有最早的,则合并规模最小的两个)旧微簇;否则,删除对应的旧微簇。
按上述方案,所述步骤1)中利用spark平台对多维流数据进行数据聚类。
按上述方案,所述步骤3)在web前端利用数据聚类的结果进行视觉聚类的具体方法如下:
3.1)根据多维流数据聚类的结果,计算每一个类簇的簇心在平行坐标上的映射位置;
3.2)根据公式计算每一个数据对象在(m-1)个数值轴相邻空间中聚合轴上的坐标位置;
q′i=(1-β)qi+βci
其中,q′i为聚合轴上的坐标位置,qi是原始折线与聚合轴相交的位置,β为曲线的聚合程度,决定q′i距离聚类中心的长度。
3.3)根据公式计算每一个相邻空间上的贝塞尔曲线;
b(t)=(1-t)3(i,pi)+3t(1-t)2(i+α,b1)+3t2(1-t)(i+1/2-α,b2)+t3(i+1/2,qi)其中,b(t)相邻空间上的贝塞尔曲线,α为曲线的平滑程度,(i,pi)为贝塞尔曲线的起始点坐标位置,(i+α,b1)、(i+1/2-α,b2)分别为三次贝塞尔曲线控制点的坐标,(i+1/2,qi)为q′i的坐标位置,t从0到1不断增加。
3.4)使用不同的颜色编码来表示不同的类簇信息,同时进行渲染与绘制。
按上述方案,所述步骤3)中面向多维流数据的动态加载方法,具体步骤为:
使用vrsc对流数据进行数据聚类,并将聚类结果保存到可视化数据库中;
web服务器不断查询可视化数据库,并将实时的数据聚类结果推送给web前端;
web前端接收到当前数据聚类结果后,将其缓存到数组中,根据数据聚类结果中各个类簇的中心,使用曲线聚合模型计算数组中各数据项的贝塞尔曲线控制点坐标;
清空平行坐标上前一时刻滑动窗口中的所有曲线,并通过贝塞尔曲线控制点的位置,利用公式(8)逐条绘制每个数据项的贝塞尔曲线,从而完成流数据的动态加载。
本发明产生的有益效果是:
首先,从数据聚类出发,引入了时间衰减因子,并使用spark计算平台进行并行化处理,从数据挖掘的角度探究多维流数据的内在结构;
其次,在数据聚类的基础上,利用平行坐标对多维流数据进行视觉聚类,使用贝塞尔曲线代替折线并进行视觉编码操作,从而对数据聚类结果进行有效地可视化表征,让用户更好地发现流数据中的潜在规律。
附图说明
下面将结合附图及实施例对本发明作进一步说明,附图中:
图1是本发明实施例的方法流程图;
图2是本发明实施例的多维流数据可视分析流程示意图;
图3是本发明实施例的多维流数据的数据聚类方法流程图;
图4是本发明实施例的平行坐标折线示意图;
图5是本发明实施例的基于平行坐标的曲线聚合模型示意图;
图6是本发明实施例的面向多维流数据的动态加载方法流程图。
具体实施方式
为了使本发明的目的、技术方案及优点更加清楚明白,以下结合实施例,对本发明进行进一步详细说明。应当理解,此处所描述的具体实施例仅用以解释本发明,并不用于限定本发明。
如图1和图2所示,一种基于聚类的多维流数据可视分析方法,该方法包括:
1)接收多维流数据,对多维流数据进行数据聚类,将聚类结果存储至可视化数据库中;本实施例中步骤1)采用基于流数据聚类的可视化表征算法实现;
2)通过web后端访问可视化数据库,得到需要可视化的数据信息,然后使用websocket将可视化信息发送至web前端;
3)在web前端利用数据聚类的结果进行视觉聚类,使用平行坐标法进行多维流数据的动态加载。
如图3,基于流数据聚类的可视化表征算法具体步骤:
本发明改进了传统的流数据聚类算法,引入衰减时间因子,使得离当前时间越近的数据点权重越大,反之则越小,各数据点的权重随着时间的流逝不断的衰减,动态地反映流数据的演化信息,提出了基于流数据聚类的可视化表征算法vrsc(visualrepresentationalgorithmbasedonstreamdataclustering)。
设流数据s是一个m维的数据集合,用
定义1衰减时间微簇特征dtcf
在引入衰减时间窗口后,可以将微簇的特征向量更新为衰减时间微簇特征(decaytimeclusterfeature,记作dtcf)。dtcf具体描述为:
其中,
定义2衰减函数f(t)
选用公式(2)作为衰减衰减函数,其中λ>0,λ的值代表流数据的衰减速率,λ越大说明历史数据的权重随着时间衰减的越快。
f(t)=2-λt(λ>0)(2)
定义3实时权重
基于公式(2),使用公式(3)定义数据点
定义4加权簇心cω,j
在传统的聚类算法中,类簇的中心一般都是簇内全部数据点的几何中心,但是由于时间衰减导致数据对象的实时权重不一,几何中心的方法不能够确定簇的中心。针对衰减时间因子的微簇特征,类簇的中心可以定义为簇内数据点的加权线性均值,如公式(4)所示,其中q为微簇的数目。
定义5加权距离dx
当流数据对象
定义6平均时间戳cft(m)
由公式(1)可知,cf1t是流数据时间戳的线性加权和,n是微簇中数据对象的个数,流数据对象的平均时间戳为cf1t/n,记cft(m)为最后m个到达数据的平均时间戳,tc为当前时刻,那么cft(m)可以用公式(6)定义。
基于流数据聚类的可视化表征算法流程图如图3,具体的实现步骤为:
1.1)对于给定的微簇个数q,通过公式(4)计算出对应的加权簇心cω,j;
1.2)当流数据对象
1.3)比较mindx与用户自己定义的阈值半径dc,若mindx<dc,则将当前流数据对象
1.4)计算每一个微簇中最后到达的m个流数据对象的平均时间戳cft(m),并选择最小值mincft(m),然后比较mincft(m)与用户输入的时间阈值h。若mincft(m)<h,则合并两个最早的旧微簇;否则,删除对应的旧微簇。
实现上述算法采用多维流数据的数据聚类方法的并行化策略是:
1)sparkstreaming创建对象streamingcontext并配置参数,将输入的多维流数据按照batchsize分成一个一个的离散流dstream(discretizedstream);
2)dstream结构可以将各种运算流都转化成为一系列短时间间隔的无状态、确定性的批计算,然后将每一个dstream都转换为spark平台中的rdd,缓存到内存空间中;
3)根据spark资源管理器的任务分配算法,将各个离散流rdd分配到各自的worker节点上,执行dp-clustream算法的在线微聚类操作;
4)由主节点汇总所有的worker节点,并结合用户输入的内容,完成vrsc的离线宏聚类操作,最终将结果存储到数据库中;
5)每当有数据流入时,sparkstreaming都会迭代上述的过程,从而实现多维流数据的并行聚类处理。
步骤3)在web前端利用数据聚类的结果进行视觉聚类的具体方法如下:
记经过数据聚类且标准化后的多维数据集为xm×n,其中,m为数据集的维度,n为数据集的样本数量,那么需要m个平行坐标轴表示这个数据集,记这m个坐标轴分别为a1,a2,…,am。对于数据集xm×n中的一个数据点xi=(xi1,xi2,…,xim),可以在平行坐标上用折线p1,p2,…,pm表示,p1,p2,…,pm分别是平行坐标轴a1,a2,…,am上的数值点,如图4所示。
使用贝塞尔曲线代替折线p1,p2,…,pm,并通过数据聚类中心将同类簇的曲线进行聚合,让用户能够在平行坐标视图上直观的观察到多维数据集的数据聚类情况。
考虑两个相邻的平行坐标数值轴ai和ai+1围成的空间,聚合轴vi将这个空间均分为两个部分,每个部分分别定义两条控制轴,每个控制轴与对应的数值轴与聚合轴的距离都为α(数值轴ai和ai+1之间的距离为1),如图5所示。折线pipi+1与聚合轴vi相交于点qi。折线pipi+1被均分成了piqi与qipi+1两个部分,可以使用两条三次贝塞尔曲线表示这两条线段。附图5中,ci为该折线所在聚簇的聚类中心,q′i的位置由公式(7)决定。
q′i=(1-β)qi+βci(7)
参数α与β用于调整贝塞尔曲线的形状。α决定贝塞尔曲线控制点的位置,称作曲线的平滑程度;β决定q′i距离数据聚类中心的长度,称作曲线的聚合程度。
第一条三次贝塞尔曲线的起点是pi,终点是q′i,两个控制点分别落在控制轴yi,1、zi,1上,如附图5中的红色点所示。同理,第二条三次贝塞尔曲线的两个控制点会在控制轴yi,2、zi,2上(未标出)。这两条三次贝塞尔曲线会共享同一个控制点q′i,所以两条曲线会在q′i保持曲线的连续性。
记第一条贝塞尔曲线的起始点pi的坐标向量为(i,pi),终点q'i的坐标向量为(i+1/2,qi)(qi由公式(7)决定),控制点b1、b2的坐标向量分别为(i+α,b1),(i+1/2-α,b2),那么曲线piq′i可以描述为:
b(t)=(1-t)3(i,pi)+3t(1-t)2(i+α,b1)+3t2(1-t)(i+1/2-α,b2)+t3(i+1/2,qi)(8)
其中,t从0到1不断变化。
m个平行坐标轴上会形成m-1个区域,一个数据项在每一个区域都有两条三次贝塞尔曲线,一共需要绘制2(m-1)条三次贝塞尔曲线。当有n个数据项时,共需绘制2n(m-1)条三次贝塞尔曲线。具体实现步骤为:
3.1)根据多维流数据聚类的结果,计算每一个类簇的簇心在平行坐标上的映射位置;
3.2)根据公式(7)计算每一个数据对象在(m-1)个数值轴相邻空间中聚合轴上的坐标位置;
3.3)根据公式(8)计算每一个相邻空间上的贝塞尔曲线;
3.4)使用不同的颜色编码来表示不同的类簇信息,同时进行渲染与绘制。
面向多维流数据的动态加载方法,如图6,具体步骤为:
1)使用vrsc对流数据进行数据聚类,并将聚类结果保存到可视化数据库中;
2)web服务器不断查询可视化数据库,并将实时的数据聚类结果推送给web前端。
3)web前端接收到当前数据聚类结果后,将其缓存到数组中,根据数据聚类结果中各个类簇的中心,使用曲线聚合模型计算数组中各数据项的贝塞尔曲线控制点坐标。
4)清空平行坐标上前一时刻滑动窗口中的所有曲线,并通过贝塞尔曲线控制点的位置,利用公式(8)逐条绘制每个数据项的贝塞尔曲线,从而完成流数据的动态加载。
应当理解的是,对本领域普通技术人员来说,可以根据上述说明加以改进或变换,而所有这些改进和变换都应属于本发明所附权利要求的保护范围。