一种数据的分位数确定方法及装置与流程

文档序号:11654244阅读:428来源:国知局
一种数据的分位数确定方法及装置与流程

本发明涉及数据处理技术领域,特别涉及一种数据的分位数确定方法及装置。



背景技术:

在目前的大数据时代,越来越多的需要对数据流进行进一步的加工处理,以获取更加有用的信息。对数据流进行分位数确定是其中一项重要的处理方式,在计算机和金融等领域有着广泛的应用。分位数是指将一个随机变量的概率分布范围分为几个等份的数值点,常用的有中位数、四分位数、百分位数等。通过确定其一系列分位数,可以直观地观察数据流的累积分布函数,进而分析其统计特性。

现有的分位数确定方法,可以不需要对数据流的概率分布模型进行分析,而是通过提取数据流中具有代表性的部分元素并加以计算,从而确定出数据流的分位数。由于对数据流的概率分布不加分析,可以采用线性函数确定分位数,对于分布较均匀的数据流,利用线性函数确定分位数时误差较小。

但在实际应用中,数据流经常呈现重尾分布即分布不均匀的情况。在这种情况下,由于利用的是默认数据流均匀分布的线性函数,会导致确定出的分位数误差较大,无法准确反应出数据流的统计特征。



技术实现要素:

本发明实施例的目的在于提供一种数据的分位数确定方法及装置,以减小确定出的分位数的误差。

为达到上述目的,本发明实施例公开了一种数据的分位数确定方法,方法包括:数据训练过程和分位数估计过程;

所述数据训练过程,包括:

对从目标数据中选取的训练数据进行拟合,得到训练数据对应的概率密度函数p(x);

利用所述概率密度函数p(x),计算训练数据对应的拟合分布函数f(x)及其逆函数f-1(x),其中,所述拟合分布函数f(x)为非线性函数;

针对预设分位点序列p包含的每一个分位点,利用所述逆函数f-1(x),计算该分位点对应的拟合分位数,并将所述拟合分位数存储到拟合分位数序列b中;

所述分位数估计过程,包括:

获得待计算分位数的目标数据序列d;

针对所述目标数据序列d,利用所述拟合分布函数f(x)、所述逆函数f-1(x)以及所述拟合分位数序列b,确定每一个分位点分别对应的当前分位数。

较佳的,所述利用所述概率密度函数p(x),计算训练数据对应的拟合分布函数f(x)及其逆函数f-1(x)的步骤,包括:

针对所述概率密度函数p(x),计算所述p(x)从负无穷到变量x的定积分,得到所述拟合分布函数f(x);

计算所述拟合分布函数f(x)的逆函数f-1(x)。

较佳的,所述针对预设分位点序列p包含的每一个分位点,利用所述逆函数f-1(x),计算该分位点对应的拟合分位数的步骤,包括:

针对预设分位点序列包含的每一个分位点,将所述分位点的值代入所述逆函数,计算所述分位点对应的逆函数的值,作为该分位点对应的拟合分位数的值。

较佳的,所述获得待计算分位数的目标数据序列d的步骤,包括:

接收目标数据中的1个数据元素d,并将d存储到大小为n的目标数据序列d,直到所述目标数据序列d被填满;

所述针对所述目标数据序列d,利用所述拟合分布函数f(x)、所述逆函数f-1(x)以及所述拟合分位数序列b,确定每一个分位点分别对应的当前分位数的步骤,包括:

s1:判断第一预设变量c的当前值是否大于0,其中,所述c的初始值为0;

若大于0,执行s2;

若等于0,则将第二预设变量t的初始化值设为0,并将预设分位点序列p对应的分位数序列q中的所有分位数清零,执行s3,其中,p={p0,p1,…,pm,…,pm},q={q0,q1,…,qm,…,qm},m∈[0,m];

s2:针对分位数序列q和数据序列d的并集x中的每一个元素a,如果a小于q0,则确定该元素a对应的cdfq的值为0,执行s3;

如果a大于或等于qm,则确定该元素a对应的cdfq的值为1,执行s3;

