一种基于迭代的神经网络聚类方法

文档序号:9787869阅读:549来源:国知局
一种基于迭代的神经网络聚类方法
【技术领域】
[0001] 本发明主要用于解决机器学习中经典的聚类问题,使用方法涉及到由人工神经网 络改进的超限学习机算法。
【背景技术】
[0002] 对数据的聚类问题一直以来都是工业系统与计算科学中的重要研究内容。在这个 信息量爆炸的大数据时代,数据处理相关的业务需求日益增多,所要处理的数据也越来越 复杂。随着人们对聚类问题的深入研究,不断有新的聚类方法被提取。传统聚类算法如K均 值算法、最大期望算法以及层次聚类算法等,聚类速度快但仅适用于数据空间线性可分情 况的。新兴的聚类算法如谱聚类算法、深度学习自编码器、非监督超限学习机等,可以解决 数据空间高维且线性不可分的情况,但通常需要消耗较大的内存或需要较长的运行时间。
[0003] 目前,对于大规模复杂数据的聚类,既需要聚类算法有处理高维线性不可分数据 的能力,也需要解决内存与运行成本。本发明利用神经网络来解决聚类问题,使得该方法能 够有效地处理高维非线性复杂数据。并且引入超限学习机模型来求解神经网络,打打提升 了算法的运行速度。超限学习机,英文名为Extreme Learning Machine,是黄广斌教授于 2004年提出的针对单隐层前馈神经网络的学习方法。与传统神经网络优化的梯度下降算法 不同,超限学习机的学习过程不需要迭代操作,这大大减少了它的训练时间。此外,本方法 以K均值算法为基本框架,便于使用并行化的加速手段来减少聚类的时间消耗。并且使用超 限学习机的神经网络模型以及仅用少量榜样集进行训练的策略,因此该方法只需要较短的 计算时间与较少的内存消耗。
[0004] 综合来讲,本发明既解决了传统聚类方法不能很好处理高维非线性数据空间聚类 的问题,又解决了新兴聚类算法内存消耗大和运行时间长的问题,使得本方法能够有效地 处理大规模复杂数据的聚类问题。

【发明内容】

