基于自适应遗传算法的气象数据缺失值填补方法
技术领域
本发明属于数据处理技术领域,涉及一种气象数据缺失值填补方法,具体涉及一种基于自适应遗传算法的气象数据的填补方法,可用于气象数据挖掘领域。
背景技术
气象数据通常是从气象站采集而来,然而在自动气象站架设的区域,一方面由于电磁波或各类观测探测仪本身的原因或外界干扰的因素,以及自动气象站所处恶劣环境改变的不可预见性;另一方面,一些地方地形情况特殊以及环境气候恶劣,使得气象站点分布多而广、维护保障的人员数量较少,区域自动气象站的维护保障工作难以进行;除此之外,不准确的测量方式、收集条件的限制以及人工录入的遗漏都有可能导致自动气象站运行过程中采集的数据不可避免的将会出现缺失。大量的数据缺失对后期的数据统计、数据挖掘等工作都会产生不利的影响。例如,缺失值可能会直接影响新发现模式的准确性,导致错误的挖掘模型;缺失值的未知性,也会对正常的数据分布形成干扰,降低挖掘能力;数据值的缺失导致难以对数据进行合理分类,无法准确获取统计分析结果,从而影响最终决策。
为了提供高质量的完整数据集,对数据集中的缺失值进行及时准确的填补,对于今后利用气象数据进行挖掘技术研究和分析气象数据的潜在规律,以及进一步完成对气象数据的预测等具有重要的科学研究意义和实用价值,并且也是数据处理领域一个值得研究和重视的问题。
目前针对气象数据缺失值填补,主要分为单一填补和多重填补两大类,单一填补主要有均值、中位数和众数填补方法,该类方法计算简单,但用单一数值填补大大降低了数据的随机性,损失了大量的数据信息。多重填补方法主要有热卡填补、邻近数据填补、空间插补、基于贝叶斯等方法,每一种方法都有其优缺点,根据具体数据对象的类型,方法的填补效果也不同,然而,没有任何一种缺失值填补方法能够有效解决所有类型的数据缺失问题。
为解决上述问题,在申请公布号为CN104280791A,名称为“一种气象数据质量控制处理方法及系统”的专利申请,公开了一种气象数据质量控制处理方法,所述的方法首先接收原始气象数据,然后判断原始数据中是否存在缺测值,若原始数据中存在异常数据,则对其进行填充处理并输出。其中针对气象数据的缺失值填补时,该方法首先统计预设时间段内的气象数据中存在缺失值的个数,当存在缺失值的个数小于设定值时,且缺失值前后两个数据不为缺失值时,采用缺失值前后数据的平均值来填充缺失值的气象数据,当缺失值前面或后面为缺失值时,通过预设时间段内的全部数据的平均值来填充缺失值的气象数据。该发明虽然通过判断缺失值前后的数据是否为缺失值,来决定采用哪种缺失值填补方法来对气象数据进行填补,提高了气象数据的准确性,但是该方法仍然存在不足之处:(1)在对缺失值进行填充时,需先预设时间段并判断缺失值的个数,才能对缺失值进行填充,计算效率较低;(2)当气象数据缺失值前后数据存在但气象数据变化为显著时,直接采用缺失值前后数据的均值,或气象数据连续缺失时,直接采用预设时间段内所有的气象数据均值进行填补,显然填补方法过于简单,填补准确性低。
发明内容
本发明的目的在于针对上述现有技术存在的缺陷,提出了一种基于自适应遗传算法的气象数据缺失值填补方法,旨在提高气象数据缺失值填补的准确率。
本发明的技术思路是:针对气象数据中的缺失值,首先采用线性插值法和相关性分类法对缺失值进行估计。然后,对利用线性插值法和相关性分类法计算得到缺失值的估计值进行加权处理,并采用自适应遗传算法对权值系数进行优化,以实现对气象数据的缺失值填补。
根据上述技术思路,实现本发明目的采取的技术方案包括如下步骤:
(1)设定气象数据集和缺失值:
设定气象数据集R为n个向量Y1,Y2,…,Yj,…Yn的s维数据,Yj代表数据属性j,Yj=(x1j,x2j,…,xij,…,xsj)T,xij代表在i时刻属性为Yj的缺失值,T为转置符号;
(2)利用线性插值法计算缺失值xij的估计值xBA:
将Yj中距离缺失值xij在i时刻最近的前一相邻时刻和后一相邻时刻的真实气象数据代入线性插值函数中,得到缺失值xij的估计值xBA;
(3)利用相关性分类法计算缺失值xij的估计值xRC:
(3a)以R中与Yj相关性最大的属性所包含的数据随时间变化的趋势的相邻的极值点为参照,对缺失值xij所在的列数据进行分组,得到多个列数据组;
(3b)从多个列数据组中选取缺失值xij所在的列数据组,并根据相关性公式计算R中缺失值xij所在的列数据组中缺失值xij所在的行与其他行的相关系数,得到多个相关系数值;
(3c)通过多个相关系数值中最大的相关系数值,构造缺失值xij与最大相关系数值的方程,其表达式为:
其中,rmax为最大相关系数,i为气象数据所在的时刻,t和l分别为R中的数据属性,n为R中所有属性的总数,xi为i时刻所有数据的均值 为l时刻所有数据的均值 为属性t在i时刻的气象数据,xlt为属性t在l时刻的气象数据;
(3d)将数据集R中的真实气象数据带入缺失值xij与最大相关系数值的方程中,计算缺失值xij的估计值xRC;
(4)建立遗传算法的目标函数:
(4a)计算缺失值xij的填补值y,计算公式为:
y=ω1xBA+ω2xRC
其中,xBA为利用线性插值法计算缺失值xij的估计值,xRC为利用相关性分类法计算缺失值xij的估计值,ω1、ω2分别为xBA和xRC的权值系数,0≤ω1≤1,ω1+ω2=1;
(4b)根据缺失值xij的填补值y和缺失值xij所在的列数据组中的真实气象数据,建立遗传算法的目标函数,其表达式为:
Y=min|y-Sj|
其中,min代表最小值符号,j为R中的属性,Sj为缺失值xij所在组的真实气象数据的集合,y为缺失值xij的填补值;
(5)采用遗传算法计算缺失值xij的填补值:
(5a)获取搜索最优xBA和xRC权值系数的初始群体:
采用二进制基因编码方式表示随机产生的多个代表xBA和xRC的权值系数的个体,得到用于搜索最优xBA和xRC权值系数的初始群体;
(5b)计算初始群体中每个个体适应度:
计算初始群体中每个个体适应度,计算公式为:
其中,ζ为一个较小常数值,i代表初始群体中的每一个个体,xBA为利用线性插值法计算缺失值xij的估计值,xRC为利用相关性分类法计算缺失值xij的估计值,ω1、ω2分别为xBA和xRC的权值系数,Sj为缺失值xij所在组的真实气象数据的集合;
(5c)从初始群体中选择概率大于K的个体:
采用概率公式,通过初始群体中每个个体的适应度,计算每个个体在初始群体中出现的概率,并选取概率大于K的个体,得到新的群体,0<K<1;
(5d)对新的群体中的个体基因进行交叉:
对从新的群体中随机选取的两个个体基因的起始位置进行相互交叉,得到二进制基因编码方式表示的子代个体;
(5e)对子代个体进行变异:
对随机选取二进制基因编码方式表示的子代个体基因的变异位置的原有基因取反得到二进制基因编码方式表示的最终子代;
(5f)输出最优xBA和xRC的权值系数:
将二进制基因编码方式表示的最终子代所代表的xBA和xRC的权值系数代入遗传算法的目标函数中,并根据遗传算法的目标函数的解是否趋于稳定判断遗传算法的目标函数是否收敛,若是,遗传算法的目标函数的解即最优权值系数ω1和权值系数ω2,并执行(5g),否则执行步骤(5b);
(5g)计算缺失值xij的填补值:将最优权值系数ω1和权值系数ω2代入缺失值xij的填补值公式中,得到缺失值xij的填补值。
本发明与现有技术相比,具有如下优点:
1、本发明在对缺失值进行填补时,针对气象数据的特点,分别采用了线性插值法和相关性分类法对缺失值进行估计,对两种方法求得的缺失值的估计值进行加权处理,并采用自适应遗传算法对线性插值法和相关性分类法的权值系数进行寻优,使得无论缺失值存在于何种情况,自适应遗传算法都可以可靠的给较准确估计缺失值的方法赋予较大的权重,与现有技术相比,有效地提高了对气象数据缺失值填补的准确性。
2、本发明在对对缺失值进行填补时,通过考虑气象数据与时间的强相关性以及气象数据属性之间的相关性,获得与缺失值属性相关性最大的属性以进行缺失值的计算,减少了气象数据缺失值计算的属性数目以及计算量,与现有技术相比,有效提高了气象数据缺失值填补的计算效率。
附图说明
图1是本发明的实现流程图;
图2是本发明中利用线性插值法计算缺失值的估计值流程图;
图3是本发明中利用相关性分类法计算缺失值的估计值流程图;
图4是本发明中利用遗传算法计算缺失值填补值的实现流程图。
具体实施方式
以下结合附图和具体实施例,对本发明作进一步的详细描述:
参照图1,一种基于自适应遗传算法的气象数据缺失值填补方法,包括如下步骤:
步骤1)设定气象数据集R为n个向量Y1,Y2,…,Yj,…Yn的s维数据,Yj代表数据属性j,Yj=(x1j,x2j,…,xij,…,xsj)T,xij代表在i时刻属性为Yj的缺失值,T为转置符号;
步骤2)考虑到气象数据等属性与时间具有的强相关性,以及这些属性数据在一定时间间隔内随时间变化浮动较小,因此利用气象数据这种特点,根据距离缺失值最近的前一相邻时刻和后一相邻时刻的真实气象数据对缺失值进行估计,实现步骤参照图2:
步骤2a)获取与缺失值最近的前一相邻时刻和后一相邻时刻的真实气象数据;
步骤2b)利用线性插值,构建分段线性函数的方式来刻画气象数据随时间的变化,并通过已知数据来预估缺失值。对于任一数据属性,对于缺失值可通过构建线性插值函数计算,其计算公式为:
其中,xBA为待求数据,xA、xB分别为时刻tA、tB的数据,t为xBA所在的时刻;
步骤2c)将步骤2a得到的两个气象数据带入步骤2b的线性插值函数公式中,计算得到对缺失值xij的估计值,记为xBA;
步骤3)在数据变化较为显著时,与相邻时刻数据特征不明显的情况下,考虑到气候数据属性之间的相关性以及与时间的相关性,借助于相关性来分析数据之间的规律,根据所获得的信息,以对缺失值进行估计,实现步骤参照图3:
步骤3a)利用相关性分析,获取与缺失值所在列相关性最大的属性,并以该属性所包含的数据随时间变化的趋势的相邻极值点为参照,对缺失值xij所在的列数据进行分组,得到多个列数据组;
步骤3b)从多个列数据组中选取缺失值xij所在的列数据组,并根据相关性公式计算R中缺失值xij所在的列数据组中缺失值xij所在的行与其他行的相关系数,得到多个相关系数;
其中,X、Y为数据集,E(X)、E(Y)分别为X、Y的数学期望,D(X)、D(Y)分别为X、Y的方差;
步骤3c)选取步骤3b中多个相关系数中最大的相关系数,并构造缺失值xij与最大相关系数的方程,其表达式为:
其中,rmax为最大相关系数,i为气象数据所在的时刻,t和l分别为R中的数据属性,n为R中所有属性的总数,为i时刻所有数据的均值 为l时刻所有数据的均值xit为属性t在i时刻的气象数据,xlt为属性t在l时刻的气象数据;
步骤4)实际情况下,因为缺失值的存在,导致我们并不能准确获悉数据的真实变化规律,不确定应该采用哪种方法来估计缺失值。因此,采用将线性插值法和相关性分类法的估计结果进行加权处理,并利用被广泛应用于取得最优参数的遗传算法对权值系数进行寻优,构成基于自适应遗传算法的气象数据填补法,合理的确定优化目标是解决问题的关键,目标函数根据提高气象缺失值填补准确性为目的而建立;
步骤4a)计算气象数据集R中缺失值xij的填补值y,计算公式为:
y=ω1xBA+ω2xRC
其中,xBA为利用线性插值法计算缺失值xij的估计值,xRC为利用相关性分类法计算缺失值xij的估计值,ω1、ω2分别为xBA和xRC的权值系数,0≤ω1≤1,ω1+ω2=1;
步骤4b)根据缺失值xij的填补值y和缺失值xij所在的列数据组中的真实气象数据,建立遗传算法的目标函数,其表达式为:
Y=min|y-Sj|
其中,min代表最小值符号,y为缺失值xij的填补值,j为R中的属性,Sj为缺失值xij所在组的真实气象数据的集合;
步骤5)采用遗传算法计算缺失值xij的填补值,实现步骤参照图4:
步骤5a)随机产生多个采用二进制基因编码方式表示的代表xBA和xRC的权值系数的个体,产生的多个个体组成了初始群体,即遗传算法搜索最优xBA和xRC的权值系数的数据集合;
步骤5b)计算初始群体中每个个体适应度,以判别个体是否保留,适应度函数一般根据目标函数来设定,且要求不为负。根据遗传算法在搜索过程中是朝着适应度值不断增大的目标进行的,因此本文设定适应度函数为:
其中,i代表初始群体中的每一个个体,ζ为一个较小常数值,以避免适应度函数分母为0,从而防止GA算法的优化过程陷入局部搜索最优状态,xBA为利用线性插值法计算缺失值xij的估计值,xRC为利用相关性分类法计算缺失值xij的估计值,ω1、ω2分别为xBA和xRC的权值系数,Sj为缺失值xij所在组的真实气象数据的集合;
步骤5c)采用概率公式,通过初始群体中每个个体的适应度,计算每个个体在初始群体中出现的概率,并选取概率大于K的个体,得到新的群体,0<K<1,为一个具体的常数,概率公式的表达式为:
其中,pi表示个体在群体中出现的概率,i表示初始群体中的个体,n表示个体的总数,Fi表示个体i的适应度值;
步骤5d)从初始群体中,随机的选择两个个体中任意基因的起止位置,两个个体的被选位置应该相同,然后交换这两组基因的位置,得到二进制基因编码方式表示的子代个体;
步骤5e)随机产生二进制基因编码方式表示的子代个体基因的变异位置,然后依照某一概率将变异点的原有基因位置取反,得到二进制基因编码方式表示的最终子代;
步骤5f)将二进制基因编码方式表示的最终子代所代表的xBA和xRC的权值系数代入遗传算法的目标函数中,并根据遗传算法的目标函数的解是否趋于稳定判断遗传算法的目标函数是否收敛,若是,遗传算法的目标函数的解即最优权值系数ω1和权值系数ω2,并执行步骤5g),否则执行步骤5b);
步骤5g)将最优权值系数ω1和权值系数ω2代入缺失值xij的填补值公式中,得到缺失值xij的填补值。
以上描述仅是本发明的一个具体实例,不构成对本发明的任何限制,显然对于本领域的专业人员来说,在了解了本发明内容和原理后,都可能在不背离本发明原理、结构的情况下,进行形式和细节上的各种修改和改变,但是这些基于本发明思想的修正和改变仍在本发明的权利要求保护范围之内。