如果a大于或等于q0且小于qm,则从分位数序列q中查找分位数qm,以使a大于或等于qm且小于qm+1,其中,m大于或等于0且小于或等于(m-1);

从拟合分位数序列b中获得qm对应的bm,以及qm+1对应的bm+1,其中,b={b0,b1,…,bm,…,bm},m∈[0,m];

确定该元素a对应的cdfq的值cdfq(a)=f(bm+(bm+1-bm)*(a-qm)/(qm+1-qm)),执行s3;

s3:将数据序列d中的数据按照数据值从小到大的顺序,进行排序,得到排序后的数据序列d1,执行s4,其中,d1={d1,d2,…,dn,…,dn},n∈[0,n];

s4:针对分位数序列q和数据序列d1的并集x1中的每一个元素b,如果b小于或等于d1,则确定该元素b对应的ecdfd-的值为0,执行s5;

如果b大于dn,则确定该元素b对应的ecdfd-的值为1,执行s5;

如果b大于d1且小于或等于dn,则从数据序列d1中查找dn,以使b大于dn且小于或等于dn+1;

确定元素b对应的ecdfd-的值ecdfd-(b)=n/(n+m),执行s5;

s5:针对分位数序列q和数据序列d1的并集x1中的每一个元素b,如果b小于d1,则确定该元素b对应的ecdfd+的值为0,执行s6;

如果b大于或等于dn,则确定该元素b对应的ecdfd+的值为1,执行s6;

如果b大于或等于d1且小于dn,则利用二分查找法,从数据序列d1中查找dn,以使b大于或等于dn且小于dn+1;

确定元素b对应的ecdfd+的值ecdfd+(b)=n/(n+m),执行s6;

s6:针对分位数序列q和数据序列d1的并集x1中的每一个元素b,计算所述元素b的acdf-的值acdf-(b)=(t*cdfq(b)+n*ecdfd-(b))/(t+n),以及所述元素b的acdf+的值acdf+(b)=(t*cdfq(b)+n*ecdfd+(b))/(t+n),执行s7;

s7:针对预设分位点序列p中的每一个分位点pm,计算所述分位点pm对应的qm-和qm+的值,执行s8,其中,qm-=max{b∣acdf-(b)≤pm,b∈x1},qm+=max{b∣acdf+(b)≥pm,b∈x1};

s8:针对预设分位点序列p中的每一个分位点pm,判断该分位点pm对应的qm-和qm+的值是否相同;

如果相同,则将qm-的值确定为所述分位点pm对应的当前分位数qm的值;

如果不相同,则将(k*qm-+(1-k)*qm+),确定为所述分位点pm对应的当前分位数qm的值,其中,k=f-(acdf+(qm+)-f-(pm))/f-(acdf+(qm+)-acdf-(qm-))。

较佳的,在步骤s8之后,所述方法还包括:

s9:将所述第二预设变量t的当前值加n,并将所述第一预设变量c的当前值加1,执行s10;

s10:判断加1后的所述第一预设变量c的当前值是否为第三预设变量cycle的值的整数倍;

如果不为cycle的值的整数倍,返回执行所述获得待计算分位数的目标数据序列d的步骤;

如果为cycle的值的整数倍,更新所述拟合分位数序列,返回执行所述获得待计算分位数的目标数据序列d的步骤,其中,更新后的拟合分位数序列b包含的每一个分位数的值为(t*bm+m*qm)/(t+m)。

为达到上述目的,本发明实施例提公开了一种数据的分位数确定装置,装置包括:数据训练模块和分位数估计模块;

所述数据训练模块,用于对从目标数据中选取的训练数据进行拟合,得到训练数据对应的概率密度函数p(x);利用所述概率密度函数p(x),计算训练数据对应的拟合分布函数f(x)及其逆函数f-1(x),其中,所述拟合分布函数f(x)为非线性函数;针对预设分位点序列p包含的每一个分位点,利用所述逆函数f-1(x),计算该分位点对应的拟合分位数,并将所述拟合分位数存储到拟合分位数序列b中;

