一种数据流负载预测方法与流程

文档序号:13446965阅读:195来源:国知局
一种数据流负载预测方法与流程

一种数据流负载预测方法,用于负载预测,属于数据流处理技术领域。



背景技术:

随着技术的不断发展,越来越多的计算资源被迁移到云端,使用平台即服务和按需计费的方式,如何在保证系统稳定运行的前提下,尽量减少运行成本,成为一个研究热点,负载预测技术可以在一定程度上解决上述问题,因此负载预测已经成为数据流处理系统中的研究热点和研究重点之一。

根据预测算法模型,针对负载的预测模型主要可以分为线性预测和非线性预测。其中线性预测主要包括arma模型,farima模型,而非线性预测主要包括神经网络、小波理论和支持向量机,由于流处理负载波动规律的不确定性,因此非线性预测的方法更受到大家的重视。大多数的预测算法,其基本原理是基于已有的负载时间序列数据和其他的历史规律进行预测,例如自回归滑动平均模型、差分自回归滑动平均模型、霍尔特指数平滑法。这些预测算法建立在了解每一时刻系统负载真实情况的基础上,频繁地请求访问,会给服务器带来不小的开销,在一定程度上减少了负载预测带来的收益。而且上述算法并没有针对流处理系统的特点进行研究。



技术实现要素:

本发明的目的在于:解决现有技术中大多数的负载预测算法,频繁地请求访问服务器,给服务器带来不小的开销,减少了负载预测带来的收益的问题;提供了一种数据流负载预测方法。

本发明采用的技术方案如下:

一种数据流负载预测方法,包括以下步骤:

步骤1:初始化已知数据源、计算拓扑、计算任务产生的计算拓扑数据集;

步骤2:根据拓扑数据集训练优化后的som网络;

步骤3:提取出新的计算任务的数据特征,寻找训练好的som网络的获胜神经元;

步骤4:判断获胜神经元是否符合约束,如果符合,跳转到步骤5,否则跳转到步骤6;

步骤5:通过训练好的som网络进行负载预测,输出负载预测结果,同时对som网络中的邻域神经元的权值进行调整,并跳转到步骤8;

步骤6:给som网络动态添加神经元;

步骤7:通过线性回归方法进行负载预测,并获取真实负载信息;

步骤8:加入负载预测结果重新训练som网络,为下一次预测做准备。

进一步,所述步骤2中,优化后的som网络包括,

新增神经元权值向量初始化策略:使用上一次负载预测的结果中,新增加的神经元的输出满足约束的获胜神经元的权值向量作为一部分初始化该神经元节点,权值向量利用上一次负载预测的结果中,新增加的神经元的输出满足约束的向量值进行部分初始化,并在上一次训练好的som网络基础上,调整新增神经元节点的权值向量;

som命中预测机制:在输入模式对应的获胜神经元符合约束时,使用som进行负载预测,即将som作为分类器来使用,否则将使用线性回归的方式进行负载预测;

som状态机:运用在线学习技术,在每一次预测好后,还会利用当前的数据,对网络进行动态调整。

进一步,所述步骤3中,利用判别函数寻找训练好的som网络的获胜神经元。

进一步,所述步骤4的具体步骤如下:

(41)求解获胜神经元;

(42)根据用户配置和步骤(41)用到的som网络情况生成神经元获胜阈值h和神经元获胜阈值惩罚因子σ;

(43)判断获胜神经元的欧式距离是否大于h(i)·(1-σ),如果大于,判定为需要添加神经元;否则认为该输入模式属于该获胜神经元的类别。

5.如权利要求1所述的一种数据流负载预测方法,其特征在于,所述步骤5中,利用wj(n+1)=wj(n)+η(n)hj,i(x)(n)(x(n)-wj(n)),n=1,2,…,t进行邻域神经元的权值调整,其中,wj是输出神经元j的权值,n是迭代次数,t指总的迭代次数,x表示输入,η是学习率,h是权值的邻域函数,是到优胜神经元的距离的函数。

进一步,所述步骤6中包含三个阶段,具体如下:

初始化阶段:

1.1、根据已知负载预测输入模式的情况,初始化神经元个数,随机初始化神经元的权值向量w;

1.2、根据步骤1.1和负载偏差容忍度计算获胜神经元阈值;

增长阶段:

