一种自适应最近邻缺失数据的填充方法与流程

文档序号:12063507阅读:1928来源:国知局

本发明涉及缺失数据填充方法领域,具体地说,特别涉及到一种自适应最近邻缺失数据的填充方法。



背景技术:

人们生产实践过程不可避免的产生大量数据,由于各种实际原因,不可避免的出现数据缺失。由于大多数数据分析工具只能处理完整的数据集,所以非常重要的是要对具有缺失值的数据集进行预处理以使其完整,才能更好的利用所有已知信息做出更加接近事物本质的预测与判断。对缺失数据的分析往往会影响到数据模式的准确与否,从而决定数据分析建模是否正确,更进一步会影响决策支持系统的分析结果和决策。因此,缺失值填充是一个非常重要的研究课题。

现有技术中中,处理这个缺失问题的常见方法是插补(填充)缺失值,如广泛应用的K最近邻填充算法(KNN)。虽然其算法简单,但算法本身在选择K的过程中可能会产生较大的偏向,从而导致带有较大偏差的填充值。更为重要的是这种方法不能最大限度的利用其他含有缺失数据的有用信息,填充的准确率不是很高。当缺失值的数量增加时,KNN法的性能降低。



技术实现要素:

本发明的目的在于针对现有技术中的不足,提供一种自适应有序最近邻缺失数据填充方法,以解决现有KNN算法的正确率较低,无法利用含有缺失项里的其他完整数据提供可靠的填充值的问题。

本发明所解决的技术问题可以采用以下技术方案来实现:

一种自适应最近邻缺失数据的填充方法,包括如下步骤,

1)选定作为目标的原始数据集,通过使用由KNN算法计算的估计值填充原始数据集中的缺失值来初始化数据;

2)根据原数据集根据是否含有缺失数据,将其分为缺失数据集和完整数据集,然后根据最低缺失级别和缺失值属性对缺失数据集进行数据排序;

3)在缺失数据集中选择一个具有最小缺失率的数据,并使用KNN算法在完整数据集上进行填充,得到更新数据;

4)将所述更新数据移到完整数据集中用来估计下一个的缺失值;

5)若缺失数据集中没有含有缺失值的数据,则停止;否则返回步骤3);

6)比较更新的填充数据和旧的填充数据,如果收敛,则停止;否则使用更新的填写数据返回步骤3)。

所述步骤2)的数据排序具体方法如下:

a1)按照整个数据集原始数据的所有特征,计算出各个特征丢失数据的缺失率;

a2)将所有缺少一个特征的数据根据特征缺失率从小到大排序;

a3)将所有缺少两个或两个以上特征的数据放在一起,并按照丢失率大小,将具有相同的丢失率的数据放在一组,不用组按照丢失率从小到大排列;

对于每一组而言,其中组内排序根据各个对应特征属性上的缺失率总和进行再次排序;

通过多次排序,最后得到一个具有最优填充顺序的缺失数据集。

与现有技术相比,本发明的有益效果如下:

本发明以传统的KNN算法为基础,引入一个新定义的缺失率排序的概念,并利用自适应方法使其完整数据集不断得到更新和扩张,从而可以包含更多的缺失数据中的原有用信息进行下一次的填充。当所有缺失值自动更新并收敛后,就完成了对缺失数据的填充过程。

本发明在填充准确性上优于KNN算法,并能够有效的处理多维缺失数据,提高了填充值的可靠性和稳定性,为之后的数据模型建立与预测提供了更加接近事实的数据,从而提高了数据模型的准确性和决策的正确性。而且本算法设计简单,易在计算机上实现,具有较高的利用价值。

附图说明

图1为本发明所述自适应最近邻缺失数据的填充方法的示意图。

具体实施方式

为使本发明实现的技术手段、创作特征、达成目的与功效易于明白了解,下面结合具体实施方式,进一步阐述本发明。

对于给定数据集{x1,...,xN},N和D分别是对象和特征属性的数量,这里KNN算法使用目标对象xi和每个候选对象xj之间的欧几里德距离dij来度量数据点之间的距离,其表示如下:

其中xik是第kth对象xi的特征。

如图1所示,本发明包括6个步骤。

(1)是选择KNN算法先进行首次填充,得到一个完整的数据集,从而完成数据的初始化。设置一个填充收敛条件,即迭代差的最小值。