所述分位数估计模块,用于获得待计算分位数的目标数据序列d;针对所述目标数据序列d,利用所述拟合分布函数f(x)、所述逆函数f-1(x)以及所述拟合分位数序列b,确定每一个分位点分别对应的当前分位数。

较佳的,所述数据训练模块包括:

函数拟合子模块,用于对从目标数据中选取的训练数据进行拟合,得到训练数据对应的概率密度函数p(x);

第一计算子模块,用于利用所述概率密度函数p(x),计算训练数据对应的拟合分布函数f(x)及其逆函数f-1(x),其中,所述拟合分布函数f(x)为非线性函数;

第二计算子模块,用于针对预设分位点序列p包含的每一个分位点,利用所述逆函数f-1(x),计算该分位点对应的拟合分位数,并将所述拟合分位数存储到拟合分位数序列b中;

所述分位数估计模块,包括:

目标数据序列获得子模块,用于获得待计算分位数的目标数据序列d;

分位数确定子模块,用于针对所述目标数据序列d,利用所述拟合分布函数f(x)、所述逆函数f-1(x)以及所述拟合分位数序列b,确定每一个分位点分别对应的当前分位数。

较佳的,所述第一计算子模块,具体用于:

针对所述概率密度函数p(x),计算所述p(x)从负无穷到变量x的定积分,得到所述拟合分布函数f(x);

计算所述拟合分布函数f(x)的逆函数f-1(x)。

较佳的,所述第二计算子模块,具体用于:

针对预设分位点序列包含的每一个分位点,将所述分位点的值代入所述逆函数,计算所述分位点对应的逆函数的值,作为该分位点对应的拟合分位数的值。

较佳的,所述目标数据序列获得子模块,具体用于:

接收目标数据中的1个数据元素d,并将d存储到大小为n的目标数据序列d,直到所述目标数据序列d被填满;

所述分位数确定子模块,具体用于:

s1:判断第一预设变量c的当前值是否大于0,其中,所述c的初始值为0;

若大于0,执行s2;

若等于0,则将第二预设变量t的初始化值设为0,并将预设分位点序列p对应的分位数序列q中的所有分位数清零,执行s3,其中,p={p0,p1,…,pm,…,pm},q={q0,q1,…,qm,…,qm},m∈[0,m];

s2:针对分位数序列q和数据序列d的并集x中的每一个元素a,如果a小于q0,则确定该元素a对应的cdfq的值为0,执行s3;

如果a大于或等于qm,则确定该元素a对应的cdfq的值为1,执行s3;

如果a大于或等于q0且小于qm,则从分位数序列q中查找分位数qm,以使a大于或等于qm且小于qm+1,其中,m大于或等于0且小于或等于(m-1);

从拟合分位数序列b中获得qm对应的bm,以及qm+1对应的bm+1,其中,b={b0,b1,…,bm,…,bm},m∈[0,m];

确定该元素a对应的cdfq的值cdfq(a)=f(bm+(bm+1-bm)*(a-qm)/(qm+1-qm)),执行s3;

s3:将数据序列d中的数据按照数据值从小到大的顺序,进行排序,得到排序后的数据序列d1,执行s4,其中,d1={d1,d2,…,dn,…,dn},n∈[0,n];

s4:针对分位数序列q和数据序列d1的并集x1中的每一个元素b,如果b小于或等于d1,则确定该元素b对应的ecdfd-的值为0,执行s5;

如果b大于dn,则确定该元素b对应的ecdfd-的值为1,执行s5;

如果b大于d1且小于或等于dn,则从数据序列d1中查找dn,以使b大于dn且小于或等于dn+1;

确定元素b对应的ecdfd-的值ecdfd-(b)=n/(n+m),执行s5;

s5:针对分位数序列q和数据序列d1的并集x1中的每一个元素b,如果b小于d1,则确定该元素b对应的ecdfd+的值为0,执行s6;

如果b大于或等于dn,则确定该元素b对应的ecdfd+的值为1,执行s6;

如果b大于或等于d1且小于dn,则利用二分查找法,从数据序列d1中查找dn,以使b大于或等于dn且小于dn+1;