2.1、初始化阶段后向som网络中添加输入初始化的已知数据源、计算拓扑、计算任务产生的计算拓扑数据集;

2.2、利用argminj||x(n)-wj||,j=1,2,…,l寻找传统som算法中获胜神经元;

2.3、判断获胜神经元是否大于获胜神经元阈值,如果小于,跳转到步骤2.5;如果大于,跳转到步骤2.4;

2.4、如果获胜神经元是边界节点,增加神经元个数,即增加了神经元,跳转到步骤2.6;如果获胜神经元不是边界节点,跳转到步骤2.5;

2.5、更新som网络中邻域神经元的权值向量,即更新som网络输出层,获胜神经元附近的神经元,转到步骤步骤2.7;

2.6、如果新增加了神经元,使用获胜神经元的权值向量初始化新增加的节点,并将学习率重置为初始值并调整邻域为初始值,领域是指添加新神经元后的获胜神经元的领域神经元,转到步骤步骤2.7;

2.7、重复步骤2.2到步骤2.6,直到对于现有的数据,聚类效果趋于稳定。

分类阶段:

3.1、增长阶段后降低学习率,提高分类准确性;

3.2、寻找获胜神经元,从获胜神经元中取得所有已知负载,计算其平均,得到负载预测的结果。

进一步,所述步骤7中,当som网络获胜神经元判定为不符合时,利用线性回归的方式进行预测,之后再获取真实负载信息,加入som网络进行训练。

综上所述,由于采用了上述技术方案,本发明的有益效果是:

1、本发明结合了流处理中的数据源和计算模式的特点,在提高预测的速度的同时,保证了预测准确性;

2、本发明中当数据流系统中出现的输入模式被现有的网络判定为新型输入时,动态添加神经元,并使用线性回归预测方式返回预测结果,这个预测值的精确度小于som算法,但是简单快捷,使用回归预测方式只有当获胜神经元被判定不符合的时候才会用线性回归的方式进行预测,确保有结果返回,等som网络调整稳定后,下一次的预测依然是通过som网络。

附图说明

图1为本发明的流程示意图;

图2为本发明中som网络状态转换图;

图3为本发明中动态添加神经元的示意图。

具体实施方式

为了使本发明的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本发明进行进一步详细说明。应当理解,此处所描述的具体实施例仅用以解释本发明,并不用于限定本发明。

som的工作原理由三个过程构成:竞争、合作和自适应。(1)竞争过程。在该过程中,会根据不同的输入模式利用判别函数进行计算,并选择判别函数值最大的神经元为获胜神经元。输入向量为对应的输出神经元i的权值向量判别函数f(*)为线性函数,要使得y最大,需要向量的内积取值最大,而在输入向量和权值向量都被归一化时,该内积取值最大就等价于输入向量和权值向量的欧式距离最小。因此,在寻找最佳匹配神经元时,常常使用最小欧式距离的判别方法即符合下列条件的神经元为最佳匹配神经元:其中,n是输出神经元的数目。(2)合作过程。相邻的神经元之间会进行相互合作。在获胜神经元的邻域范围内,bmu决定了获胜神经元的邻域位置。获胜神经元的邻域内将会进行权重向量的调整。训练初始时,邻域范围一般较大,训练进行过程中,该邻域范围会逐渐减小。邻域形状多为正方形,有时也可为其他规则的多边形。邻域函数体现了邻域的作用,邻域半径可用来计算邻域的大小。邻域函数的值反映了到获胜神经元对邻域内神经元j的相互作用(抑制或激励)。即以获胜神经元为圆心,对相近的神经元会有兴奋性侧反馈,而对较远的神经元,则表现出抑制性的反馈。常用的邻域函数是高斯函数:邻域半径σ(n)是动态变化的,随时间n的增加而逐渐下降。σ(n)=σ0e-n/τ其中σ0为初始邻域半径,初始邻域一般设为整个输出平面的一半,τ为时间常数。(3)突触自适应过程。邻域函数确定后,可对邻域内神经元j的权值wj做相应调整。获胜神经元及其拓扑邻域内神经元的权值向量可以hebb学习规则的改变形式做更新。神经元j的调整公式为wn(n+1)=wj(n)+η(n)hj,i(x)(n)(x(n)-wj(n)),n=1,2,…,t其中,η为一个大于0小于1的常数,称为学习效率,随着时间的变换逐渐下降到0,一般采用如下方式进行调整:其中t为总的迭代次数,η(0)为初始学习效率。

