一种基于改进kd树标记点选取的快速谱聚类方法与流程

文档序号:16783479发布日期:2019-02-01 19:17阅读:270来源:国知局
本发明涉及数据挖掘下的聚类领域,特别涉及一种基于改进kd树标记点选取的快速谱聚类方法。
背景技术
:谱聚类来源于图论中的最小切割问题。如果把数据集表示成图,每一个数据点作为图的顶点,连结顶点的边表示相邻顶点间的相似性。那么谱聚类的过程就是通过切割相似度最小的边将相似图分为几个子图,使得子图内相似性最大子图间相似性最小。谱聚类对高维的小规模数据聚类效果非常好,这是因为它独有的将拉普拉斯矩阵进行特征分解的步骤。然而,这个特征分解步骤的计算复杂度很高(为o(n3),n是数据点的数量)。因此,将谱聚类用于处理大规模数据很不现实。为了解决这个问题,前人研究出了许多改进方法。这些算法的主要思想都是在数据集中选取一定数量的标记点,然后计算这些标记点间的相似性,然后将标记点与全部数据点之间建立一定的联系,将结果推广到全部数据点中。nystrom方法就是用标记点采样从邻接矩阵中抽取出样本列,它的满矩阵是用在标记点和其他点之间的相关关系来近似的。有人采用随机选取以及求取k-means聚类中心的方法来确定标记点,然后将所有的数据点分配给距离最近的标记点。在这些标记点上进行谱聚类后将每个数据点分配给他们对应的标记点所属的类。还有人在数据集中选择p个标记点然后计算所有点和这些标记点的相似性并建立一个的矩阵。然后整个矩阵的特征向量由这个矩阵的特征分解来近似。它的结果接近于在n个数据点上进行谱聚类的结果,但是计算时间却少得多。训练一个自编码器要比特征分解快得多,因为它很容易并行化。但是神经网络的输入层的大小等于数据点的数量,随着n的增长,整个网络会急剧扩大。因此,将此结构用于大型数据集是不可行的。技术实现要素:本发明所要解决的技术问题是提供一种基于改进kd树标记点选取的快速谱聚类方法,本发明的总体复杂度是o(np+nd),实现了快速而准确的聚类。为实现上述目的,本发明提供以下的技术方案:一种基于改进kd树标记点选取的快速谱聚类方法,包括如下步骤:步骤一、输入有n个数据点的数据集x=(x1,x2.....xn),运用改进的kd树选取标记点的方法从x中选取p个标记点,记为{m1,m2,......mp};m表示子块中心点;步骤二、计算所有数据点与标记点之间的相似度,将他们存放在矩阵w中;步骤三、计算度矩阵;步骤四、计算自编码器的输入s;步骤五、用s作为输入训练自编码器;步骤六、在训练好的自编码器的隐藏层中进行k-means聚类。进一步的改进,改进的kd树选取标记点的方法步骤如下:数据集x中有n个数据点;计算数据集x每一维的方差,依次选取前y个方差最大的维度为整个数据集的划分方向;划分方向后的左右子树节点数量按如下方法确定:若要从含有n个数据点的数据集为x=(x1,x2.....xn)中选取p个标记点,由于标记点为分子块后的数据中心点,即将n个数据点分成p块,每一个子块的数据点个数u为n与p的商,因为数据点个数为整数,将商向下取整,记为:这样划分方向后的左、右子树分别含有的子块数与u的积即分别为左、右子树的节点数目;子块划分的方法如下:限定2y≤p≤2y+1,那么首先限定左子树的子块数为v左=2y个,则右子树的子块个数为v右=p-2y个;然后每一次划分时,将左子树进行平均分,右子树按照上述方法再进行分割,限定2y′≤v右≤2y′+1,那么个子块,个子块,如此循环往复,直至划分为左右节点都为一个子块;最终计算每个子块中数据点的平均值m作为子块中心点,子块中心点的集合p即为选取的标记点,记为p={m1,m2,.....mp},(p<<n)。进一步的改进,所述步骤二步骤如下:用取得的p个标记点与全部数据点之间的相似度表示出一个长度为n的特征向量:所取得的p个标记点为{m1,m2,......mp}(p<<n)然后,计算所有数据点与p个标记点之间的相似度并构造一个p×n的相似矩阵w;使用高斯核函数来计算两点之间的相似性:ωij;i表示第i行,j表示第j列;xi表示数据集中的第i个数据点;其中,σ为数据点和标记点之间距离的中值;保证相似度的值在区间[0-1]之间;w的每一列被表示为wj,代表原始数据集x中的一个点和所有标记点之间的相似度;构造矩阵w时间复杂度是o(npd),d表示特征的数量。进一步的改进,所述步骤三如下:构造拉普拉斯矩阵:定义矩阵m=wtw,基于这个定义;m依然是所有数据的相似矩阵;由于mij=witwj,mij表示相似矩阵m中第i行第j列的值;wi表示矩阵w的第i行;dii=∑imij=∑iwitwj,dii表示度矩阵对角线上的元素数值;则其中ws是一个p×1的向量,它的第k个列元素是w的第k行的所有元素之和;因此,d可以被写成:d=diag(wtws);d表示对角矩阵;最后我们定义拉普拉斯矩阵为:lnorm=d-1/2md-1/2=d-1/2wtwd-1/2,lnorm表示拉普拉斯矩阵;步骤三、拉普拉斯矩阵的前k个最小特征值对应的特征向量f,将各自对应的特征向量f组成的矩阵按行标准化,最终组成n×k维的特征矩阵f。具体实施方式下面详细说明本发明基于改进kd树标记点选取的快速谱聚类方法的优选实施方式。输入:有n个数据点的数据集输出:将数据集分为k类1.运用改进的kd树选取标记点的方法从x中选取p个标记点,记为2.计算所有数据点与标记点之间的相似度,将他们存放在矩阵w中。3.计算度矩阵4.计算自编码器的输入s,5.用s作为输入进行训练自编码器6.在训练好的自编码器的隐藏层中进行k-means聚类。使用的自编码说明本文中自编码器的输入为s=wd-1/2。训练自编码器的目标函数是s的重建误差。将自编码器训练好之后我们获得了潜在空间中所有数据点的表示,因此就可以在降维后的数据空间也就是自编码的隐藏层上运行k-means聚类,得到聚类结果。同样,我们不需要计算s=wd-1/2,我们可以单纯的将d-1/2中的每一个对角线元素与w的相应列相乘,即如上所述,训练自动编码器的目标函数是将网络输入输出之间的欧式距离最小化,也就是s和s′,如果每层的隐藏单元的数量是p,最有效的方法是使用反向传播机制和mini-batch梯度下降法训练神经网络。与特征分解问题不同,训练阶段可以采用分布式的方法,大大缩短了计算时间。试验本发明的快速聚类方法,实验中的所有代码都是在matlabr2015b中实现的,运行在windows8上,cpu为2.60ghzi7-4720hq,16gb主存。数据集描述:数据集数据点个数属性个数类别数usps929825610protein243873573connect-4675571263mintist70000784410实验在4个大数据集上进行,包括手写数字(即mnist和usps)、分子生物学(protein)、connect-4game。所有数据集的详细信息如表1所示。性能指标:对所有的方法,聚类结果使用准确性(acc)进行评价。我们将所有方法运行10次,并记录平均结果和运行时间。其中tp表示将正类预测为正类数,tn:表示将负类预测为负类数fp:表示将负类预测为正类数,fn:表示将正类预测为负类数为了证明本发明方法的优越性,我们选择将本发明的方法与几种最先进的方法进行了比较。sc:传统谱聚类。lsc-r:基于标记点的谱聚类,标记点随机选取。lsc-k:基于标记点的谱聚类,标记点用k-means生成。在所有实验中,自编码器在输入层和输出层之间有五个隐藏层。图层中的单元数量会因为不同的数据集而改变,所有隐藏层的激活函数是relu,中间层为线性激活,输出层的激活函数是sigmoid。对于lsc-k、lsc-r和kdfsc中使用的标记点个数,我们设p=1000。实验结果:数据集sclsc-rlsc-kkdfscusps68.031.661.867.2protein47.947.447.648.3connect-448.342.443.246.8minist72.467.373.574.1表2—4个数据集的性能(acc)(%)由于所有的方法最后一步用到的都是k-mean聚类,此段聚类时间基本相同。因此我们在表3中提供的是在k-means聚类之前的时间,这样比较起来更为方便。数据集sclsc-rlsc-kkdfscusps5.82.112.83.0protein73.316.1267.419.8connect-4398.717.7534.520.9minist242.63.4149.441.5表3-在4个数据集上的运行时间(s)从表中可以看出,lsc-k采用k-means的方法选择标记点,k-means需要大量迭代才能收敛,高计算复杂度限制了它的速度,例如在connect-4上执行k-means需要大约500秒的时间。如前所述,lsc-r随机选择标记点,效率极高,但性能较差,见表2。相比之下,kdfsc采用改进kd树生成标记点的方法,结合自编码降维的方法,以较短的时间成本获得了较高的性能。因此,我们可以认为基于改进kd树标记点选取的快速谱聚类算法在基本不影响聚类效果的情况下大大提高了聚类速度。以上的仅是本发明的优选实施方式,应当指出,对于本领域的普通技术人员来说,在不脱离本发明创造构思的前提下,还可以做出若干变形和改进,这些都属于本发明的保护范围。当前第1页12
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1