确定元素b对应的ecdfd+的值ecdfd+(b)=n/(n+m),执行s6;

s6:针对分位数序列q和数据序列d1的并集x1中的每一个元素b,计算所述元素b的acdf-的值acdf-(b)=(t*cdfq(b)+n*ecdfd-(b))/(t+n),以及所述元素b的acdf+的值acdf+(b)=(t*cdfq(b)+n*ecdfd+(b))/(t+n),执行s7;

s7:针对预设分位点序列p中的每一个分位点pm,计算所述分位点pm对应的qm-和qm+的值,执行s8,其中,qm-=max{b∣acdf-(b)≤pm,b∈x1},qm+=max{b∣acdf+(b)≥pm,b∈x1};

s8:针对预设分位点序列p中的每一个分位点pm,判断该分位点pm对应的qm-和qm+的值是否相同;

如果相同,则将qm-的值确定为所述分位点pm对应的当前分位数qm的值;

如果不相同,则将(k*qm-+(1-k)*qm+),确定为所述分位点pm对应的当前分位数qm的值,其中,k=f-(acdf+(qm+)-f-(pm))/f-(acdf+(qm+)-acdf-(qm-))。

较佳的,所述装置还包括:

加运算模块,用于将所述第二预设变量t的当前值加n,并将所述第一预设变量c的当前值加1;

判断模块,用于判断加1后的所述第一预设变量c的当前值是否为第三预设变量cycle的值的整数倍;在所述判断模块判断结果为否的情况下,触发目标数据序列获得子模块;

更新模块,用于在所述判断模块判断结果为是的情况下,更新所述拟合分位数序列,并触发目标数据序列获得子模块,其中,更新后的拟合分位数序列b包含的每一个分位数的值为(t*bm+m*qm)/(t+m)。

由上述的技术方案可见,本发明实施例提供了一种数据的分位数确定方法及装置,包括:数据训练过程和分位数估计过程;所述数据训练过程,包括:对从目标数据中选取的训练数据进行拟合,得到训练数据对应的概率密度函数p(x);利用所述概率密度函数p(x),计算训练数据对应的拟合分布函数f(x)及其逆函数f-1(x),其中,所述拟合分布函数f(x)为非线性函数;针对预设分位点序列p包含的每一个分位点,利用所述逆函数f-1(x),计算该分位点对应的拟合分位数,并将所述拟合分位数存储到拟合分位数序列b中;所述分位数估计过程,包括:获得待计算分位数的目标数据序列d;针对所述目标数据序列d,利用所述拟合分布函数f(x)、所述逆函数f-1(x)以及所述拟合分位数序列b,确定每一个分位点分别对应的当前分位数。

可见,由于拟合分布函数f(x)为非线性函数,因而在数据流呈现重尾分布即分布不均匀的情况下,可以利用体现数据流非均匀分布的拟合分布函数f(x),而不是默认数据流均匀分布的线性函数,结合计算出的逆函数f-1(x)以及所述拟合分位数序列b去确定分位数,从而减小确定出的分位数的误差。

当然,实施本发明的任一产品或方法并不一定需要同时达到以上所述的所有优点。

附图说明

为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。

图1为本发明实施例提供的数据的分位数确定方法的一种流程示意图;

图2为图1所示实施例中、步骤s105的一种具体流程示意图;

图3为本发明实施例提供的数据的分位数确定装置的一种结构示意图;

图4为本发明实施例提供的数据的分位数确定装置的另一种结构示意图。

具体实施方式

下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。

下面首先对本发明实施例提供的一种数据的分位数确定方法进行详细说明。

参见图1,图1为本发明实施例提供的数据的分位数确定方法的一种流程示意图,可以包括:数据训练过程和分位数估计过程;

所述数据训练过程,可以包括如下步骤:

s101,对从目标数据中选取的训练数据进行拟合,得到训练数据对应的概率密度函数p(x);

具体的,目标数据可以是目标数据流,例如持续不断达到的高速数据流。