本发明中,基本思路是利用相似计算模式造成的负载相似的原理,将相似的负载聚类,从而达到负载预测的目的。

如图1示出了整个算法的流程,包括以下步骤:

步骤1:初始化已知数据源、计算拓扑、订阅(计算任务)产生的计算拓扑数据集。输入向量结合数据源的类型以及所有可能的计算拓扑算子,取值为0或1,代表是否进行计算,构成n维向量。在此基础上,加上数据个数,用来减少相同数据类型的负载预测计算,在此基础上加上周期时间因素,构成n+2维向量;已知数据源、计算拓扑、订阅这是三种需要计算开销的数据,通过他们对数据流负载进行预测。

步骤2:根据拓扑数据集训练优化后的som网络,优化后的som网络包括新增神经元权值向量初始化策略、som命中预测机制,som状态机等机制来提高运行效率。

其中,神经元权值向量初始化策略是:网络学习的效率受som网络连接权值的初始值的影响很大。如果新增神经元的权值和整个网络权值采用一致的随机初始化策略,会造成多次迭代仍然达不到要求的学习率,为了加快网络的训练,使用上一次负载预测的结果中,新增加的神经元的输出满足约束的获胜神经元的权值向量作为一部分初始化该节点,权值向量也利用上一次负载预测的结果中,新增加的神经元的输出满足约束的向量值进行部分初始化,并在原有的训练结果基础上,调整新节点的权值向量。

som命中预测机制:利用som算法进行负载预测,主要是可以通过输入模式之间的相似性来判断负载情况,相似输入模式被判定为同一类别。所以当输入模式不符合获胜神经元约束的时候,需要添加神经元,一方面新的神经元中不包含已知的负载信息,另一方面,聚类训练过程的复杂度较高。为了解决这两个问题,提出一种som命中预测机制,在输入模式对应的获胜神经元符合约束时,才使用som预测的结果,也就是将som作为分类器来使用,否则将使用线性回归的方式对进行负载预测。随后,访问负载的真实信息,添加到神经元中。对于输入矩阵x,回归系数存放在向量w中,预测的结果会通过y=xtw给出。为了使得预测效果最好,使用平方误差来衡量:用矩阵表示为(y-xw)t(y-xw),对w求导,令其等于零,解出w如下:利用历史负载数据,来计算出当前的从而对负载进行预测。

命中预测机制:根据som命中预测机制,如果未命中,会造成som网络进行重新训练,而训练过程的时间复杂度较高,无法满足数据流处理系统实时性的要求。为此,提出了som状态机的概念,维护两个som网络。

图2为som网络的状态转换图,右侧为用于负载预测的som分类器。

a)初始阶段,左侧和右侧相同;

b)添加神经元的时候,左侧转化到添加神经元阶段;

c)随后进入训练阶段;

d)训练完成之后,进入稳定阶段,这时,复制左侧的som神经网络替换右侧的分类器

由上述步骤可知,右侧一直为稳定的som分类器,其计算的效率较高,可以达到数据流处理系统的要求,左侧为进行训练迭代中的som网络。

上面的三种优化方式都是为了提高som网络在流处理负载运行中的运行效率。

步骤3:在新的计算任务到来时,与步骤1中一样,提出数据特征(即步骤1中构建n+2维向量的过程就是一个提取数据特征的过程。),利用判别函数寻找som网络的获胜神经元,

