【技术实现步骤摘要】
无线传感器环境下多属性事件的预测方法
本专利技术属于计算机数据处理
,具体涉及事件流数据处理技术,特别涉及一种无线传感器环境下多属性事件的预测方法。
技术介绍
随着无线传感器在环境监控、物联网等诸多应用中被广泛使用,产生了大量的事件流数据,复杂事件处理(ComplexEventProcessing,CEP)技术越来越受到关注和重视,逐渐成为数据库领域继数据流之后新的研究热点。一个复杂事件的发生往往由多种因素决定,每一种因素都会对事件产生影响。因此,在无线传感器环境下,传感器往往对多个指标进行监测,多个指标的值或状态共同决定一个复杂事件的发生。因此,本专利技术将事件模式描述为:e(t,attr1,attr2,…,attrn),其中,attri(n≥i≥1)是n个指标的监测值或状态,这里称为n个属性,e为由n个属性共同决定的事件类型,即最终报告给用户的目标事件,t是事件e发生的时间。当n>1时,e称为多属性事件。与传统的数值型数据相比,事件数据具有一定的语义。如在基于无线传感器的森林火灾监控中,多属性事件state(t,humi,temp,pres,inte,wind)的语义为:在时刻t,传感器采集到的大气湿度为humi,空气温度为temp,大气压力为pres,光照强度为inte,风速为wind,此时传感器所在地的森林安全状态为state。通过对采集的多项指标进行处理,最终得出用户需要的森林安全状态,可以检测或预测森林火灾的发生,此即多属性事件处理。在无线传感器的实际应用中,事件数据通常包含多个属性,研究和处理多属性事件数据具有重要意义,可广泛用于 ...
【技术保护点】
一种无线传感器环境下多属性事件的预测方法,其特征在于:包括以下步骤:(1)对传感器采集的事件数据的所有非数值型属性和事件类型进行数值编码,形成属性值/事件类型与其编码对应的编码文件输出至磁盘上存储;同时对相关变量进行初始化;(2)将所有的编码文件从磁盘读入内存,以方便构建多属性事件场MAEF时进行编码转换;同时在内存中建立多属性事件场结构MAEF,并将与MAEF相关的变量初始化;(3)从传感器事件流读取当前事件,将当前事件的各属性值或非数值型属性编码填入MAEF适当的行粒度,并根据当前事件在MAEF中的位置更新当前最新行粒度current和有效行计数eff_row_count;(4)判断在MAEF中是否已生成d行有效数据,即判断有效行计数eff_row_count≥d是否成立,若成立,则转入步骤(5);否则,转入步骤(3);(5)在MAEF中确定构建各预测模型训练样本文件的起始行粒度start和终止行粒度end;(6)若建立垂直预测模型的标志model_flag=1,说明需建立预测模型,则基于MAEF中存储的各属性值和步骤(5)确定的起始行粒度start、终止行粒度end,在内存中构建 ...
【技术特征摘要】
1.一种无线传感器环境下多属性事件的预测方法,其特征在于:包括以下步骤:(1)对传感器采集的事件数据的所有非数值型属性和非数值型事件类型进行数值编码,形成属性值/事件类型与其编码对应的编码文件输出至磁盘上存储;同时对相关变量进行初始化,是对多属性事件预测过程中的相关变量进行初始化,包括:将建立垂直预测模型的标志model_flag初始化为1,将水平预测模型已建立标志model_count初始化为0,将不准确预测计数inaccu_count初始化为0,建立垂直预测模型的标志model_flag为1意味着需要执行建立垂直预测模型的过程,其值为0意味着不需执行建立垂直预测模型的过程,可利用已有的垂直预测模型直接进行预测,水平预测模型已建立标志model_count为0,表示水平预测模型尚未建立;model_count为1,表示水平预测模型已经建立,不准确预测计数inaccu_count是预测误差超出用户规定阈值的计数;(2)将所有的编码文件从磁盘读入内存,以方便构建多属性事件场MAEF时进行编码转换;同时在内存中建立多属性事件场结构MAEF,并将与MAEF相关的变量初始化,包括:刷新粒度总数n_refresh初始化为0,MAEF中当前最新的行粒度current初始化为0,有效行计数eff_row_count初始化为0,变量current用来记载MAEF中当前最新的行粒度,初始化为0,有效行计数eff_row_count是MAEF中可用来建立预测模型的行粒度计数,初始化为0;所述MAEF是一个d行和n列构成的内存结构,每行对应一个等间隔多属性事件,事件场的长度d与用户建立预测模型需要的样本数量有关,可由用户指定,每列分别为多属性事件的n个属性,多属性事件场结构MAEF如下表:在计算机程序中,结构MAEF体现为一个二维数组,数组元素MAEF[i][j]表示行粒度i中属性j的值;所述多属性事件场MAEF用来存储事件流中最新d个行粒度的事件属性值,d是MAEF的长度,用以构建预测模型的训练样本文件,为保证MAEF中的行粒度是最新的,循环使用MAEF的d个行粒度,通过对过期的行粒度进行覆盖而将其淘汰,当MAEF的d个行粒度都被填满后,事件流当前粒度内的最新事件将填入MAEF的第一个行粒度,先前d个MAEF行粒度将被“刷新”,这里的“刷新”并不是将先前的d个行粒度内的事件全部清空,只是填入新事件的行粒度被覆盖,其余的行粒度仍保留原来的数据,变量n_refresh用来记载MAEF中被“刷新”的粒度总数,初始值设为0,每当MAEF将被刷新时,n_refresh就增加d个行粒度;(3)从传感器事件流读取当前事件,将当前事件的各属性值或非数值型属性编码填入MAEF适当的行粒度,并根据当前事件在MAEF中的位置更新当前最新行粒度current和有效行计数eff_row_count;所述行粒度是用户指定的相邻两个事件之间的时间间隔,传感器实际采集的数据可能是非等间隔的,且可能在一个行粒度内有多个采集值,规定MAEF的每行对应一个行粒度,在一个行粒度内只存储一个事件,且只存储该粒度内最新到达的事件,这样,MAEF中每个事件及其属性的取值以行粒度为时间间隔,实现等间隔;(4)判断在MAEF中是否已生成d行有效数据,即判断有效行计数eff_row_count≥d是否成立,若成立,则转入步骤(5);否则,转入步骤(3);d是MAEF的长度,建立各预测模型将使用MAEF中最新的d行数据,称为有效数据或有效行;(5)在MAEF中确定构建各预测模型训练样本文件的起始行粒度start和终止行粒度end;(6)若建立垂直预测模型的标志model_flag=1,说明需建立垂直预测模型,则基于MAEF中存储的各属性值和步骤(5)确定的起始行粒度start、终止行粒度end,在内存中构建每个属性所对应的垂直预测模型的样本空间,并按照LIBSVM的格式要求将其输出到磁盘上,形成与各属性对应的训练样本文件,转入步骤(7);否则,若标志model_flag≠1,则绕过建立垂直预测模型的步骤,转入步骤(10);(7)针对多属性事件中的每个属性,分别建立其垂直预测模型,并置建立垂直预测模型的标志model_flag为0;(8)若水平预测模型已经建立,即model_count=1,则转入步骤(10);否则,利用属性值和事件类型均已知的d条历史数据,构建水平预测模型的训练样本空间,并将其按照LIBSVM的格式要求输出至磁盘,形成水平预测模型的训练样本文件sensor_trans_train;(9)建立水平预测模型,并将水平预测模型已建立标志置为1;(10)基于步骤(7)所建立的各属性所对应的垂直预测模型,对各属性下一个时间点的值进行预测;(11)首先以各属性的预测值作为输入形成水平预测模型的测试样本,输出到磁盘上,建立水平预测模型的测试数据文件;然后对事件类型进行预测;若事件类型为非数值型,需对照其编码对其进行转换,并将转换结果输出到输出设备上;(12)进行误差统计以决定是否需重建垂直预测模型,以对预测模型进行自适应修改,即根据预测的准确性及时对预测模型进行自适应的修改;(13)检查用户是否终止预测过程,若是,则整个多属性事件预测过程结束;否则,转入步骤(3),读取事件流的下一个事件。2.如权利要求1所述的无线传感器环境下多属性事件的预测方法,其特征在于步骤(1)所述对传感器采集的事件数据的所有非数值型属性和非数值型事件类型进行数值编码,形成属性值/事件类型与其编码对应的编码文件输出至磁盘上存储,是对每个非数值型属性进行数值编码,形成各自的编码文件存储于磁盘上,每个文件存储的是相应属性值与其编码的对应关系,每个非数值型属性的编码值为从1开始的连续自然数;如果事件类型也是非数值类型,同样对事件类型进行编码,建立存储它们之间对应关系的编码文件存储于磁盘上。3.如权利要求1所述的无线传感器环境下多属性事件的预测方法,其特征在于步骤(3)从传感器事件流读取当前事件,将当前各属性值或非数值型属性编码填入MAEF适当的行粒度,所述适当的行粒度是指下述(3.3)中计算得出的行粒度row,并根据当前事件在MAEF中的位置更新当前最新行粒度current和有效行计数eff_row_count;从传感器事件流读取最新到达的事件,将事件各属性值或非数值型属性编码填入MAEF适当的位置,以构建MAEF,对于在t时刻读取的事件e(t,attr′1,attr′2,…,attr′n),将其填入MAEF的适当位置,构建MAEF的具体步骤包括:(3.1)计算t时刻新读取事件e在事件流中的行粒度e_g,公式如下:e_g=t/g+1,其中,g是用户指定的行粒度大小;(3.2)若e_g>d+n_refresh,说明又将有d个MAEF行粒度被“刷新”,则执行n_refresh=n_refresh+d;(3.3)计算新读取事件e在MAEF中所在的行粒度row,公式如下:row=t/g+1-n_refresh;(3.4)将事件e的各属性值或其编码填入MAEF的行粒度row;首先对照步骤(2)读入内存的各个编码文件,将事件e的n个属性中非数值型的转换为数值型,在此将e的n个数值型属性分别表示为attr1,attr2,…,attrn;然后,针对行粒度row取值的三种情况,分别处理如下:①若row=current,则说明新读入事件e所在的MAEF行粒度row与MAEF当前的最新行粒度current相同,此时,在该行粒度内用attr1,attr2,…,attrn覆盖原有值,即执行MAEF[row][1]=attr1,MAEF[row][2]=attr2,…,MAEF[row][n]=attrn,current值保持不变,有效行计数eff_row_count保持不变;②若row=current+1,则说明新读入事件e在MAEF当前最新行粒度current的下一个粒度内,此时,直接将attr1,attr2,…,attrn填入MAEF的行粒度row的第1~n列中,即执行MAEF[row][1]=attr1,MAEF[row][2]=attr2,…,MAEF[row][n]=attrn,且将current变量更新,即执行current=row;若有效行计数eff_row_count<d,则将eff_row_count增1;③若row>current+1,则首先将attr1,attr2,…,attrn填入MAEF的行粒度row的第1~n列中,即执行MAEF[row][1]=attr1,MAEF[row][2]=attr2,…,MAEF[row][n]=attrn,且将current变量更新,即执行current=row;同时对空缺行粒度进行填充,若row>current+1,则说明可能传感器采集数据过于稀疏或者用户指定的行粒度过小出现事件在某行粒度内空缺的情况,这种情况下首先计算空缺行粒度的数量no_missing,公式为:no_missing=row-current-1,然后依次对每个空缺行粒度进行填充,设这no_missing个空缺行粒度中,第一个空缺行粒度为first_missing,填充no_missing个空缺行粒度及增加有效行计数eff_row_count的过程如下:(3.4.1)置当前的空缺行粒度row’=first_missing;(3.4.2)若row’>first_missing+no_missing-1,说明空缺的no_missing个行粒度全部填充完毕,则判断有效行计数eff_row_count<d是否成立,若成立,则将eff_row_count增加(no_missing+1),即执行eff_row_count=eff_row_count+no_missing+1;结束该空缺行粒度填充过程;否则,若row’≤first_missing+no_missing-1,则转入步骤(3.4.3);(3.4.3)设置10×n的二维数组att,并置:att[i][j]=MAEF[row’-i][j],其中,10≥i≥1,n≥j≥1,按下边公式对空缺行row’进行填充:(3.4.4)置row’=row’+1;转入步骤(3.4.2)。4.如权利要求1所述的无线传感器环境下多属性事件的预测方法,其特征在于步骤(5)所述在MAEF中确定构建各预测模型训练样本文件的起始行粒度start和终止行粒度end,置end=current,若current=d,则置start=1;否则,置start=current+1;确定在构建MAEF的过程中最早被填入事件的行粒度,作为构建训练样本文件的起始数据start,确定MAEF中最新填入事件的行粒度,作为构建训练样本文件的终止数据end,利用最近d个行粒度内的事件数据按照它们发生的顺序构建预测模型的训练样本文件;变量current总是记载MAEF中当前最新的行粒度,因此,end=current,MAEF中的d个行粒度是循环使用的,当current=d时,第1个行粒度中的事件是最早填入的,故置start=1;否则当current≠d时,第(current+1)个行粒度中的事件是最早填入的,故置start=current+1;MAEF中从行粒度start开始到行粒度end为止的数据,将用来构建各预测模型的训练样本文件。5.如权利要求1所述的无线传感器环境下多属性事件的预测方法,其特征在于步骤(6)若建立垂直预测模型的标志model_flag=1,则说明需建立垂直预测模型,则基于MAEF中存储的各属性值和步骤(5)确定的起始行粒度start、终止行粒度end,在内存中构建每个属性所对应的垂直预测模型的样本空间,并按照LIBSVM的格式要求将其输出到磁盘上,形成与各属性对应的训练样本文件,转入步骤(7);否则,若标志model_flag≠1,则绕过建立垂直预测模型的步骤,转入步骤(10);步骤(3)不断地读入事件流中新到达的事件,将事件各属性值或其编码填入MAEF中,当步骤(4)中判断MAEF中已生成d行建立预测模型的有效数据时,MAEF已经被最新d个行粒度内的事件属性或其编码填满,如果用表示MAEF中第i个行粒度的第j个属性值,其中,d≥i≥1,n≥j≥1,则如下表:依据MAEF中的数据和步骤(5)中确定的起始行粒度start、终止行粒度end,可为每个属性在内存中构建由(d-m)个训练样本对(xi,yi)构成的训练样本空间,其中,d-m≥i≥1,m为用户指定的嵌入维数,对于属性j,n≥j≥1,xi、yi可表示为:其中,即是从开始,按照在MAEF的行粒度顺序循环排列到对于属性j,n≥j≥1,基于上述构建的训练样本空间,按照LIBSVM的格式要求,生成名为sensor_longi_train_j的垂直预测模型训练样本文件输出至磁盘存储;对于事件的n个属性,共生成n个符合上述格式的训练样本文件存储至磁盘上,分别与相应的属性对应,每个文件中的样本数量为(d-m)。6.如权利要求1所述的无线传感器环境下多属性事件的预测方法,其特征在于步骤(7)针对多属性事件中的每个属性j(n≥j≥1),分别建立相应的垂直预测模型,并置建立垂直预测模型的标志model_flag为0;该步骤包括以下具体步骤:(7.1)为建立每个属性j对应的垂直预测模型确定相关参数;建立预测模型时选择的参数直接影响预测模型的准确性,基于SVM的回归功能建立预测模型需要确定三个参数,即惩罚系数C、不敏感损失ε和核参数gamma(这里采用径向基核函数),这三个参数太大或太小都会影响预测性能,其取值应在适当的范围内,这里,为3个参数确定较宽的取值范围:21≥gamma≥2-8,212≥C≥2-1,2-1≥ε≥2-12,使用SVM建立预测模型的参数一般不超过上述范围,该步骤用来为每个属性j(n≥j≥1)所对应的垂直预测模型选择确定gamma、C、ε这3个参数,具体步骤为:(7.1.1)在各自的取值范围内,为3个参数指定一些特定值:gamma=2-8,2-7,2-6,…,20,21,C=2-1,20,21,…,211,212,ε=2-12,2-11,2-10,…,2-2,2-1,针对每个参数的取值,形成多个(gamma,C,ε)组合;(7.1.2)将MAEF中的数据从行粒度start开始至end结束的属性值按顺序分成1、2、3、4、5共5组,其中第1、2、3、4组长度为第5组长度为d2=d-d1×4;(7.1.3)用1、2、3、4组作为训练数据,第5组数据作为测试数据,基于步骤(6)生成的样本空间,按照下面的格式分别生成名为sensor_para_longi_train_1的训练样本文件和名为sensor_para_longi_test_1的测试数据文件存储至磁盘上;(7.1.4)用1、2、3组作为训练数据,第4组数据作为测试数据,基于步骤(6)生成的样本空间,按照下面的格式分别生成名为sensor_para_longi_train_2的训练样本文件和名为sensor_para_longi_test_2的测试数据文件存储至磁盘上;(7.1.5)用1、2组作为训练数据,第3组数据作为测试数据,基于步骤(6)生成的样本空间,按照下面的格式分别生成名为sensor_para_longi_train_3的训练样本文件和名为sensor_para_longi_test_3的测试数据文件存储至磁盘上;(7.1.6)用第1组作为训练数据,第2组数据作为测试数据,基于步骤(6)生成的样本空间,按照下面的格式分别生成名为sensor_para_longi_train_4的训练样本文件和名为sensor_para_longi_test_4的测试数据文件存储至磁盘上;(7.1.7)针对每一组参数组合(gamma,C,ε),分别进行以下4次测试,并计算每次测试的误差及4次测试的平均误差;(7.1.7.1)对第5组数据进行测试,并计算测试误差error_longi_1;首先,执行以下命令建立针对第5组数据的测试模型:svmtrain–s3–t2–ggamma–cC–pεsensor_para_longi_train_1model_sensor_para_longi_1其中,参数s设置为3,表明采用的是e-SVR;参数t设置为2,表明采用的是径向基核函数;参数g、c、p分别设置为gamma、C、ε,对应一组参数组合(gamma,C,ε);sensor_para_longi_train_1是步骤(7.1.3)基于1、2、3、4组数据生成的训练样本文件;model_sensor_para_longi_1是svmtrain命令生成的结果文件,是用来选择参数的测试模型;然后,执行如下命令对第5组数据进行测试:svmpredictsensor_para_longi_test_1model_sensor_para_longi_1sensor_para_longi_output_1其中,sensor_para_longi_test_1是步骤(7.1.3)基于第5组数据生成的测试数据文件,model_sensor_para_longi_1是svmtrain命令生成的测试模型,sensor_para_longi_output_1是svmpredict命令生成的结果文件,存储的是对第5组数据进行测试的结果,其文件长度为d2=d-4d1;最后,根据第5组的真实数据与文件sensor_para_longi_output_1中的测试结果数据计算测试误差,设sensor_para_longi_output_1中的数据依次为:则测试误差计算如下:(7.1.7.2)对第4组数据进行测试,并计算测试误差error_longi_2;首先,执行以下命令建立针对第4组数据的测试模型:svmtrain–s3–t2–ggamma–cC–pεsensor_para_longi_train_2model_sensor_para_longi_2其中,sensor_para_longi_train_2是步骤(7.1.4)基于1、2、3组数据生成的训练样本文件,model_sensor_para_longi_2是该svmtrain命令生成的结果文件,是用来选择参数的测试模型;然后,执行如下命令对第4组数据进行测试:svmpredictsensor_para_longi_test_2model_sensor_para_longi_2sensor_para_longi_output_2其中,sensor_para_longi_test_2是步骤(7.1.4)基于第4组数据生成的测试数据文件,model_sensor_para_longi_2是svmtrain命令生成的测试模型,sensor_para_longi_output_2是svmpredict命令生成的输出文件,存储的是对第4组数据进行测试的结果,其文件长度为最后,根据第4组的真实数据与文件sensor_para_longi_output_2中的测试结果数据计算测试误差,设sensor_para_longi_output_2中的数据依次为:则测试误差计算如下:(7.1.7.3)对第3组数据进行测试,并计算测试误差error_longi_3;首先,执行以下命令建立针对第3组数据的测试模型:svmtrain–s3–t2–ggamma–cC–pεsensor_para_longi_train_3model_sensor_para_longi_3其中,sensor_para_longi_train_3是步骤(7.1.5)基于1、2组数据生成的训练样本文件,model_sensor_para_longi_3是该svmtrain命令生成的结果文件,是用来选择参数的测试模型;然后,执行如下命令对第3组数据进行测试:svmpredictsensor_para_longi_test_3model_sensor_para_longi_3sensor_para_longi_output_3其中,sensor_para_longi_test_3是步骤(7.1.5)基于第3组数据生成的测试数据文件,model_sensor_para_longi_3是svmtrain命令生成的测试模型,sensor_para_longi_output_3是svmpredict命令生成的输出文件,存储的是对第3组数据进行测试的结果,其文件长度为最后,根据第3组的真实数据与文件sensor_para_longi_output_3中的测试结果数据计算测试误差,设sensor_para_longi_output_3中的数据依次为:则测试误差计算如下:(7.1.7.4)对第2组数据进行测试,并计算测试误差error_longi_4;首先,执行...
【专利技术属性】
技术研发人员:林树宽,杨礼国,乔建忠,
申请(专利权)人:东北大学,
类型:发明
国别省市:辽宁;21
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。