其中,可以从目标数据流选取一部分数据作为训练数据,通过拟合得到概率密度函数p(x)。数据流不同,则拟合出的概率密度函数不同。例如,在假设数据流服从正态分布的前提下,计算得到训练数据的均值和标准差分别为μ和σ,则

其中,可以利用现有技术实现:计算训练数据的均值和标准差,本发明实施例在此不对其进行赘述。

在实际应用中,可以采用现有技术实现:对从目标数据中选取的训练数据进行拟合,得到训练数据对应的概率密度函数p(x)。

s102,利用所述概率密度函数p(x),计算训练数据对应的拟合分布函数f(x)及其逆函数f-1(x),其中,所述拟合分布函数f(x)为非线性函数;

具体的,所述利用所述概率密度函数p(x),计算训练数据对应的拟合分布函数f(x)及其逆函数f-1(x)的步骤,可以包括:针对所述概率密度函数p(x),计算所述p(x)从负无穷到变量x的定积分,得到所述拟合分布函数f(x);计算所述拟合分布函数f(x)的逆函数f-1(x)。

由上述可知,将拟合得到的概率密度函数p(x)带入该积分公式,即可计算得到拟合分布函数f(x),对f(x)求函数的逆进而得到逆函数f-1(x)。

s103,针对预设分位点序列p包含的每一个分位点,利用所述逆函数f-1(x),计算该分位点对应的拟合分位数,并将所述拟合分位数存储到拟合分位数序列b中;

具体的,所述针对预设分位点序列p包含的每一个分位点,利用所述逆函数f-1(x),计算该分位点对应的拟合分位数的步骤,可以包括:针对预设分位点序列包含的每一个分位点,将所述分位点的值代入所述逆函数,计算所述分位点对应的逆函数的值,作为该分位点对应的拟合分位数的值。

例如,p={p0,p1,…,pm,…,pm},p0、p1、…、pm是分位点序列p包含的分位点,其中,m∈[0,m]。将p包含的每一个分位点pm分别带入逆函数f-1(x),计算f-1(pm)的值,作为pm对应的拟合分位数的值,将该值存储到拟合分位数序列b={b0,b1,…,bm,…,bm}中,即bm=f-1(pm),其中,b0、b1、…、bm是拟合分位数序列b包含的拟合分位数。

所述分位数估计过程,可以包括如下步骤:

s104,获得待计算分位数的目标数据序列d;

具体的,所述获得待计算分位数的目标数据序列d的步骤,可以包括:接收目标数据中的1个数据元素d,并将d存储到大小为n的目标数据序列d,直到所述目标数据序列d被填满。

在实际应用中,可以从目标数据流中接收一个数据元素d,将其存储到大小为n的数据序列d中,然后判断d是否被填满:

如果d没有被填满,继续从目标数据流中接收另一个数据元素e,再存储到d中,再判断d是否被填满……如此循环,直到数据序列d被填满为止,之后执行下一步骤s105;

如果d已经被填满,直接执行下一步骤s105。

s105,针对所述目标数据序列d,利用所述拟合分布函数f(x)、所述逆函数f-1(x)以及所述拟合分位数序列b,确定每一个分位点分别对应的当前分位数。

具体的,参见图2,图2为图1所示实施例中、步骤s105的一种具体流程示意图。所述步骤105,针对所述目标数据序列d,利用所述拟合分布函数f(x)、所述逆函数f-1(x)以及所述拟合分位数序列b,确定每一个分位点分别对应的当前分位数,可以包括以下步骤:

s105a:判断第一预设变量c的当前值是否大于0;其中,所述c的初始值为0;若大于0,执行s105b;若等于0,执行s105c;

s105b:针对分位数序列q和数据序列d的并集x中的每一个元素a,如果a小于q0,则确定该元素a对应的cdfq的值为0,执行s105d;

如果a大于或等于qm,则确定该元素a对应的cdfq的值为1,执行s105d;

如果a大于或等于q0且小于qm,则从分位数序列q中查找分位数qm,以使a大于或等于qm且小于qm+1,其中,m大于或等于0且小于或等于(m-1);

从拟合分位数序列b中获得qm对应的bm,以及qm+1对应的bm+1,其中,b={b0,b1,…,bm,…,bm},m∈[0,m];

