发明内容
本发明旨在至少解决现有技术中存在的技术问题,特别创新地提出了一种基于Spark和ASPSO的并行化K-means的优化方法。
为了实现本发明的上述目的,本发明提供了一种基于Spark和ASPSO的并行化K-means的优化方法,包括以下步骤:
S1,通过分割函数粗略的划分数据集,并利用基于皮尔逊相关系数和方差的网格划分策略PCCV来计算数据网格的皮尔逊相关系数与相关系数阈值,再通过与阈值比较,对数据网格进行划分,获取网格单元,减小了数据划分的数据离散系数;
S2,采用SPFG策略,对数据点进行局部区域覆盖,并通过更新函数,更新数据集中的样本点,形成以不同样本点为核心的区域簇,获取局部聚类的簇数,解决了簇数的难以确定的问题;
S3,采用ASPSO策略,计算自适应参数,通过自适应参数更新粒子的位置和速度,获取局部簇质心,避免了局部簇质心的随机性;
S4,采用CRNN策略计算每个簇的簇半径,通过簇半径计算出簇与簇之间的邻居节点,并根据簇的相似性函数进行相似度判断,结合Spark并行计算框架将相似度大的簇进行合并,避免了在并行化运算过程中对所有簇的点与边集同时展开搜索,提高了局部簇并行化合并的效率;
S5,输出聚类结果:最终的聚类中心以及每个样本所属的类别。
进一步地,所述S1包括:
S1-1,数据集的粗略划分:首先获取划分数据集,并将其标记为Gs;其次提出分割函数FD(xi)计算出划分阈值,分别与每个数据点比较,对于大于阈值的数据则放入网格Gmax中,小于阈值的数据则放入Gmin中;最后获得Gmax与Gmin两个数据网格;
所述分割函数FD(xi)为:
k={max(Si/di)|i=1,2,...u} (1)
其中,k表示分割维度,S
i为空间数据集中第i维度的数据的方差,d
i为空间数据集中第i维度的数据之和,u表示u个数据维度,
为第k分割维度下的数据值,num为网格中的数据点的个数。
S1-2,网格的划分:在获取Gmax与Gmin两个数据网格之后,由于分割函数只能对数据集进行粗略的划分,无法对相似度较大的数据进行网格划分,导致无法获取网格单元。因此,需要对网格Gmax与Gmin进行进一步的数据划分;
S1-2-1,首先计算网格中数据点的皮尔逊相关系数阈值PCCk值,以PCCk值作为网格划分阈值来对数据网格进行划分,通过比较数据皮尔逊相关系数与PCCk的大小,将系数大于PCCk的数据进行标记为core,系数小于PCCk的数据则标记为uncore;
S1-2-2,将网格中数据标记为core与uncore的两种数据分别划分为两个更小的网格,并取消标记;
S1-2-3,对网格进行数据的判断,如果数据点的个数大于网格单元的阈值maxNum,则返回步骤S1-2-1,否则停止对网格进行划分;其中maxNum表示数据的总的个数n与并行化节点Partition个数的比值;
S1-2-4,将划分好的网格单元进行标记,得到网格单元G1,G2,G3...Gm;
令PCCk为任意两个数据点的皮尔逊相关系数值,则阈值PCCk为:
其中,PCCi,j代表数据点i、j之间的关联程度,sum(·)为求和函数,Gnum为网格单元的数据个数,ω为数据点的密度权重,xk,i、xk,j分别表示第k个网格中的任意两个数据点的值,m表示数据网格总数。
进一步地,所述S1还包括:
S1-3,离群点的过滤:
在获取网格单元G1,G2,G3...Gm后,由于网格单元存在离群点,也会导致数据的离散系数增大。为了进一步减小数据的离散系数,提出了一种离群因子GOF来对离群点过滤,其具体过程为:计算网每个格单元中数据的GOF值,若GOF值>>ε,则将该数据点视为离群点,并对其进行删除;其中G1为第一网格单元,G2为第二网格单元,G3为第三网格单元,Gm为第m网格单元;>>表示远大于,ε表示网格单元数据阈值;
离群因子GOF为:
其中,d表示当前网格中其余的m-1个数据点的欧氏距离,d(x
i,x
j)表示网格中数据点x
i、x
j的欧氏距离,
表示网格单元的中心点,x
i表示网格中第i个数据点,x
j表示网格中第j个数据点,mc表示网格中数据点的个数,m表示数据网格总数,
表示当前数据点到网格中心的距离。
进一步地,所述S2包括:
S2-1,对数据集中任意一对数据xi,xj,计算其作用势γ(xi,xj),并以xi为基准样本,将其他的样本点对xj的作用势进行累加,得到每个样本点的作用势集合为:ρ={ρ1,ρ2,...,ρn},其中ρ1表示第1个样本点的作用势,ρ2表示第2个样本点的作用势,ρn表示第n个样本点的作用势;
S2-2,从ρ中选择最大作用势ρi放入一个空的集合M{}中,并以ρi为当前的高斯核中心,以给定的核宽σ建立相应的高斯核来对原始数据的一个局部区域有效覆盖;
S2-3,消除当前高斯核所覆盖的局部区域的样本势值,提出基于高斯核函数的更新函数FU(xi,yj)对数据集中的其他样本点进行更新;
更新函数FU(xi,yj)如下所示:
其中,ρ
i为高斯核中心,ρ
j为集合中的样本点,σ
k表示核宽,
表示高斯内核;
更新后每个样本点的作用势集合为ρ'={ρ1',ρ'2,...,ρ'n},当更新后的势值满足max{ρ1',ρ'2,...,ρ'n}>δ时,即可从ρ'中选择势值最大的样本点,放入集合M2{}中,其中δ表示作用势的一个阈值。
进一步地,所述S3包括:
为了实现初始质心的全局最优解,需要设计自适应参数来避免局部最优:
S-A,提出粒子群体平均速度
作为第一个自适应参数,计算出
值,设置其为控制变异步长的参数;
粒子群体平均速度为:
其中,n为数据的总的个数,vk,i为粒子的速度;
S-B,引入的变异算子为柯西变异算子,并将其与参数粒子群体平均速度
结合,根据公式(10)对陷入局部最优的粒子进行位置更新,跳出局部最优;
其中,
为当前粒子位置,
为更新后的位置,
为粒子群体平均速度,C(1)为柯西变异算子;
S-C,设计边界限制参数η,由于C(1)是引入的柯西算子,是由t=1的柯西分布函数产生的随机数,并不能得到有效搜索区域,因此,在进行数据集搜索时,对搜索区域进行边界限制,只对满足边界限制参数η的数据区域进行搜索。:
其中,x
0为x
i的中位数,
和
分别表示x
i左侧和右侧时的尺度参数,γ
i表示尺度参数,x
i表示第i个数据点的值即第i个数据点。
进一步地,所述S3还包括质心初始化,所述质心初始化包括以下步骤:
S-1,将每个网格单元的数据看作一群粒子S1,S2...,So,并对其进行初始化;其中S1表示第1个粒子,S2表示第2个粒子,So表示第o个粒子;
S-2,计算每个粒子的适应值,并将其与粒子本身的最佳位置
种群的历史最佳位置
进行比较,如果适应值较优,则用适应值替换掉当前的
进行适应值更新;
S-3,计算边界限制参数η的值,获取有效搜索区域,根据更新的适应值,在有效搜索区域中对粒子的速度与粒子的位置进行更新;
S-4,将每次更新的种群的历史最佳位置
记录在集合W{}中,得到
并对集合W{}中的值进行比较,选取前K个较大的值,并找到其对应的粒子点,便是数据集的初始质心。
进一步地,所述S3还包括局部并行化聚类:
S001,将各个网格单元G1,G2,G3...Gm分配到Partition;其中G1为第一网格单元,G2为第二网格单元,G3为第三网格单元,Gm为第m网格单元;
S002,通过mapRartitions算子计算出各个网格单元的中心点
所述mapRartitions算子为:
其中
表示第i个网格单元的中心点,x
i表示第i个数据,mcount表示各个网格中的数据总数;
S003,将各个网格单元中的质心点集
与网格中心点
输入flatMap算子,并找到质心点所对应的网格单元,并标记为:C
1,C
2,...,C
P计算出网格中心点与质心点之间的欧氏距离D
i,其中flatMap算子为:
输出D
i值;其中
表示第j个质心点,x
p表示第p个数据点,mcount表示各个网格中的数据总数;
其中,
表示网格单元中的第1个质心点,
表示网格单元中的第2个质心点,
表示网格单元中的第k个质心点;C
1表示第1个质心点所对应的网格单元,C
2表示第2个质心点所对应的网格单元,C
P表示第3个质心点所对应的网格单元;
S004,根据输出的D
i值,通过mapToPair算子选取值最小的网格单元进行合并,即
反复循环,直到所有网格单元合并完毕,最后进行reduceByKey操作汇总,获得局部簇C′
1,C′
2,...C′
K;其中G
i表示网格单元,C
i表示质心对应的网格单元,
表示网格单元中的第k个质心点;
为第i个网格单元的中心点;C′
1表示第1个簇,C′
2表示第2个簇,C′
K表示第K个簇。
进一步地,所述S4包括以下步骤:
S4-1,对于每一个簇C1',C'2,...C'K,分别计算出离质心距离最大的点,以其到质心的距离作为簇半径Ri;在获取每一个簇的簇半径之后,便计算出各个簇之间的邻居节点;其中C1'为第1个簇,C'2为第2个簇,C'K为第K个簇;
S4-2,对于簇第i个簇Ci'、第j个簇Cj',通过邻居节点集疏密程度判断两个簇之间的亲密程度,并分别计算出两个簇的样本点数ni,nj,提出簇的相似性函数CSM(ni,nj),计算出簇与簇之间的相似度。
进一步地,所述计算出簇与簇之间的相似度包括:
其中,k为分割维度,nei,nej分别为Ci,Cj之间的邻居节点与非邻居节点的个数,ni为簇Ci'的样本点的个数,nj为簇Cj'的样本点的个数。
综上所述,由于采用了上述技术方案,本发明的有益效果是:本发明提出的方法无论是在运行效率上还是聚类精确度上都有显著的提高,此外通过该方法所挖掘出的知识,能够在生物学,医学,天文地理学上提供巨大的帮助。
本发明的附加方面和优点将在下面的描述中部分给出,部分将从下面的描述中变得明显,或通过本发明的实践了解到。
具体实施方式
下面详细描述本发明的实施例,所述实施例的示例在附图中示出,其中自始至终相同或类似的标号表示相同或类似的元件或具有相同或类似功能的元件。下面通过参考附图描述的实施例是示例性的,仅用于解释本发明,而不能理解为对本发明的限制。
本发明提出一种基于Spark和ASPSO的并行化K-means的优化方法,具体实施例如下,包括以下步骤:
S1,通过分割函数粗略的划分医疗图像数据集,并利用基于皮尔逊相关系数和方差的网格划分策略PCCV来计算数据网格的皮尔逊相关系数与相关系数阈值,再通过与阈值比较,对数据网格进行划分,获取医疗图像网格单元;
S2,采用SPFG策略,对医疗图像数据点进行局部区域覆盖,并通过更新函数,更新数据集中的样本点,形成以不同样本点为核心的区域簇,获取医疗图像局部聚类的簇数;
S3,采用ASPSO策略,计算自适应参数,通过自适应参数更新粒子的位置和速度,获取医疗图像局部簇质心;
S4,采用CRNN策略计算每个簇的簇半径,通过簇半径计算出簇与簇之间的邻居节点,并根据簇的相似性函数进行相似度判断,结合Spark并行计算框架将相似度大的簇进行合并;
S5,输出聚类结果:医疗图像最终的聚类中心以及每个医疗图像样本所属的类别。
进一步地,所述S1包括:
S1-1,医疗图像数据集的粗略划分:首先获取划分医疗图像数据集,并将其标记为Gs;其次提出分割函数FD(xi)计算出划分阈值,分别与每个医疗图像数据点比较,对于大于阈值的数据则放入网格Gmax中,小于阈值的数据则放入Gmin中;最后获得Gmax与Gmin两个数据网格;
所述分割函数FD(xi)为:
k={max(Si/di)|i=1,2,...u} (1)
其中,k表示分割维度,Si为空间数据集中第i维度的数据的方差,di为空间数据集中第i维度的数据之和,u表示u个数据维度,xi k为第k分割维度下的数据值,num为网格中的数据点的个数;
S1-2,医疗图像网格的划分:在获取Gmax与Gmin两个数据网格之后,对网格Gmax与Gmin进行进一步的数据划分;
S1-2-1,首先计算医疗图像网格中数据点的皮尔逊相关系数阈值PCCk值,以PCCk值作为网格划分阈值来对数据网格进行划分,通过比较数据皮尔逊相关系数与PCCk的大小,将系数大于PCCk的数据进行标记为core,系数小于PCCk的数据则标记为uncore;
S1-2-2,将医疗图像网格中数据标记为core与uncore的两种数据分别划分为两个更小的网格,并取消标记;
S1-2-3,对医疗图像网格进行数据的判断,如果数据点的个数大于网格单元的阈值maxNum,则返回步骤S1-2-1,否则停止对网格进行划分;其中maxNum表示数据的总的个数n与并行化节点Partition个数的比值;
S1-2-4,将划分好的医疗图像网格单元进行标记,得到网格单元G1,G2,G3...Gm;
令PCCk为任意两个医疗图像数据点的皮尔逊相关系数值,则阈值PCCk为:
其中,PCCi,j代表数据点i、j之间的关联程度,sum(·)为求和函数,Gnum为网格单元的数据个数,ω为数据点的密度权重,xk,i、xk,j分别表示第k个网格中的任意两个数据点的值,m表示数据网格总数。
进一步地,所述S1还包括:
S1-3,医疗图像离群点的过滤:
在获取医疗图像网格单元G1,G2,G3...Gm后,计算每个医疗图像网格单元中数据的GOF值,若GOF值>>ε,则将该数据点视为离群点,并对其进行删除;其中>>表示远大于,ε表示网格单元数据阈值;
离群因子GOF为:
其中,d表示当前网格中其余的m-1个数据点的欧氏距离,d(x
i,x
j)表示网格中数据点x
i、x
j的欧氏距离,
表示网格单元的中心点,x
i表示网格中第i个数据点,x
j表示网格中第j个数据点,mc表示网格中数据点的个数,m表示数据网格总数,
表示当前数据点到网格中心的距离。
进一步地,所述S2包括:
S2-1,对医疗图像数据集中任意一对数据xi,xj,计算其作用势γ(xi,xj),并以xi为基准样本,将其他的样本点对xj的作用势进行累加,得到每个样本点的作用势集合为:ρ={ρ1,ρ2,...,ρn},其中ρ1表示第1个样本点的作用势,ρ2表示第2个样本点的作用势,ρn表示第n个样本点的作用势;
S2-2,从ρ中选择最大作用势ρi放入一个空的集合M{}中,并以ρi为当前的高斯核中心,以给定的核宽σ建立相应的高斯核来对原始数据的一个局部区域有效覆盖;
S2-3,消除当前高斯核所覆盖的局部区域的样本势值,提出基于高斯核函数的更新函数FU(xi,yj)对数据集中的其他样本点进行更新;
更新函数FU(xi,yj)如下所示:
其中,ρ
i为高斯核中心,ρ
j为集合中的样本点,σ
k表示核宽,
表示高斯内核;
更新后每个医疗图像样本点的作用势集合为ρ'={ρ1',ρ'2,...,ρ'n},当更新后的势值满足max{ρ1',ρ'2,...,ρ'n}>δ时,即可从ρ'中选择势值最大的样本点,放入集合M2{}中,其中δ表示作用势的一个阈值,ρ1'表示更新后的第1个样本点的作用势,ρ'2表示更新后的第2个样本点的作用势,ρ'n表示更新后的第n个样本点的作用势。
进一步地,所述S3包括:
设计医疗图像自适应参数来避免局部最优:
S-A,提出粒子群体平均速度
作为第一个自适应参数,计算出
值,设置其为控制变异步长的参数;
医疗图像的粒子群体平均速度为:
其中,n为数据的总的个数,vk,i为粒子的速度;
S-B,引入的变异算子为柯西变异算子,并将其与参数粒子群体平均速度
结合,根据公式(10)对陷入局部最优的粒子进行位置更新,跳出局部最优;
其中,
为当前粒子位置,
为更新后的位置,
为粒子群体平均速度,C(1)为柯西变异算子;
S-C,设计边界限制参数η:
其中,x0为xi的中位数,γi表示尺度参数,xi表示第i个数据点的值。
进一步地,所述S3还包括质心初始化,所述质心初始化包括以下步骤:
S-1,将每个医疗图像网格单元的数据看作一群粒子S1,S2...,So,并对其进行初始化;其中S1表示第1个粒子,S2表示第2个粒子,So表示第o个粒子;
S-2,计算每个医疗图像粒子的适应值,并将其与粒子本身的最佳位置
种群的历史最佳位置
进行比较,如果适应值较优,则用适应值替换掉当前的
进行适应值更新;
S-3,计算边界限制参数η的值,获取有效搜索区域,根据更新的适应值,在有效搜索区域中对粒子的速度与粒子的位置进行更新;
S-4,将每次更新的种群的历史最佳位置
记录在集合W{}中,得到
并对集合W{}中的值进行比较,选取前K个较大的值,并找到其对应的粒子点,便是医疗图像数据集的初始质心。
进一步地,所述S3还包括局部并行化聚类:
S001,将各个医疗图像网格单元G1,G2,G3...Gm分配到Partition;
S002,通过mapRartitions算子计算出各个医疗图像网格单元的中心点
所述mapRartitions算子为:
其中
表示第i个网格单元的中心点,x
i表示第i个数据点,mcount表示各个网格中的数据总数;
S003,将各个医疗图像网格单元中的质心点集
与医疗图像网格中心点
输入flatMap算子,并找到质心点所对应的网格单元,并标记为:C
1,C
2,...,C
P计算出网格中心点与质心点之间的欧氏距离D
i,其中flatMap算子为:
输出D
i值;其中
表示第j个质心点,x
k表示第k个数据点,mcount表示各个网格中的数据总数;
其中,
表示网格单元中的第1个质心点,
表示网格单元中的第2个质心点,
表示网格单元中的第k个质心点;C
1表示第1个质心点所对应的网格单元,C
2表示第2个质心点所对应的网格单元,C
P表示第3个质心点所对应的网格单元;
S004,根据输出的D
i值,通过mapToPair算子选取值最小的网格单元进行合并,即
反复循环,直到所有网格单元合并完毕,最后进行reduceByKey操作汇总,获得局部簇C
1',C'
2,...C'
K;其中G
i表示网格单元,C
i表示质心对应的网格单元,D
i(·)为欧氏距离表达式,
表示网格单元中的第k个质心点;
为第i个网格单元的中心点;C
1'表示第1个簇,C'
2表示第2个簇,C'
K表示第K个簇。
进一步地,所述S4包括以下步骤:
S4-1,对于每一个簇C1',C'2,...C'K,分别计算出离质心距离最大的点,以其到质心的距离作为簇半径Ri;在获取每一个簇的簇半径之后,便计算出各个簇之间的邻居节点;
S4-2,对于簇第i个簇Ci'、第j个簇Cj',通过邻居节点集疏密程度判断两个簇之间的亲密程度,并分别计算出两个簇的样本点数ni,nj,提出簇的相似性函数CSM(ni,nj),计算出簇与簇之间的相似度。
进一步地,所述计算出簇与簇之间的相似度包括:
其中,k为分割维度,nei,nej分别为Ci,Cj之间的邻居节点与非邻居节点的个数,ni为簇Ci'的样本点的个数,nj为簇Cj'的样本点的个数。
1.数据划分
目前在大数据环境下的划分聚类算法中,在对数据划分时存在网格数据离散系数较大问题。为了解决此问题,本文提出基于皮尔逊相关系数与方差的网格划分策略PCCV,该策略主要包括三个步骤:
1)数据集的粗略划分:计算出分割维度k,并计算该维度下的数据均值,根据分割函数FD(xi)粗略划分数据集,获得数据网格Gmax与Gmin;
2)网格的划分:在获取数据网格后,计算每个网格的皮尔逊相关系数与相关系数阈值,通过与阈值的比较,将数据网格进行进一步的划分,得到网格单元G1,G2,G3...Gm,其中G1表示第1个网格单元,G2表示第2个网格单元,G3表示第3个网格单元,Gm表示第m个网格单元;
3)离群点的过滤:对每个网格单元,分别计算出各个网格单元的离群因子GOF,通过与GOF值的比较对离群点进行过滤,进一步减小数据的离散系数。
1.1数据集的粗略划分
对于初始数据集,可以对数据先进行粗略的划分,获取数据离散系数较小的网格,其具体过程为:首先获取划分数据集,并将其标记为Gs;其次提出分割函数FD(xi)计算出划分阈值,分别与每个数据点比较,对于大于阈值的数据则放入网格Gmax中,小于阈值的数据则放入Gmin中;最后获得Gmax与Gmin两个数据网格。
定理1,分割函数FD(xi):已知空间数据集中的第i维度的数据的方差为Si,空间数据集中的第i维度的数据之和为di,网格中的数据点的个数为num,则分割函数FD(xi)为:
k={max(Si/di)|i=1,2,...u} (1)
其中
为第k分割维度下的数据值,u表示u个数据维度。
证明:由于方差越大,表明该维度所带的信息量越多。对于不同维度下的数据的方差值相同,则通过比较值di,其值越大表明数据越离散化;反之,值越小,数据越集中。因此,对于网格的划分维度k可通过si/di值进行决定,并选取si/di最大值作为网格的划分维度,又由于均值可以反映数据的整体倾向,所以以该维度下的数据的均值则可作为数据划分的网格分割函数。证毕。
1.2网格的划分
在获取Gmax与Gmin两个数据网格之后,由于分割函数只能对数据集进行粗略的划分,无法对相似度较大的数据进行网格划分,导致无法获取网格单元。因此,需要对网格Gmax与Gmin进行进一步的数据划分,其具体过程为:
1)提出数据的皮尔逊相关系数阈值PCCk,计算网格中数据点的皮尔逊相关系数阈值PCCk值,以PCCk值作为网格划分阈值来对数据网格进行划分,通过比较数据皮尔逊相关系数与PCCk的大小,将系数大于PCCk的数据进行标记为core,系数小于PCCk的数据则标记为uncore;
2)将网格中数据标记为core与uncore的两种数据分别划分为两个更小的网格,并取消标记;
3)对网格进行数据的判断,如果数据点的个数大于网格单元的阈值maxNum,则返回步骤1)。否则停止对网格进行划分。其中maxNum表示数据的总的个数n与并行化节点Partition个数的比值。
4)将划分好的网格单元进行标记,得到网格单元G1,G2,G3...Gm。
定理2,皮尔逊相关系数阈值PCCk:令PCCk为任意两个数据点的皮尔逊相关系数值,Gnum为网格单元的数据个数,sum为求和函数,ω为数据点的密度权重,则阈值PCCk为:
其中PCCi,j代表数据点i、j之间的关联程度,ω代表网格单元中数据的密度大小,xk,i、xk,j分别表示第k个网格中的任意两个数据点的值,m表示数据网格总数。
证明:PCC
i,j代表数据点之间的关联程度,即PCC
i,j越大,则数据点之间的相似度越大。并且对于
将权重ω代入,我们可以得到
而
的大小反映了数据的离散化程度,其值越大则数据越离散,反之,其值越小,则数据越集中。因此
的值的大小可以很好的对数据相似程度进行衡量,所以PCC
k可以作为网格划分的皮尔逊相关系数阈值,证毕。
1.3离群点的过滤
在获取网格单元G1,G2,G3...Gm后,由于网格单元存在离群点,也会导致数据的离散系数增大。为了进一步减小数据的离散系数,提出了一种离群因子GOF来对离群点过滤,其具体过程为:计算网每个格单元中数据的GOF值,若GOF值>>ε,则将该数据点视为离群点,并对其进行删除;其中>>表示远大于,ε表示网格单元数据阈值。
定理3,离群因子GOF:令d(xi,xj)表示网格中两个数据点的欧氏距离,x表示网格单元的中心点,则离群因子GOF为:
其中xi表示网格中第i个数据点,xj表示网格中第j个数据点,mc表示网格中数据点的个数,m表示数据网格总数。
证明:d表示当前网格中其余的m-1个数据点的欧氏距离,其值的大小可以表示网格的密度。当d越小,表明网格的密度越大,反之,则越小。
表示当前数据点到网格中心的距离。对于离群点来说,其值会相对于其他数据点更大。因此如果数据点的GOF值>>ε,则可以将此数据点过滤,所以可以用GOF来过滤网格的离群点,证毕。
2.局部簇簇数的确定
针对大数据环境下并行化K-means算法中的局部簇簇数难以确定的问题,提出SPFG策略,并通过势函数与高斯核函数来完成数据的覆盖与搜索,获取局部聚类的簇数。其具体过程为:
1)对数据集中任意一对数据xi、xj,计算其作用势γ(xi,xj),并以xi为基准样本,将其他的样本点对xj的作用势进行累加,得到每个样本点的作用势集合为:ρ={ρ1,ρ2,...,ρn},其中ρ1表示第1个样本点的作用势,ρ2表示第2个样本点的作用势,ρn表示第n个样本点的作用势;
2)从ρ中选择最大作用势ρi放入一个空的集合M{}中,并以ρi为当前的高斯核中心,以给定的核宽σ建立相应的高斯核来对原始数据的一个局部区域有效覆盖
3)消除当前高斯核所覆盖的局部区域的样本势值,提出基于高斯核函数的更新函数FU(xi,yj)对数据集中的其他样本点进行更新。
定理4,更新函数FU(xi,yj):令当前的高斯核中心为ρi,ρj为集合中的样本点,则其更新函数FU(xi,yj)如下所示:
证明:由高斯核函数的的衰减特性可知,当样本点距离高斯核中心较远时,x
j对x
i的影响十分小,又由于
表示高斯内核,所以数据集S中的各个样本点的势值都可以有效更新。证毕。
更新后每个样本点的作用势集合为ρ'={ρ1',ρ'2,...,ρ'n},当更新后的势值满足max{ρ1',ρ'2,...,ρ'n}>δ时,即可从ρ'中选择势值最大的样本点,放入集合M2{}中。通过这种方式继续寻找下一个新的样本点,直到数据集S被完全覆盖,集合M2{}中的样本点的个数便是局部聚类的簇数。其中δ表示作用势的一个阈值。
3.局部簇质心初始化
在获取了局部聚类的簇数之后,为了进一步减少算法对初始质心的依赖性,提出了策略ASPSO。通过ASPSO策略来对局部簇质心进行初始化,提升局部聚类的效果。该策略主要包括两个阶段:自适应参数的确定、质心初始化。(1)自适应参数确定阶段:提出AS策略,引入柯西变异算子,设置粒子平均速度与边界限制参数η来作为自适应参数;(2)质心初始化阶段:通过AS策略与PSO算法相结合,并根据自适应参数,对粒子的速度与位置不断更新,跳出局部最优,获取初始化质心。所述AS策略是本文针对PSO算法陷入局部最优问题而设计出来的一个策略。
3.1自适应参数的确定
在实现质心初始化的过程中,提出了粒子的收敛性,由此性质可知粒子最终收敛于
算法将停止运行,如果算法没有在收敛之前得到全局最优解,就会导致过早收敛,陷入局部最优解。其中,
表示粒子本身的历史最佳位置,
表示种群历史最佳位置。
定理5,粒子的收敛性:令ε>0,max(||α||,||β||)<1,存在N≥1,使得对于任意的n≥N,有
其中,n为数据的总的个数,N为一个大于1的随机数,ε为网格单元数据阈值,max(||α||,||β)表示取其最大值且不能大于1,其中α、β表示两个任意的范数值小于1的数,||·||表示范数。
证明:
当max(||α||,||β||)<1时,可得:
所以,
对两边求极限得:
证毕。
因此,为了实现初始质心的全局最优解,需要设计自适应参数来避免局部最优。为此,SP-ASPSO算法设计了AS策略,来确定自适应参数,其具体过程如下:
1)提出粒子群体平均速度
作为第一个自适应参数,计算出
值,设置其为控制变异步长的参数;
定理6,粒子群体平均速度
已知粒子的个数即数据的总的个数为n,粒子的速度为v
k,i,则粒子群体平均速度为:
证明:由于在初始阶段,粒子群体平均速度较大,随着粒子的位置的不断更新,由
可知,粒子的速度不断减小,导致平均速度也相对减小,所以群体也开始慢慢收敛,即其平均速度的变化的趋势与收敛的趋势是一致的,所以选取平均速度作为控制变异步长的自适应参数。证毕。
2)提出柯西变异算子的离散性,由此性质可知,柯西分布比高斯分布具有更加离散的取值,更有利于算法跳出局部最优。因此,AS策略引入的变异算子为柯西变异算子,并将其与参数粒子群体平均速度
结合,根据公式(10)对陷入局部最优的粒子进行位置更新,跳出局部最优。
其中,
为当前粒子位置,
为更新后的位置,
为粒子群体平均速度C(1)为柯西变异算子
定理7,柯西变异算子的离散性:令柯西分布函数为
高斯分布函数为
即存在N>0,使得当|x|>N时,有f(x)>g(x)。其中,x'为定义分布峰值位置的位置参数,γ为最大值的一半处的一半宽度的尺度参数,σ表示核宽,μ表示均值,N为任意的一个大于0的数,|·|表示绝对值。
证明:由于f(x)与g(x)都是以x=μ对称,所以要想证明f(x)>g(x)只需证明当x>N时,f(x)>g(x)即可。令
显然存在N>0时,使得W(x)>0,即
即可知f(x)>g(x),证毕。
3)设计边界限制参数η,由于C(1)是引入的柯西算子,是由t=1的柯西分布函数产生的随机数,并不能得到有效搜索区域,因此,在进行数据集搜索时,对搜索区域进行边界限制,只对满足边界限制参数η的数据区域进行搜索。
定理8,边界限制参数η:令x
0为x
i的中位数,
和
分别表示x
i左侧和右侧时的尺度参数,则参数η为:
其中对于任意的x满足
γ
i表示尺度参数,x
i表示第i个数据点的值。
证明:由于x
0为x
i的中位数,即(x-x
0)
2表示粒子的位置维度的2阶中心矩,减少了粒子的离散化程度,从而减少了噪音的影响。式
通过尺度参数对尺度参数与2阶中心矩的和的比值,从而可以有效防止边界限制参数η过大而影响算法的收敛。而由于x满足:
即
或
所以可得到
所以
即在边界
内进行搜索,从而可以得到有效搜索区域。证毕。
3.2质心初始化
在通过AS策略进行自适应参数选取,保证不会陷入局部最优解之后,便可以进行质心的初始化。其具体过程为:
1)将每个网格单元的数据看作一群粒子S1,S2...,So,其中S1表示第1个粒子,S2表示第2个粒子,So表示第o个粒子;并通过公式(3)(4)(5)对其进行初始化;
2)计算每个粒子的适应值,并将其与粒子本身的最佳位置
种群的历史最佳位置
进行比较,如果适应值较优,则用适应值替换掉当前的
进行适应值更新;
3)计算边界限制参数η的值,获取有效搜索区域,根据更新的适应值,结合公式(9)与公式(10)在有效搜索区域中对粒子的速度与粒子的位置进行更新;
4)将每次更新的
记录在集合W{}中,得到
并对集合W{}中的值进行比较,选取前K个较大的值,并找到其对应的粒子点,便是数据集的初始质心。
3.3局部并行化聚类
在对网格单元的数据质心初始化之后,便需要对网格单元进行并行化合并,获取局部簇,实现局部并行化聚类,其具体过程如下:
1)将各个网格单元G1,G2,G3...Gm分配到Partition;
2)通过mapRartitions算子计算出各个网格单元的中心点
其中mapRartitions算子为:
其中
表示第i个网格单元的中心点,x
i表示第i个数据点,mcount表示各个网格中的数据总数。
3)将各个网格单元中的质心点集
与网格中心点
输入flatMap算子,并找到质心点所对应的网格单元,并标记为:C
1,C
2,...,C
P计算出网格中心点与质心点之间的欧氏距离D
i,其中flatMap算子为
输出D
i值;其中
表示第j个质心点,x
p表示第p个数据点,mcount表示各个网格中的数据总数。
其中,
表示网格单元中的第1个质心点,
表示网格单元中的第2个质心点,
表示网格单元中的第k个质心点;C
1表示第1个质心点所对应的网格单元,C
2表示第2个质心点所对应的网格单元,C
P表示第3个质心点所对应的网格单元;
4)根据输出的D
i值,通过mapToPair算子选取值最小的网格单元进行合并,即
反复循环,直到所有网格单元合并完毕,最后进行reduceByKey操作汇总,获得局部簇C
1',C'
2,...C'
K。其中G
i表示网格单元,C
i表示质心对应的网格单元,
为第i个网格单元的中心点;C
1'表示第1个簇,C'
2表示第2个簇,C'
K表示第K个簇。
4.局部簇合并
目前大数据下的并行划分聚类算法,在对局部簇的合并中采用对所有簇的点与边集同时展开搜索进行局部簇的合并,导致聚簇时间和空间消耗偏高,造成算法在全局簇的获取上效率低。因此,针对局部簇的合并效率低的问题,在Spark计算框架的基础上,提出基于簇半径与邻居节点的局部簇合并策略CRNN,其主要步骤如下所示,并在图1给出了总体的运行过程:
1)对于每一个簇C1',C'2,...C'K,分别计算出离质心距离最大的点,以其到质心的距离作为簇半径Ri。在获取每一个簇的簇半径之后,便计算出各个簇之间的邻居节点。
2)对于簇第i个簇Ci'、第j个簇Cj',通过邻居节点集疏密程度判断两个簇之间的亲密程度,并分别计算出两个簇的样本点数ni,nj,提出簇的相似性函数CSM(ni,nj),计算出簇与簇之间的相似度。
定理9,簇的相似性函数CSM(ni,nj):令nei,nej分别为Ci,Cj之间的邻居节点与非邻居节点的个数,ni为簇Ci'的样本点的个数,nj为簇Cj'的样本点的个数,则簇的相似性函数表示为:
其中k为分割维度。
证明:由于ne
i与ne
j分别表示两个簇之间的交集节点与非交集节点,即代表了两个簇之间的全部数据信息,通过与两个簇之间总数据点进行比值,体现了两个簇中的相交数据占所有数据的百分比,可以间接的衡量簇与簇之间的相似性。对于(ne
i/2k)
2-ne
i/k通过展开可知:(ne
i/2k)
2-ne
i/k=(ne
i 2-4kne
i)/4k
2=ne
i(ne
i-4k)/4k
2,从结果ne
i(ne
i-4k)/4k
2可知,当两个簇之间的邻居节点较少时,即ne
i(ne
i-4k)/4k
2值较小,如果两个簇之间无交集,结果甚至会小于0。因此,
可以很好的衡量簇与簇之间的交集,所以簇的相似性函数SM(n
i,n
j)可以很好的表示簇的相似度。证毕。
3)将各个簇C1',C'2,...C'K分配到多个Partition,根据(2)计算出的相似度值,通过算子mapRarti-tions对簇之间的相似度进行比较,将相似度最大的两个簇进行合并,对于合并完的两个簇,对其中的一个簇进行标记merged,另一个簇则通过flatMap算子对其进行簇半径更新,反复循环,直到不存在两个非merged的簇还有邻居节点,最后进行reduceByKey操作汇总,实现局部簇的并行化。
5.基于Spark和ASPSO的并行化K-means算法(SP-ASPSO)的有效性
为了验证算法SP-ASPSO的聚类效果,我们将SP-ASPSO方法应用于Online Retail、N_BaloT、Health News及Bag words四个数据集上,其具体信息如表1所示。将SP-ASPSO、SP-DAP和SP-GAKMS算法在聚类精确度等方面进行了比较。
表1实验数据集
|
Online Retail |
N_BaloT |
Health News Bag words |
Records |
1067371 |
7062606 |
580000 8000000 |
Attributes |
8 |
115 |
250000 171 |
Size(MB) |
580 |
960.5 |
630.2 1687.9 |
5.1SP-ASPSO方法的并行性能分析
为验证SP-ASPSO算法的加速比,将SP-ASPSO算法、SP-DAP算法、SP-GAKMS算法与SP-LAICA算法分别在Online Retail、N_BaloT、Health News及Bag words四种数据集上进行对比实验,并使用加速比作衡量指标,分别比较各个算法在不同节点数下的加速比,进而对各个算法的性能进行比较分析。其实验结果如下所示:
从图2(a)四种算法在Online Retail的加速比,图2(b)四种算法在N_BaloT的加速比,图2(c)四种算法在Health News的加速比,图2(d)四种算法在Bag words的加速比可得出:在处理Online Retail、N_BaloT、Health News及Bag words数据集时,各方法运行的加速比随着节点数的增加而逐渐上升,并且SP-ASPSO算法凭借局部簇合并策略CRNN,极大的提高了并行化效率,在各个数据集上运行始终具有最高的加速比。随着节点数的增加,SP-ASPSO算法加速比相较于其它三种算法增加的趋势也更加显著。其中,在Online Retail数据集上,当节点数达到4时,SP-ASPSO的加速比相较于其它三种算法分别增加了0.3,0.28,0.4;在特征属性适中的N_BaloT中当节点数达到4时,SP-ASPSO的加速比相较于其它三种算法分别增加了0.3,0.26,0.4;在特征属性较多的Bag words中当节点数达到4时,SP-ASPSO的加速比相较于其它三种算法分别增加了0.03,0.02,0.1。产生这些结果的主要原因是:SP-ASPSO设计了PCCV策略与CRNN策略,通过计算皮尔逊相关系数阈值,减少数据的离散系数,并在计算出邻居节点之后,设计了相似性函数进行相似度判断,极大的提高了局部簇并行化合并的效率,进而使得在节点数量越多时,SP-ASPSO的加速比相比于其它三种算法增加的趋势越加显著。而SP-DAP与SP-GAKMS在数据划分阶段与质心初始化阶段对算法进行了优化,间接的提高了算法聚类效率,但在并行化阶段并未解决对簇相似性合并问题,导致簇的合并效率不高;而对于SP-LAICA,虽然其通过局部聚簇寻找数据集中连接紧密的节点集,并迭代合并局部簇,实现了对局部簇的并行化合并,但由于迭代方式的局限性,并不能较好的提高聚类的并行化聚类效率,因此在四种数据集中SP-ASPSO的加速比相较于其它三种算法一直保持最高,具有最佳的加速比性能。
5.2SP-ASPSO方法的聚类效果分析
为验证SP-ASPSO算法的准确度,使用ARI作为衡量指标,将SP-ASPSO算法、SP-DAP算法、SP-GAKMS算法与SP-LAICA算法分别在Online Retail、N_BaloT、Health News及Bagwords数据集上进行处理,并分别运行10次得出聚类结果,取其聚类结果均值作为实验结果。实验结果如下所示:
从图3中可以看出,在对各数据集进行处理时,SP-ASPSO算法的ARI值始终保持最高,并且随着数据集的特征属性增多,SP-ASPSO的ARI值与其它三种算法的ARI值相比较,SP-ASPSO方法的优势更加明显。尤其是在Bag words数据集上,SP-ASPSO凭借着设计了SPFG策略,其ARI值更是远远高于SP-LAICA。然而在数据特征维数相对较少的数据集上,各个算法的ARI值差距并不明显。其中,在Online Retail数据集上,SP-ASPSO的ARI值相比于SP-DAP、SP-GAKMS与SP-LAICA分别高出了0.02,0.03,0.04,各算法的ARI值相差不大;在对数据特征维数相对适中的Health News数据集进行处理时,SP-ASPSO的ARI值比其它三种算法分别高出了0.05,0.07,0.11;在对数据量与特征维数较多的Bag words数据集进行处理时,SP-ASPSO的ARI值相比于SP-DAP、SP-GAKMS与SP-LAICA分别高出了0.06,0.1,0.12。产生这些结果的主要原因是:SP-ASPSO设计了ASPSO策略计算出自适应参数,通过自适应参数更新粒子的位置和速度,减少了局部簇质心随机性的影响,极大的加强了算法聚类的准确性。在特征属性较少的数据集上,由于数据集的特征属性较少,导致初始质心的影响并不显著,为此在数据量与特征属性较多的Health News与Bag words数据集上,SP-ASPSO的ARI值才会明显要高于其它三种算法。对于SP-LAICA方法在对数据集进行并行化聚类时,仅仅使用了二次划分算法避免了重复的迭代计算,并未在并行化聚类之前对数据集进行优化,导致其聚类效果并不佳,因此,在四种数据集中,其ARI值都一直处于最低。通过对比算法在四种数据集上的ARI值,可以看出SP-ASPSO算法相较于其它三种算法ARI值一直保持最大,这也表明了SP-ASPSO方法具有最佳的聚类效果。
综上所述,我们所提出的基于Spark和ASPSO的并行化K-means算法(SP-ASPSO),在聚类效果和并行效率上都有显著的提升。
尽管已经示出和描述了本发明的实施例,本领域的普通技术人员可以理解:在不脱离本发明的原理和宗旨的情况下可以对这些实施例进行多种变化、修改、替换和变型,本发明的范围由权利要求及其等同物限定。