发明内容
本发明的目的在于针对现有技术的缺陷或问题,提供一种基于迭代KNN和插补优先级的DGA数据缺失值插补方法。
本发明的技术方案如下:一种基于迭代KNN和插补优先级的DGA数据缺失值插补方法,包括如下步骤:
步骤1:通过能够处理缺失值的XGBoost集成分类器对DGA数据集进行训练,得到每个属性作为划分属性的次数number、作为划分属性时的平均增益gain和平均覆盖度cover;
步骤2:将步骤1得到的数据用于计算不同属性对于分类结果的重要性以及相对应的插补优先级,且还计算相同缺失属性的不同样本的插补优先级;
步骤3:根据步骤2得到的插补优先级和KNN对缺失值进行迭代的插补,直到达到收敛条件。
优选地,确定插补优先级顺序时,需要考虑特征气体和类别标签之间的关联,如果特征和类别标签的关联越强,则特征气体对于分类的效果越重要,如果这个属性存在缺失值,就需要优先对这个属性的缺失值进行插补;我们根据属性作为划分属性的次数number、作为划分属性时的平均增益gain和平均覆盖度cover来评价特征气体和类别标签之间的关联。考虑到这3给指标的尺度不同,我们需要对它们先进行归一化(范围控制在[0,1]),得到归一化后的划分属性的次数number’、作为划分属性时的平均增益gain’和平均覆盖度cover’,如公式(5)所示,max和min分别表示求最大值和最小值。
numberk是第k个属性的作为划分属性的次数,number={number1,number2,…numbern},g和c被用于以限制数据集中的值的范围.这里,g=1并且c=2;
gain’和cover’的计算方法和number’类似,通过同样的方式归一化;Priork是属性k的优先级分数,其计算方法如公式(6)所示。
优选地,在步骤2中,引入公式对同一缺失属性的多个待插补样本进行插补优先级的计算,Scomplete是当前样本的非缺失属性的优先级分数的集合,nummiss是当前样本中缺失的属性的个数,numattr是当前样本X的属性的个数,分母是可以视为当前样本的缺失率,max(Scomplete)表示求当前样本的非缺失属性的优先级分数中的最大值。计算方法如公式(7)所示。
优选地,步骤3中,KNN算法步骤如下所示:
一、确定参数k,把数据集D分成2部分:Dcom和Dincom,其中,Dcom包含完整数据,Dincom包含不完整数据,D=Dcom∪Dincom;
二、从Dincom中根据插补顺序选择插补的实例:使用城市街区或欧几里得距离度量计算有缺失值需要插补的实例和Dcom中所有实例之间的距离,Xi={xi1,...,xim}表示含有缺失值要预测的实例,Xq={xq1,…xqm}是Dcom中实例,计算二者之间的距离,其中,m是属性的维度,xij是第i个样本的第j个属性;
三、重复步骤二步计算Xi和Dcom中的全部的实例之间的距离,并根据每一个实例的距离升序排列;
四、从升序排列的表中选择最靠前的k个实例,Xknn={X′1,…,X′k}表示选择的k个最相似的邻居;
五、通过这k个最相似的邻居计算缺失值xij,缺失值由k个最近的邻居实例的平均值估算,公式如(8)所示:
优选地,步骤3中,通过迭代的方式使用KNN对缺失值进行迭代插补:
每一次使用KNN算法进行插补都会将Dincom中的缺失值插补完成,得到一个完整数据集Dincom,p-1,表示第p-1次使用KNN算法对Dincom插补后得到的完整的数据集;
在第p次迭代时,使用完整的数据集Dcom+Dincom,p-1对Dincom中的数据进行插补,得到Dincom,p。
本发明提供的技术方案具有如下有益效果:
所述基于迭代KNN和插补优先级的DGA数据缺失值插补方法用于内插缺失值的迭代KNN方法,该缺失值充分利用来自DGA数据集中的不完整数据和完整数据的信息;
而且,根据电力变压器属性与标签之间的亲密度确定插补优先级,这由XGBoost分类器的构造信息得到,例如作为划分属性的次数number和平均增益gain;
此外,非参数和迭代KNN可以直接预测所有属性的缺失值,而不是为每个缺失属性创建不同的预测模型,这可以减小时间消耗。
具体实施方式
为了使本发明的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本发明进行进一步详细说明。应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。
除非上下文另有特定清楚的描述,本发明中的元件和组件,数量既可以单个的形式存在,也可以多个的形式存在,本发明并不对此进行限定。本发明中的步骤虽然用标号进行了排列,但并不用于限定步骤的先后次序,除非明确说明了步骤的次序或者某步骤的执行需要其他步骤作为基础,否则步骤的相对次序是可以调整的。可以理解,本文中所使用的术语“和/或”涉及且涵盖相关联的所列项目中的一者或一者以上的任何和所有可能的组合。
本发明提供的一种基于迭代KNN和插补优先级的DGA数据缺失值插补方法,包括如下步骤:
步骤1:通过能够处理缺失值的XGBoost集成分类器对DGA数据集进行训练,得到每个属性作为划分属性的次数number、作为划分属性时的平均增益gian和平均覆盖度cover;
步骤2:将步骤1得到的数据用于计算不同属性对于分类结果的重要性以及相对应的插补优先级,且还计算相同缺失属性的不同样本的插补优先级;
步骤3:根据步骤2得到的插补优先级和KNN对缺失值进行迭代的插补,直到达到收敛条件。
具体地,在DGA数据集中,数据集中的数据都是连续性的值。数据集中还使用了不同气体的比值,这些比值是由气体的含量计算得到,所以只对气体的含量进行插补,之后再根据插补的结果计算不同气体的比值作为一部分属性。在下表所示的数据集中,
表示整个DGA数据集有n个样本,y
i∈{1,...,c}表示变压器故障类别的标签。
是每个样本的属性,包含m个气体浓度属性。?符号表示缺失值,是缺失的气体浓度。一个不完整实例可能包含一个或者多个缺失值,比如X
2,X
3和X
5。一个完整实例中是没有缺失值的。
表1
而且,在缺失值的插补顺序确定过程中,电网数据中每一个属性都有可能存在缺失,在对缺失值进行插补的过程中就会面对一个问题,先对某些缺失值进行插补或者按随机的顺序进行插补是否对插补的结果没有影响,比如先对f2进行插补,再对f3和f4进行插补是否对插补和预测的结果没有影响。许多研究已经证明这种插补顺序对插补的结果是有影响的,对缺失值按照一定的顺序进行插补是更好的选择。DGA数据集中一个样本可能会存在多个缺失值,同一个属性值缺失的样本也可能有多个,所以对DGA数据集中属性(列向)和样本(横向)进行预测优先级排序。
DGA是根据一些油中的溶解气体的含量来对变压器的故障进行分类的方法,所以在确定插补的优先级顺序的时候,需要考虑这些特征气体和类别标签之间的关联,如果特征和类别标签的关联越强,那么说明这个特征气体对于分类的效果越重要,如果这个属性存在缺失值,就应该优先对这个属性的缺失值进行插补。另外,由于本发明最终使用XGBoost对变压器的故障进行分类,XGBoost可以直接对含有缺失数据的数据集进行训练,它会自动的学习缺失属性的分裂方向。由于XGBoost是基于集成树的分类器,所以还需要考虑:
1)每个特征在所有树中作为划分属性的次数number,用于划分的次数越多,说明特征越重要。
2)特征在划分属性时的平均增益gain。
3)特征在作为划分属性时对样本的平均覆盖度cover。
这类似于特征选择。属性的优先级可以通过下面的公式确定。由于次数,增益,覆盖度它们的尺度不同,所以先对它们进行了归一化,如公式(9)所示,之后求和取均值得到优先级分数,得到属性的优先级,计算方法如公式(10)。
也就是说,在步骤2中,确定插补优先级顺序时,需要考虑特征气体和类别标签之间的关联,如果特征和类别标签的关联越强,则特征气体对于分类的效果越重要,如果这个属性存在缺失值,就需要优先对这个属性的缺失值进行插补;
numberk是第k个属性的作为划分属性的次数,number={number1,number2,…numbern},g和c被用于以限制数据集中的值的范围.这里,g=1并且c=2;
gain’和cover’的计算方法和number’类似,通过同样的方式归一化;Priork是属性k的优先级分数,其计算方法如公式(10)所示。
Prior越高,表明属性重要性越高,对变压器故障分类模型越重要,需要对缺失值优先进行插补。
除了列向的属性的插补优先级,同一个属性可能在多个样本中发生缺失,这个时候单单靠属性的插补优先级并不能得到一个有效的插补顺序。比如表中的f3属性,X2和X4都发生了缺失,这时需要新的方法来得到一个插补的优先级顺序。
在步骤2中,引入下面的公式对同一缺失属性的多个待插补样本进行插补优先级的计算,Scomplete是当前样本的非缺失属性的优先级分数的集合,nummiss是当前样本中缺失的属性的个数,numattr是当前样本X的属性的个数,分母是可以视为当前样本的缺失率,max(Scomplete)表示求当前样本的非缺失属性的优先级分数中的最大值。计算方法如公式(11)所示。
由于DGA数据集中存在完整和不完整实例,不完整和完整的数据中都存在有用的信息,都应该被广泛的利用,这样可以有效的提高插补的准确率。在给缺失值排好序之后,需要选择插补算法给缺失值进行预测。在选择插补算法时候,则需要考虑下面几个方面:
1、DGA数据集中含有多个属性,所以插补算法最好不需要给每一个属性都建立一个预测模型;
2、DGA数据集中包含的是气体的浓度,插补算法需要适用于连续值,保留于其他变量的协方差和相关性;
3、DGA数据集中存在多个属性值缺失的样本,所以插补算法要能够处理多个缺失值的情况;
4、应尽量选择非参数方法,因为参数方法通常是基于一些假设的,例如数据值的总体和模型参数的先验分布。这些假设在现实中是很难实现的。
而且,KNN算法是一个非参数方法,它可以满足上面的全部要求,而且已经广泛应用,是本发明最好的选择,其他的一些算法如线性回归、神经网络,决策树等方法都需要对不同的属性建立不同的插补预测模型。
KNN算法从数据集中寻找k个和带有缺失值的实例最相似的实例,用这k个实例的均值或者中值来填补缺失值。作为一种插补方法,KNN是有效且易于实现的。KNN方法的插补的缺失值的质量主要依赖于:k的选择和距离度量标准。
k的选择和实际的数据集的大小相关,数据集如果大,则应该适当的提高k的值,如果数据集较小,则应当减小k的值。
k个最相似的样本需要通过距离度量来计算,则使用2个广泛使用的距离度量标准来计算样本之间的相似度。
1)城市街区距离(CB)。它基于出租车几何理论,两个样本之间的距离是每个属性的差的绝对值的和,且对异常值的表现的更加健壮,如下面的公式(12)所示:
2)欧几里德距离(EU)。这是计算两个实例之间距离的最常用的度量标准,它计算的是两个实例每个属性之间差的平方根。如下面的公式(13)所示:
则,在步骤3中,如图1所示,KNN算法步骤如下所示:
一、确定参数k,把数据集D分成2部分:Dcom和Dincom,其中,Dcom包含完整数据,Dincom包含不完整数据,D=Dcom∪Dincom;
二、从Dincom中根据插补顺序选择插补的实例:使用CB或者EU距离度量计算有缺失值需要插补的实例和Dcom中所有实例之间的距离,Xi={xi1,...,xim}表示含有缺失值要预测的实例,Xq={xq1,...xqm}是Dcom中实例,计算二者之间的距离,其中,m是属性的维度,xij是第i个样本的第j个属性;
三、重复步骤二步计算Xi和Dcom中的全部的实例之间的距离,并根据每一个实例的距离升序排列;
四、从升序排列的表中选择最靠前的k个实例,Xknn={X′1,...,X′k}表示选择的k个最相似的邻居;
五、通过这k个最相似的邻居计算缺失值xij,缺失值由k个最相似的实例的平均值估算,公式如(14)所示:
如果Xi已经插补完成,不存在缺失值,则将Xi放入Dcom,帮助Dincom中其他的缺失值进行插补,直到所有的缺失值都被插补。
此外,如果按照上面的KNN算法进行插补,则只是对缺失值进行了一次插补,虽然在插补的过程中利用了不完整数据的信息,但这样的结果仍然是很不可靠的,这样的结果往往并不准确,对不完整数据的信息的利用仍然不充分。一开始是利用完整数据中的数据进行KNN插补,如果Dcom中的数据在一段时间内没有增加或者增加的很少,则利用的来自不完整数据的信息依然很少,并不会实现充分利用自不完整数据的信息的目标。
所以为了充分利用自不完整数据的信息,如图2所示,本发明通过迭代的方式使用KNN对缺失值进行迭代插补:
每一次使用KNN算法进行插补都会将Dincom中的缺失值插补完成,得到一个完整数据集Dincom,p-1,表示第p-1次使用KNN算法对Dincom插补后得到的完整的数据集;
在第p次迭代时,使用完整的数据集Dcom+Dincom,p-1对Dincom中的数据进行插补,得到Dincom,p。
如此,就可以在多次迭代中充分利用来自不完整数据的信息。这样的迭代操作当预测的值收敛时才停止,收敛的条件是插补预测值的变化小于一定的阈值,这个阈值是人工设定的。
在本发明提供的基于迭代KNN和插补优先级的DGA数据缺失值插补方法中,需要根据属性的重要性对属性的插补优先级进行排序,重要性是通过XGBoost分类模型中不同属性作为回归树划分属性的次数,作为划分属性时的平均增益和作为划分属性时的平均覆盖度来计算的。
对于本领域技术人员而言,显然本发明不限于上述示范性实施例的细节,而且在不背离本发明的精神或基本特征的情况下,能够以其他的具体形式实现本发明。因此,无论从哪一点来看,均应将实施例看作是示范性的,而且是非限制性的,本发明的范围由所附权利要求而不是上述说明限定,因此旨在将落在权利要求的等同要件的含义和范围内的所有变化囊括在本发明内。不应将权利要求中的任何附图标记视为限制所涉及的权利要求。
此外,应当理解,虽然本说明书按照实施方式加以描述,但并非每个实施方式仅包含一个独立的技术方案,说明书的这种叙述方式仅仅是为清楚起见,本领域技术人员应当将说明书作为一个整体,各实施例中的技术方案也可以经适当组合,形成本领域技术人员可以理解的其他实施方式。