预测数据库中缺少的数据值

时间:2009-07-23 17:20:10

标签: algorithm math statistics

我有一个数据库,由一大堆记录(大约600,000个)组成,其中一些记录缺少某些字段。我的目标是找到一种方法来根据现有数据预测丢失的数据值应该是什么(所以我可以填写它们)。

我正在研究的一个选项是聚类 - 即表示在某些空间中作为点完成的记录,寻找点集群,然后当给出具有缺失数据值的记录时,尝试找出是否有任何可能属于其中的群集与现有数据值一致。然而,这可能是不可能的,因为某些数据字段是标称比例(例如颜色),因此无法按顺序排列。

我的另一个想法是创建某种概率模型来预测数据,在现有数据上进行训练,然后用它来推断。

有哪些算法可用于执行上述操作,是否有任何免费提供的软件可以实现这些算法(顺便说一句,此软件将在c#中)。

3 个答案:

答案 0 :(得分:7)

这不是一种算法,更多的是一种哲学和方法论问题。有几种不同的技术可以解决这类问题。 Acock(2005)对一些方法进行了很好的介绍。虽然看起来似乎涉及到很多数学/统计学(并且可能看起来很费劲),但是如果你搞砸了会发生什么会有所值。

安德鲁·格尔曼的博客也是一个很好的资源,尽管他博客上的搜索功能还有待改进......

希望这有帮助。


Acock(2005)

http://oregonstate.edu/~acock/growth-curves/working%20with%20missing%20values.pdf

Andrew Gelman的博客

http://www.stat.columbia.edu/~cook/movabletype/mlm/

答案 1 :(得分:6)

处理缺失值是一个有条不紊的问题,与数据的实际含义有关。

您可以使用几种方法(详细post on my blog):

  1. 忽略数据行。这通常在缺少类标签时进行(假设您的数据挖掘目标是分类),或者行中缺少许多属性(不只是一行) )。但是,如果这些行的百分比很高,你的性能会明显下降

  2. 使用全局常量填写缺失值。类似“未知”,“N / A”或减去无穷大。使用它是因为有时候尝试预测缺失值是没有意义的。例如,如果你有一个数据库,如果大学候选人和居住州缺少某些人,那么填写它并没有多大意义......

  3. 使用属性均值。例如,如果美国家庭的平均收入是X,您可以使用该值来代替缺失的收入值。

  4. 对属于同一类的所有样本使用属性均值。让我们说你有一个汽车定价DB,除其他外,将汽车分类为“豪华”和“低预算”,你在处理成本领域的缺失值。用所有豪华车的平均成本取代豪华车的缺失成本可能比你考虑低预算车的价值更准确

  5. 使用数据挖掘算法预测值。可以使用回归,基于推理的工具使用Baysian形式,决策树,用于生成步骤方法#4(K-Mean \ Median等)的输入的聚类算法来确定该值。 我建议首先查看回归和决策树(ID3树生成),因为它们相对容易,网上有很多例子。

  6. 至于软件包,如果你能负担得起,并且你在微软的世界里看看实现上述大部分内容的SQL Server Analysis Services(简称SSAS)。

    以下是免费数据编制软件包的一些链接:

    虽然不是C#,但他对决策树和baysian学习(使用Ruby)是一个很好的介绍: http://www.igvita.com/2007/04/16/decision-tree-learning-in-ruby/ http://www.igvita.com/2007/05/23/bayes-classification-in-ruby/

    我发现这个Ruby库非常有用(也用于学习目的): http://ai4r.rubyforge.org/machineLearning.html

    这些算法应该有足够的样本在线使用任何语言,所以我相信你也很容易找到C#的东西......

    编辑:

    在原帖中忘了这个。如果你正在玩数据挖掘,这肯定是必须的.​​..... 下载Microsoft SQL Server 2008 Data Mining Add-ins for Microsoft Office 2007(它需要SQL Server Analysis Services - SSAS - 这不是免费的,但您可以下载试用版。)

    这样您就可以在自己实现这些内容之前轻松地在Excel中播放和尝试不同的技术。再说一遍,既然你在微软生态系统中,你甚至可能决定选择基于SSAS的解决方案并依靠SQL Server人员为你做这件事:)

答案 2 :(得分:2)

预测缺失值通常被认为是数据清理阶段的一部分,需要在数据挖掘或进一步分析之前完成。这在现实世界的数据中非常突出。

请查看此算法http://arxiv.org/abs/math/0701152

目前,Microsoft SQL Server Analysis Services 2008还附带了这些http://technet.microsoft.com/en-us/library/ms175312.aspx等算法,这些算法有助于对属性进行预测建模。

欢呼声