(2)是将原数据集根据是否含有缺失数据,分为两个子数据集,即缺失数据集和完整数据集。然后针对缺失数据集里的数据各自不同的缺失率排序。本专利所提出的排序方法由三步组成。首先,按照整个数据集原始数据的所有特征,计算出各个特征丢失数据的缺失率;然后,将所有缺少一个特征的数据根据特征缺失率从小到大排序;最后,将所有缺少两个或两个以上的特征的数据放在一起,按照丢失率大小,将具有相同的丢失率的数据放在一组,所有组按照丢失率从小到大排列。对于每一组而言,其中组内排序根据各个对应特征属性上的缺失率总和进行再次排序。通过多次排序,最后得到一个具有最优填充顺序的缺失数据集。

(3)按照既得的最优填充顺序,从缺失数据集中选择一个具有最小缺失率的数据xi,使用KNN算法在完整数据集的基础上进行填充,得到一个更新的x′i

(4)将更新的数据x′i移到第二步中所分得的完整数据集中,重新更新过的完整数据集因为加入了具有部分原始数据的填充数据,从而增加了完整数据集的真实信息量。然后返回第三步,利用这些更新后的信息,即新的完整数据集,根据最优填充顺序,用来估计缺失数据集中的下一个的缺失值。

(5)利用KNN和最优填充顺序进行的有序填充过程不断进行,直到缺失数据集中数据中没有需要填充的缺失值,则停止;否则继续返回步骤3。

(6)在完成有序填充之后,得到一个新的填充数据集;比较新的填充数据和上一次所得到的填充数据,如果满足初始化所设置的收敛条件,则填充过程停止;否则使用更新的填充数据返回步骤3,继续更新完整数据集,进行再次有序最邻近填充过程。

为了验证本专利提出的自适应最近邻近缺失数据填充算法的有效性,我们在UCI数据集中的Iris和Abalone两个真实的数据集上进行了实例实验。Iris也称鸢尾花卉数据集,是一类多重变量分析的数据集。数据集包含150个数据集,分为3类,每类50个数据,每个数据包含4个属性。Abalone数据集包括涉及生活领域的8个类别的4177个数据对象,其中含有1个分类型属性,1个整数型属性和6个实数型属性。我们将本专利提出的方法与KNN进行比较,根据缺失率的不同,随机在两个数据集上不同数据和不同特征属性上产生。评价指标用均方根误差(RMSE)来衡量:

其中:ei是实际值,e′i是填充值,m是缺失值的个数。RMSE值越小,意味着填充准确率就越高。实验过程中,KNN算法的K选取从1到30所有的整数数值。对两个数据集的特征属性随机产生缺失,缺失率分别为5%、10%、20%和30%,并在每种缺失率上都连续进行100次随机缺失实验,取RMSE的平均值来进行评价。

针对两个含不同缺失率的实际数据集的两种算法的RMSE比较,可以得到:首先,在数据集不同的缺失率条件下,无论KNN的K值如何取值,自适应有序最邻近算法的RMSE值都小于KNN算法,即前者算法的填充准确率高于KNN算法。其原因在于这种自适应填充算法利用引入的最优排序方式,通过多次更新完整数据集,并将最大程度上能利用的信息提供给有序KNN来填充缺失值,这样的填充方式是有效的。其次,KNN算法的填充效果会随着K取值大小的不同而出现较大波动,而本自适应有序算法由于充分利用了所有有用信息,因此有着稳定的填充效果。KNN算法在实验中对较小的K值的填充效果非常差,其最优K值也没有规律得到。而自适应有序填充方法对不同的K值都具有及其接近的较好填充效果,对K值具有一定的鲁棒性。不同缺失率的实验中,只是K值在相同数据集不同的缺失率条件下会有差别。通过实例表明,自适应有序最邻近填充方法算法对参数K值具有一定的鲁棒性,其填充结果与KNN相比,具有较好的稳定性和较高的准确性。

以上显示和描述了本发明的基本原理和主要特征和本发明的优点。本行业的技术人员应该了解,本发明不受上述实施例的限制,上述实施例和说明书中描述的只是说明本发明的原理,在不脱离本发明精神和范围的前提下,本发明还会有各种变化和改进,这些变化和改进都落入要求保护的本发明范围内。本发明要求保护范围由所附的权利要求书及其等效物界定。

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