确定该元素a对应的cdfq的值cdfq(a)=f(bm+(bm+1-bm)*(a-qm)/(qm+1-qm)),执行s105d;

s105c:将第二预设变量t的初始化值设为0,并将预设分位点序列p对应的分位数序列q中的所有分位数清零,执行s105d,其中,p={p0,p1,…,pm,…,pm},q={q0,q1,…,qm,…,qm},m∈[0,m];

s105d:将数据序列d中的数据按照数据值从小到大的顺序,进行排序,得到排序后的数据序列d1,执行s105e,其中,d1={d1,d2,…,dn,…,dn},n∈[0,n];

s105e:针对分位数序列q和数据序列d1的并集x1中的每一个元素b,如果b小于或等于d1,则确定该元素b对应的ecdfd-的值为0,执行s105f;

如果b大于dn,则确定该元素b对应的ecdfd-的值为1,执行s105f;

如果b大于d1且小于或等于dn,则从数据序列d1中查找dn,以使b大于dn且小于或等于dn+1;

确定元素b对应的ecdfd-的值ecdfd-(b)=n/(n+m),执行s105f;

s105f:针对分位数序列q和数据序列d1的并集x1中的每一个元素b,如果b小于d1,则确定该元素b对应的ecdfd+的值为0,执行s105g;

如果b大于或等于dn,则确定该元素b对应的ecdfd+的值为1,执行s105g;

如果b大于或等于d1且小于dn,则利用二分查找法,从数据序列d1中查找dn,以使b大于或等于dn且小于dn+1;

确定元素b对应的ecdfd+的值ecdfd+(b)=n/(n+m),执行s105g;

s105g:针对分位数序列q和数据序列d1的并集x1中的每一个元素b,计算所述元素b的acdf-的值acdf-(b)=(t*cdfq(b)+n*ecdfd-(b))/(t+n),以及所述元素b的acdf+的值acdf+(b)=(t*cdfq(b)+n*ecdfd+(b))/(t+n),执行s105h;

s105h:针对预设分位点序列p中的每一个分位点pm,计算所述分位点pm对应的qm-和qm+的值,执行s105i,其中,qm-=max{b∣acdf-(b)≤pm,b∈x1},qm+=max{b∣acdf+(b)≥pm,b∈x1};

s105i:针对预设分位点序列p中的每一个分位点pm,判断该分位点pm对应的qm-和qm+的值是否相同;

如果相同,则将qm-的值确定为所述分位点pm对应的当前分位数qm的值;

如果不相同,则将(k*qm-+(1-k)*qm+),确定为所述分位点pm对应的当前分位数qm的值,其中,k=f-(acdf+(qm+)-f-(pm))/f-(acdf+(qm+)-acdf-(qm-))。

需要说明的是,当判断出步骤s105a中的c的当前值等于0时,会跳过步骤s105b,转而执行步骤s105c,然后执行s105d。当执行到步骤s105g时,计算acdf-(b)和acdf+(b)的值的公式中,此时cdfq(b)的值也等于0。

并且,在步骤s105d中,对数据序列d进行从小到大排序,排序后的数据序列d1={d1,d2,…,dn,…,dn},即可知d1的值最小,d2次之,依次增大,直到dn的值最大。

此外,步骤s105f中,可以采用现有技术实现:利用二分查找法,从数据序列d1中查找dn,以使b大于或等于dn且小于dn+1。

具体的,在步骤s105i之后,还可以包括以下步骤:

将所述第二预设变量t的当前值加n,并将所述第一预设变量c的当前值加1;

判断加1后的所述第一预设变量c的当前值是否为第三预设变量cycle的值的整数倍;

如果不为cycle的值的整数倍,返回执行所述获得待计算分位数的目标数据序列d的步骤;

如果为cycle的值的整数倍,更新所述拟合分位数序列,返回执行所述获得待计算分位数的目标数据序列d的步骤,其中,更新后的拟合分位数序列b包含的每一个分位数的值为(t*bm+m*qm)/(t+m)。