步骤4:判断获胜神经元是否符合约束,如果符合,跳转到步骤5,否则跳转到步骤6。在判定过程中,加入获胜神经元阈值与获胜神经元阈值惩罚因子。定义神经元获胜阈值h(i):表示当神经元i获胜时,判定负载类别准确性的阈值。即h(i)<argminj||x(n)-wj||,j=1,2,…,l表示负载输入模式相似,聚类负载预测有效,否则认为该类型输入模式为新型输入模式,应当添加神经元,其中,x(n)是输入数据,wj是输出神经元j的权值,j是输出神经元的序号。定义神经元获胜阈值惩罚因子σ:punish=h(i)·σ在确定神经元获胜阈值的时候,需要根据当前的som网络情况和可容忍误差来动态调整,其中,惩罚因子是根据当前的运行状况和可容忍负载误差动态调整的值,而可容忍误差是和系统密切相关的。不同的系统其值不同。若获胜神经元阈值过小,则会频繁添加神经元,加重模型训练负担;若阈值过大,会造成负载预测的不准确,所以根据当前的运行状况和可容忍负载误差,动态调整惩罚因子的值,达到负载预测预期的效果。默认为0。具体判断方式如下:(1)求解获胜神经元;(2)根据用户配置(用户配置包括som网络结构,权值调整函数(如墨西哥帽函数),获胜神经元产生规则。)和当前神经网络情况生成获胜神经元阈值h和获胜神经元阈值惩罚因子σ;(3)判断获胜神经元的欧式距离与h(i)·(1-σ)之间的关系;(4)如果获胜神经元的欧式距离大于h(i)·(1-σ),判定为需要添加神经元;否则认为该输入模式属于该获胜神经元的类别。

步骤5:通过som网络进行负载预测,输出负载预测结果,同时进行邻域神经元(指som(自组织映射)网络输出层,获胜神经元的周边神经元,som网络的训练过程,距离获胜神经元越远,权值的调整越受到抑制。)的权值调整,并跳转到步骤8。该som网络类别包含了一类相似的负载信息,求均值作为负载的预测值,并利用wj(n+1)=wj(n)+η(n)hj,i(x)(n)(x(n)-wj(n)),n=1,2,…,t进行邻域神经元的权值调整;

步骤6:动态添加神经元(如果不符合约束,说明som网络的输出层神经元的数目,选择过少,分类过粗,需要加入新的神经元,这里的神经元就是指som输出层神经元。),又分为三个阶段;

1)初始化阶段

a)根据已知负载输入模式的情况,初始化神经元个数(默认为4),随机初始化神经元权值向量w;

b)根据负载偏差容忍度计算获胜神经元阈值约束h,通过输入与权值的最小欧拉距离来确定获胜神经元,但是这个最小的欧拉距离有时还是过大,这时就要加新的神经元,而这个判断依据就是负载偏差容忍度;

2)增长阶段

a)初始化阶段后向网络中添加输入初始化的已知数据源、计算拓扑、计算任务产生的计算拓扑数据集;

b)利用argminj||x(n)-wj||,j=1,2,…,l寻找传统som算法中获胜神经元;

c)判断获胜的神经元是否大于阈值,如果小于,跳转到步骤e;如果大于,跳转到步骤d);

d)如果获胜神经元是边界节点,增加神经元个数,跳转到步骤f;如果获胜神经元不是边界节点,继续;

e)更新邻域神经元的权值向量;

f)如果新增加了神经元,使用获胜神经元的权值向量初始化新增加的节点;

g)如果新增加了神经元,将学习率重置为初始值并调整邻域为初始值;

h)重复步骤b到步骤g,直到对于现有的数据,聚类效果趋于稳定;

3)分类阶段

a)增长阶段后降低学习率,提高分类准确性,学习率是一个关于迭代次数的减函数。类似模拟退火算法里的能量函数。所以每一次迭代后学习率会降低,直到小于设置的阈值后为0。

b)寻找获胜神经元,从获胜神经元中取得所有已知负载,计算其平均,代表负载预测的结果。

初始化阶段如果很合适,那么增长阶段添加的神经元就会更少,训练的更快。只有增长阶段稳定后,分类阶段才会有正确稳定的分类。

步骤7:通过线性回归方程进行预测负载,并获取真实负载信息,当som网络获胜神经元判定为不符合时,利用线性回归的方式进行预测,之后再获取真实负载信息,加入som网络进行训练。;

步骤8:重新训练som网络,为下一次预测做准备。

与现有技术相比,本发明所提供的一种数据流负载预测方法,结合了流处理中的数据源和计算模式的特点,在提高预测的速度的同时,保证了预测准确性。当数据流系统中出现的输入模式被现有的网络判定为新型输入时,动态添加神经元,并使用线性回归预测方式返回预测结果,这个预测值的精确度小于som算法,但是简单快捷,在som分类未命中的时候可以作为一个较好的补充。

以上所述仅为本发明的较佳实施例而已,并不用以限制本发明,凡在本发明的精神和原则之内所作的任何修改、等同替换和改进等,均应包含在本发明的保护范围之内。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1