[0005] 本发明的目的在于提供一种基于迭代的神经网络聚类算法,本发明基于传统聚类 的框架,通过引入神经网络作为相似度衡量的依据,并通过不断优化网络结构得到更准确 的相似度衡量标准。
[0006] 本发明提出一种基于迭代的神经网络聚类算法包括以下步骤:
[0007] 步骤1,初始化超限学习机模型参数;
[0008] 步骤2,随机选取与所要聚类个数相同数量的样本,每个样本代表一个聚类,训练 超限学习机以得到初始的隐层到输出层间权值;
[0009] 步骤3,利用当前的超限学习机模型对样本进行聚类分组;
[0010] 步骤4,对于每一个聚类分组,根据规则选取多个样本作为该聚类分组的榜样;
[0011] 步骤5,使用上个步骤中得到各聚类分组的榜样样本来重新训练超限学习机模型;
[0012] 步骤6,若满足结束条件则输出聚类分组结果,否则返回步骤3。
[0013] 进一步,步骤1共包括以下2个子步骤:
[0014] 步骤1.1,设置超限学习机模型的隐层神经元个数L、隐层的激活函数g(0)以及正 则项系数γ ;
[0015] 其中隐层神经元个数L的取值大于样本的特征维度d;隐层的激活函数g(e)通常 Sigmoid函数,正则项系数γ的取值范围通常为[1(T 5,101Q];
[0016] 步骤1.2,随机初始化超限学习机模型中输入层到隐层的权值W以及偏置b,输入层 到隐层的权值W是一个d行L列的随机矩阵,随机范围为[1,1 ];偏置b是一个1行L列的随机矩 阵,随机范围为[_1,1],偏置b中的一列对应隐层中一个神经元的偏置。
[0017] 进一步,步骤2共包括以下2个子步骤:
[0018]步骤2.1,随机选取聚类个数个样本,即随机选取K个样本,其中每个样本都代表一 个聚类,构成初始榜样集和对应的目标输出来训练超限学习机模型;
[0019]步骤2.2,计算隐层神经元的输出妒)和超限学习机隐层到输出层的权重0((^,从而 得到初始模型,计算公式如式(2)、(3)、(4)所示:
[0020] H(0) = g(ff · E(0)+B(0)) (2)
[0023] 其中B(())为偏置b的行拓展矩阵,拓展为行数与B(())的行数相等的矩阵,即B (())为K行 L列的矩阵,Κ为所要聚成的类别个数,L为隐层神经元个数,代表矩阵Η(())的转置, 代表求广义逆矩阵,是一个L维的单位矩阵,Ικ是一个K维的单位矩阵。
[0024] 进一步,在步骤3中分为两个子步骤:
[0025] 步骤3.1,使用的超限学习机模型,输入层到隐层的权值W以及偏置b、激活函数g (Θ)、隐层神经元个数L以及正则项系数γ在迭代中是固定不变的;只有隐层到输出层的权 值β是随着迭代不断变化的;
[0026] 利用当前状态的模型参数计算样本Xl在输出层神经元上的输出值〇1,公式如下:
[0027] hi = g(ffxi | b) (5)
[0028] 0i = hiP(m-D (6)
[0029] 其中hi表示样本^在隐层上的输出值,是一个1行L列的矩阵,〇1是样本^在输出层 上的输出值,是一个1行K列的矩阵,代表上次迭代得到的隐层到输出层的权值;
[0030] 步骤3.2,根据样本在输出层神经元上的输出值,为样本进行分组聚类;输出层神 经元的个数与所要聚类个数相等,分配的规则是:将样本分配给输出层神经元的输出值最 高的那个神经元所对应的聚类分组中。
[0031 ] 进一步,步骤4分为以下两个子步骤:
[0032]步骤4.1,根据步骤3中得到的聚类分组情况,计算每个聚类分组的均值;
[0033]步骤4.2,在各个聚类分组中,计算类样本到所属聚类中心的距离,并在选择P个距 离聚类中心最近的样本,构成当前迭代的榜样样本集E(m);
[0034]若出现聚类分组中存在一个聚类中所包含的样本总数小于每类中需要选择出的 榜样个数p的情况时,则将该聚类分组中的所有样本作为代表该类的榜样样本;若出现某个 聚类分组中不包含任何样本的情况时,需要从除去其他聚类分组榜样样本集之外的样本中 随机选取一个作为该聚类分组的榜样。
[0035] 进一步,步骤5包括两个子步骤:
[0036] 步骤5.1,为步骤4中得到的榜样样本集构造目标函数;
[0037] 步骤5.2,计算隐层神经元的输出H(m)和新的超限学习机模型中隐层到输出层的权 重β(η),计算公式如式(7)、(8)、(9)所示:
[0038] H(m) = g(ff · E(m)+B(m)) (7)
[0041]其中B(m)为偏置b的行拓展矩阵,拓展为行数与E(m)的行数相等的矩阵,即B (m)为KX Ρ行L列的矩阵,Κ为所要聚成的类别个数,Ρ为每类中榜样的个数,L为隐层神经元个数, ||§^代表矩阵H(m)的转置,代表求广义逆矩阵,U是一个L维的单位矩阵,ΙΚΧΡ是一个Κ Χρ维的单位矩阵。
【附图说明】
[0042]图1是超限学习机模型的框架图。
[0043]图2是本发明迭代的神经网络聚类算法流程图。
【具体实施方式】
[0044]下面结合【具体实施方式】对本发明做进一步的说明。
[0045]指定一个待聚类样本集
以及所要聚成的类别个 数Κ,其中d代表样本的特征维度,Ν代表样本个数,Xl是一个d维的特征向量,即1行d列的矩 阵。我们这里以UCI中的Iris经典数据集作为待聚类样本集为例,所要聚成的类别个数K为 3,特征维度d为4,样本个数N为150,xi是一个1行4列的矩阵。
[0046]首先,在步骤1中要完成初始化超限学习机必要参数的任务,步骤1共包括以下2个 子步骤:
[0047]步骤1.1,设置超限学习机模型的隐层神经元个数L、隐层的激活函数g(0)以及正 则项系数γ。其中隐层神经元个数L的取值通常大于样本的特征维度d,本方法中隐层神经 元个数对最终聚类结果的影响不大,一般取1000或2000即可;隐层的激活函数g(0)通常采 用Sigmoid函数,Sigmoid函数的表达式如式(1):
[0049]若Θ为矩阵,则视为对矩阵中的每个元素计算Sigmoid函数。正则项系数γ的取值 范围通常为[10_5,101()],需要根据数据集的不同进行微调。本例中隐层神经元个数L为 1000,隐层的激活函数g(9)为Sigmoid函数,正则项系数γ为10 8。
[0050]步骤1.2,随机初始化超限学习机模型中输入层到隐层的权值W以及偏置b,其中由 于超限学习机输入神经元个数与样本的特征维度相同为d、隐层的神经元个数为L,因此输 入层到隐层的权值W是一个d行L列的随机矩阵,随机范围通常为[_1,1];偏置b是一个1行L 列的随机矩阵,随机范围通常为[-1,1 ],偏置b中的一列对应隐层中一个神经元的偏置。本 例中输入层到隐层的权值W为取值范围[1,1 ]的3行1000列随机矩阵,偏置b是一个取值范围 [_1,1]的1行1000列随机矩阵。
[0051 ]这里需要说明的是,使用神经网络类的学习模型时,需要对数据进行归一化操作, 通常可采用线性函数归一化或0均值标准化将数据映射到[0,1],本例中采用的是线性函数 归一化方法。
[0052] 接下来,在步骤2中要得到超限学习机的初始模型,步骤2共包括以下2个子步骤:
[0053] 步骤2.1,随机选取聚类个数个样本,即随机选取K个样本,其中每个样本都代表一 个聚类,构成初始榜样集E(Q)和对应的目标输出T (Q)来训练超限学习机模型。需要注意的是, 神经网络的训练需要给每个样本自动生成目标输出,通常的方法是将表示该类所的属类别 位设为"Γ,其他位设为"〇"。以UCI中的Iris经典数据集中随机选取3个样本为例,具体如表 1:
[0054] 表1生成的样本与对应目标输出的示意表
[0057] 步骤2.2,计算隐层神经元的输出H(())和超限学习机隐层到输出层的权重β(()),从而 得到初始模型,计算公式如式(2)、(3)、(4)所示:
[0058] H(0) = g(ff · E(0)+B(0)) (2)
[0061] 其中B(())为偏置b的行拓展矩阵,拓展为行数与E(())的行数相等的矩阵,即B (())为K行 L列的矩阵,Κ为所要聚成的类别个数,L为隐层神经元个数,代表矩阵Η(())的转置, 代表求广义逆矩阵,Ικ是一个L维的单位矩阵,Ικ是一个K维的单位矩阵。
[0062] 以隐层神经元个数为1000和随机选取3个样本为例,生成的偏置b以及其拓展矩阵 B
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1