其中,在实际应用中,预设变量cycle的值可以设为50或100。

可见,由于拟合分布函数f(x)为非线性函数,因而在数据流呈现重尾分布即分布不均匀的情况下,可以利用体现数据流非均匀分布的拟合分布函数f(x),而不是默认数据流均匀分布的线性函数,结合计算出的逆函数f-1(x)以及所述拟合分位数序列b去确定分位数,从而减小确定出的分位数的误差。

参见图3,图3为本发明实施例提供的数据的分位数确定装置的一种结构示意图,与图1所示的流程相对应,该确定装置可以包括:数据训练模块301和分位数估计模块302;

所述数据训练模块301,

用于对从目标数据中选取的训练数据进行拟合,得到训练数据对应的概率密度函数p(x);利用所述概率密度函数p(x),计算训练数据对应的拟合分布函数f(x)及其逆函数f-1(x),其中,所述拟合分布函数f(x)为非线性函数;针对预设分位点序列p包含的每一个分位点,利用所述逆函数f-1(x),计算该分位点对应的拟合分位数,并将所述拟合分位数存储到拟合分位数序列b中;

所述分位数估计模块302,用于获得待计算分位数的目标数据序列d;针对所述目标数据序列d,利用所述拟合分布函数f(x)、所述逆函数f-1(x)以及所述拟合分位数序列b,确定每一个分位点分别对应的当前分位数。

参见图4,图4为本发明实施例提供的数据的分位数确定装置的另一种结构示意图,该确定装置可以包括:数据训练模块400和分位数估计模块410;

所述数据训练模块400,可以包括:

函数拟合子模块401,用于对从目标数据中选取的训练数据进行拟合,得到训练数据对应的概率密度函数p(x);

第一计算子模块402,用于利用所述概率密度函数p(x),计算训练数据对应的拟合分布函数f(x)及其逆函数f-1(x),其中,所述拟合分布函数f(x)为非线性函数;

具体的,所述第一计算子模块402,具体可以用于:

针对所述概率密度函数p(x),计算所述p(x)从负无穷到变量x的定积分,得到所述拟合分布函数f(x);

计算所述拟合分布函数f(x)的逆函数f-1(x)。

第二计算子模块403,用于针对预设分位点序列p包含的每一个分位点,利用所述逆函数f-1(x),计算该分位点对应的拟合分位数,并将所述拟合分位数存储到拟合分位数序列b中;

具体的,所述第二计算子模块403,具体可以用于:

针对预设分位点序列包含的每一个分位点,将所述分位点的值代入所述逆函数,计算所述分位点对应的逆函数的值,作为该分位点对应的拟合分位数的值。

所述分位数估计模块410,可以包括:

目标数据序列获得子模块411,用于获得待计算分位数的目标数据序列d;

分位数确定子模块412,用于针对所述目标数据序列d,利用所述拟合分布函数f(x)、所述逆函数f-1(x)以及所述拟合分位数序列b,确定每一个分位点分别对应的当前分位数。

具体的,所述目标数据序列获得子模块411,具体可以用于:

接收目标数据中的1个数据元素d,并将d存储到大小为n的目标数据序列d,直到所述目标数据序列d被填满;

所述分位数确定子模块412,具体可以用于:

s1:判断第一预设变量c的当前值是否大于0,其中,所述c的初始值为0;

若大于0,执行s2;

若等于0,则将第二预设变量t的初始化值设为0,并将预设分位点序列p对应的分位数序列q中的所有分位数清零,执行s3,其中,p={p0,p1,…,pm,…,pm},q={q0,q1,…,qm,…,qm},m∈[0,m];

s2:针对分位数序列q和数据序列d的并集x中的每一个元素a,如果a小于q0,则确定该元素a对应的cdfq的值为0,执行s3;

如果a大于或等于qm,则确定该元素a对应的cdfq的值为1,执行s3;

如果a大于或等于q0且小于qm,则从分位数序列q中查找分位数qm,以使a大于或等于qm且小于qm+1,其中,m大于或等于0且小于或等于(m-1);

