法律状态公告日
法律状态信息
法律状态
2016-03-02
未缴年费专利权终止 IPC(主分类):G06F17/30 授权公告日:20111207 终止日期:20150114 申请日:20080114
专利权的终止
2011-12-07
授权
授权
2008-09-03
实质审查的生效
实质审查的生效
2008-07-09
公开
公开
技术领域
本发明涉及海量多媒体数据处理领域,尤其涉及一种数据聚类方法。
背景技术
在信息大爆炸的年代,人们所面对的数据是海量的。在GoogleTM上搜索“汽车”这个关键词,你会得到217,000,000个结果;搜索“赛车”这个关键词,你的结果数量就只有13,600,000了;搜索“蓝色赛车”这个关键词,你的结果数量将进一步下降,只有455,000。由此可见,对已有数据进行聚类分组,使每组内的数据都具有某些共同的特征,将为你对数据的进一步处理带来很大的方便。
目前的聚类方法有很多种,最常用的是k-均值聚类方法。k-均值聚类方法实现起来很方便,但是它对初始聚类中心的选取很敏感——如果初始聚类中心选取不当,将导致错误的聚类结果。对于海量的结构未知的数据集合,我们通常采用随机采样的方法来产生这个初始聚类中心集合。当k值越来越大时,初始聚类中心集合选择正确的几率会越来越小。而且,对于k-均值聚类方法而言,我们需事先指定类的个数。而对于海量的结构未知的数据集合,我们究竟应该把它分成几类是不知道的。
相似度传播数据聚类方法AP(Affinity Propagation,AP,Brendan J.Frey andDelbert Dueck,“Clustering by passing messages between data points,”Science,315(5814):972-951,2007)就没有以上缺点。它将两两数据对象之间的相似度作为输入,而且此相似度可以是非对称的,即数据对象A到数据对象B的相似度可以不等于数据对象B到数据对象A的相似度。实值信息在数据对象之间交换传播直至一组高质量的聚类中心和相应的聚类产生。它的工作过程如下:
输入需要聚类的具有N个数据对象的集合的相似度矩阵SN×N,不同的数据对象i和j之间相似度s(i,j)的度量取决于待聚类的数据对象的类别;对于二维空间中的点,采用负欧氏距离度量任意两个对象之间的相似度,负欧氏距离的公式如下:
其中
p和q是两个二维的矢量;
自相似度s(i,i)代表了对象i作为聚类中心的合适程度,其值越接近于0,则说明其越适合作为聚类中心;在数据分布未知的情况下,将自相似度s(i,i)统一设成所有不同数据对象之间相似度s(i,j),i∈{1,Λ,N},j∈{1,Λ,N},i≠j的中值。
1)创建大小为N×N可用性矩阵A和责任矩阵R,并将它们全部初始化为0;
2)对于所有的i∈{1,Λ,N},根据公式:
更新矩阵R的所有元素;
3)对于所有j∈{1,Λ,N},根据公式:
更新矩阵A的所有元素;
4)根据公式:
arg maxj[a(i,j)+r(i,j)] 4
来确定每个数据对象i的代表点;
5)重复步骤2到步骤4,直至步骤4中公式arg maxj[a(i,j)+r(i,j)]的计算结果在连续的50次迭代中保持不变,或者总的迭代次数达到最大迭代次数。对于数据规模为2000的数据集合,这个最大迭代次数为1000。
但是,对于关系密集型数据集合,即任意两个对象之间的相似度都是有限的数据集合,用相似度传播数据聚类方法AP进行聚类时,其运行时间会随着数据量的增大成三次多项式增长。
发明内容
本发明的目的是提高相似度传播数据聚类方法AP在处理关系密集型数据集合时的效率,提供一种相似度传播数据聚类方法的加速方法。
相似度传播数据聚类方法的加速方法包括如下步骤:
1)输入需要聚类的具有N个数据对象的集合的相似度矩阵SN×N,
s[i,j]≤0,i∈{1,Λ,N},j∈{1,Λ,N};
2)将矩阵SN×N分割成k部分:
其中
k必须大于1,小于N/(4×C),
C是聚类结果中的类的个数的最大值,
子矩阵S11,S22,Λ,Skk都是方阵,
子矩阵S11,S22,Λ,Sk-1,k-1的大小是N/k×N/k,
子矩阵Skk的大小是[N-(k-1)×N/k]×[N-(k-1)×N/k];
3)把子矩阵S11,S22,Λ,Skk作为相似度传播数据聚类方法的输入,得到k个可用性矩阵A11,A22,Λ,Akk;
4)将步骤3)中的可用性矩阵A11,A22,Λ,Akk合并,得到整个数据集合的可用性矩阵A′:
其中
除去A11,A22,Λ,Akk,可用性矩阵A′的其余部分为0;
5)以A′作为相似度传播数据聚类方法的初始可用性矩阵AN×N,得到最终聚类结果。
所述的输入需要聚类的具有N个数据对象的集合的相似度矩阵SN×N,s[i,j]≤0,i∈{1,Λ,N},j∈{1,Λ,N}:不同的数据对象i和j之间相似度s(i,j)的度量取决于待聚类的数据对象的类别;对于二维空间中的点,采用负欧氏距离度量任意两个对象之间的相似度,负欧氏距离的公式如下:
其中
p和q是两个二维的矢量;
自相似度s(i,i)代表了对象i作为聚类中心的合适程度,其值越接近于0,则说明其越适合作为聚类中心;在数据分布未知的情况下,将自相似度s(i,i)统一设成所有不同数据对象之间相似度s(i,j),i∈{1,Λ,N},j∈{1,Λ,N},i≠j的中值。
所述的把子矩阵S11,S22,Λ,Skk分别作为相似度传播数据聚类方法的输入,得到k个可用性矩阵A11,A22,Λ,Akk:设输入相似度矩阵S的大小为N×N:
1)创建大小为N×N可用性矩阵A和责任矩阵R,并将它们全部初始化为0;
2)对于所有的i∈{1,Λ,N},根据公式:
更新矩阵R的所有元素;
3)对于所有j∈{1,Λ,N},根据公式:
更新矩阵A的所有元素;
4)根据公式:
arg maxj[a(i,j)+r(i,j)] 4
来确定每个数据对象i的代表点;
5)重复步骤2到步骤4,直至步骤4中公式arg maxj[a(i,j)+r(i,j)]的计算结果在连续的50次迭代中保持不变,或者总的迭代次数达到最大迭代次数。对于数据规模为2000的数据集合,这个最大迭代次数为1000。
所述的以A′作为相似度传播数据聚类方法的初始可用性矩阵AN×N,得到最终聚类结果:用步骤4)得到的矩阵A’作为相似度传播数据聚类方法的初始可用性矩阵,即:
设输入的相似度矩阵S和初始可用性矩阵A’的大小都为N×N:
1)创建大小为N×N可用性矩阵A和责任矩阵R,将A初始化为A’,将R全部初始化为0;
2)对于所有的i∈{1,Λ,N},根据公式:
更新矩阵R的所有元素;
3)对于所有j∈{1,Λ,N},根据公式:
更新矩阵A的所有元素;
4)根据公式:
arg maxj[a(i,j)+r(i,j)] 4
来确定每个数据对象i的代表点;
5)重复步骤2到步骤4,直至步骤4中公式arg maxj[a(i,j)+r(i,j)]的计算结果在连续的50次迭代中保持不变,或者总的迭代次数达到最大迭代次数。对于数据规模为2000的数据集合,这个最大迭代次数为1000。
本发明的有益效果:
1)该方法先将原始数据集合分组进行相似度传播数据聚类AP,然后把分组聚类的结果合并,并以此为初始状态再次使用相似度传播数据聚类方法AP进行聚类。在数据量达到一定规模时,比如1000,在整个数据集合上进行相似度传播数据聚类方法AP的迭代次数要比一开始就在整个数据集上使用相似度传播数据聚类方法AP迭代次数要少。同时,由于在本方法的最后一个步骤中,相似度传播过程运行在整个数据集上,所以得到的聚类结果与原始方法相似,甚至更佳。
2)当数据量很大时,由于在步骤把子矩阵S11,S22,ΛSkk作为相似度传播数据聚类方法的输入,得到k个可用性矩阵A11,A22,Λ Akk中,子矩阵Sii只有原始矩阵S的1/k2大,而相似度传播数据聚类方法AP的运行时间会随着数据量的增大成三次多项式增长,所以此步骤的运行时间此时可以忽略不计。
3)结合(1),分割式相似度传播数据聚类方法在处理大数据量关系密集型数据集合时,速度要比原始方法AP快。
附图说明
图1是相似度传播数据聚类方法在对2000个随机产生的呈流形分布的三维数据进行聚类得到的结果;
图2是本发明取k值为8在对同图1一样的2000个随机产生的呈流形分布的三维数据进行聚类得到的结果;
图3是本发明对随机产生的呈流形分布的三维数据集合进行聚类的流程图。
具体实施方式
如附图3所示,给出了对随机产生的呈流形分布的三维数据点数据集合进行聚类的流程图。下面结合本发明的方法详细说明该实例实施的具体步骤,如下:
1)输入需要聚类的具有2000个随机产生的呈流形分布的三维数据对象的集合的相似度矩阵S2000×2000,s(i,j),i ∈{1,Λ,2000},j∈{1,Λ,2000},i≠j;
2)将矩阵S2000×2000分割成8部分:
其中
子矩阵S11,S22,Λ,S88都是方阵,
子矩阵S11,S22,Λ,S77的大小是2000/8×2000/8=250×250,
子矩阵S88的大小是[2000-(8-1)×2000/8]×[2000-(8-1)×2000/8]=250×250;
3)把子矩阵S11,S22,Λ,S88作为相似度传播数据聚类方法的输入,得到8个可用性矩阵A11,A22,Λ,A88;
4)将步骤3)中的可用性矩阵A11,A22,Λ,A88合并,得到整个数据集合的可用性矩阵A′:
其中
除去A11,A22,Λ,A88,可用性矩阵A′的其余部分为0;
5)以A′作为相似度传播数据聚类方法的初始可用性矩阵A2000×2000,得到最终聚类结果。
所述的输入需要聚类的具有2000个数据对象的集合的相似度矩阵S2000×2000,s(i,j),i∈{1,Λ 2000},j∈{1,Λ,2000},i≠j:对于三维空间中的点,采用负欧氏距离度量任意两个对象之间的相似度,对三维空间中的点用负欧氏距离公式计算距离的公式如下:
其中
p和q是两个三维的矢量;
自相似度s(i,i)代表了对象i作为聚类中心的合适程度,其值越接近于0,则说明其越适合作为聚类中心;在数据分布未知的情况下,将自相似度s(i,i)统一设成所有不同数据对象之间相似度s(i,j),i∈{1,Λ 2000},j∈{1,Λ,2000},i≠j的中值。
所述的把子矩阵S11,S22,Λ,S88分别作为相似度传播数据聚类方法的输入,得到8个可用性矩阵A11,A22,Λ,A88:设输入相似度矩阵S的大小为250×250:
1)创建大小为250×250可用性矩阵A和责任矩阵R,并将它们全部初始化为0;
2)对于所有的i∈{1,Λ,250},根据公式:
更新矩阵R的所有元素;
3)对于所有j∈{1,Λ,250},根据公式:
更新矩阵A的所有元素;
4)根据公式:
arg maxj[a(i,j)+r(i,j)] 4
来确定每个数据对象i的代表点;
5)重复步骤2到步骤4,直至步骤4中公式arg maxj[a(i,j)+r(i,j)]的计算结果在连续的50次迭代中保持不变,或者总的迭代次数达到最大迭代次数,这里的最大迭代次数为1000。
相应的matlab算法实现可在http://www.psi.toronto.edu/affinitypropagation/apcluster 02Feb2007.m下载得到。
所述的以A′作为相似度传播数据聚类方法的初始可用性矩阵A2000×2000,得到最终聚类结果:用步骤4)得到的矩阵A’作为相似度传播数据聚类方法的初始可用性矩阵,即:
设输入的相似度矩阵S和初始可用性矩阵A’的大小都为2000×2000:
1)创建大小为2000×2000可用性矩阵A和责任矩阵R,将A初始化为A’,将R全部初始化为0;
2)对于所有的i∈{1,Λ,2000},根据公式:
更新矩阵R的所有元素;
3)对于所有j∈{1,Λ,2000},根据公式:
更新矩阵A的所有元素;
4)根据公式:
arg maxj[a(i,j)+r(i,j)] 4
来确定每个数据对象i的代表点;
5)重复步骤2到步骤4,直至步骤4中公式arg maxj[a(i,j)+r(i,j)]的计算结果在连续的50次迭代中保持不变,或者总的迭代次数达到最大迭代次数,这里的最大迭代次数为1000。
使用本发明对这2000个数据进行聚类,在以A′作为相似度传播数据聚类方法的初始可用性矩阵,得到最终聚类结果的过程中,总共迭代162次,整个聚类过程耗时147秒,得到58个聚类;而使用相似度传播数据聚类方法对同样的这2000个数据聚类,总共迭代302次,耗时266秒,得到58个聚类。由此可见,在处理大数据量关系密集型数据集合时,本发明速度要比原始方法AP快。
图1是使用相似度传播数据聚类方法得到的聚类结果,图2是使用本发明的方法得到的聚类结果。在图1中,正上方出现的错误聚类在图2中被纠正了,由此可见,本发明得到的聚类结果与相似度传播数据聚类方法相似,甚至更佳。
机译: 基于k近邻相似度和存储介质的数据聚类方法和装置
机译: 分割数据集的动态阈值化和相似度图像中的相似度值显示
机译: 分割数据集的动态阈值化和相似度图像中的相似度值显示