从拟合分位数序列b中获得qm对应的bm,以及qm+1对应的bm+1,其中,b={b0,b1,…,bm,…,bm},m∈[0,m];

确定该元素a对应的cdfq的值cdfq(a)=f(bm+(bm+1-bm)*(a-qm)/(qm+1-qm)),执行s3;

s3:将数据序列d中的数据按照数据值从小到大的顺序,进行排序,得到排序后的数据序列d1,执行s4,其中,d1={d1,d2,…,dn,…,dn},n∈[0,n];

s4:针对分位数序列q和数据序列d1的并集x1中的每一个元素b,如果b小于或等于d1,则确定该元素b对应的ecdfd-的值为0,执行s5;

如果b大于dn,则确定该元素b对应的ecdfd-的值为1,执行s5;

如果b大于d1且小于或等于dn,则从数据序列d1中查找dn,以使b大于dn且小于或等于dn+1;

确定元素b对应的ecdfd-的值ecdfd-(b)=n/(n+m),执行s5;

s5:针对分位数序列q和数据序列d1的并集x1中的每一个元素b,如果b小于d1,则确定该元素b对应的ecdfd+的值为0,执行s6;

如果b大于或等于dn,则确定该元素b对应的ecdfd+的值为1,执行s6;

如果b大于或等于d1且小于dn,则利用二分查找法,从数据序列d1中查找dn,以使b大于或等于dn且小于dn+1;

确定元素b对应的ecdfd+的值ecdfd+(b)=n/(n+m),执行s6;

s6:针对分位数序列q和数据序列d1的并集x1中的每一个元素b,计算所述元素b的acdf-的值acdf-(b)=(t*cdfq(b)+n*ecdfd-(b))/(t+n),以及所述元素b的acdf+的值acdf+(b)=(t*cdfq(b)+n*ecdfd+(b))/(t+n),执行s7;

s7:针对预设分位点序列p中的每一个分位点pm,计算所述分位点pm对应的qm-和qm+的值,执行s8,其中,qm-=max{b∣acdf-(b)≤pm,b∈x1},qm+=max{b∣acdf+(b)≥pm,b∈x1};

s8:针对预设分位点序列p中的每一个分位点pm,判断该分位点pm对应的qm-和qm+的值是否相同;

如果相同,则将qm-的值确定为所述分位点pm对应的当前分位数qm的值;

如果不相同,则将(k*qm-+(1-k)*qm+),确定为所述分位点pm对应的当前分位数qm的值,其中,k=f-(acdf+(qm+)-f-(pm))/f-(acdf+(qm+)-acdf-(qm-))。

具体的,所述装置还可以包括:

加运算模块,用于将所述第二预设变量t的当前值加n,并将所述第一预设变量c的当前值加1;

判断模块,用于判断加1后的所述第一预设变量c的当前值是否为第三预设变量cycle的值的整数倍;在所述判断模块判断结果为否的情况下,触发目标数据序列获得子模块304;

更新模块,用于在所述判断模块判断结果为是的情况下,更新所述拟合分位数序列,并触发目标数据序列获得子模块304,其中,更新后的拟合分位数序列b包含的每一个分位数的值为(t*bm+m*qm)/(t+m)。

可见,由于拟合分布函数f(x)为非线性函数,因而在数据流呈现重尾分布即分布不均匀的情况下,可以利用体现数据流非均匀分布的拟合分布函数f(x),而不是默认数据流均匀分布的线性函数,结合计算出的逆函数f-1(x)以及所述拟合分位数序列b去确定分位数,从而减小确定出的分位数的误差。

需要说明的是,在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。

本说明书中的各个实施例均采用相关的方式描述,各个实施例之间相同相似的部分互相参见即可,每个实施例重点说明的都是与其他实施例的不同之处。尤其,对于装置实施例而言,由于其基本相似于方法实施例,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。

本领域普通技术人员可以理解实现上述方法实施方式中的全部或部分步骤是可以通过程序来指令相关的硬件来完成,所述的程序可以存储于计算机可读取存储介质中,这里所称得的存储介质,如:rom/ram、磁碟、光盘等。

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

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