星期四, 十一月 10, 2011

数据挖掘之你问我答(3/5)

注:本文是由Tim Graettinger的文章编译而来
问题三:进行数据挖掘需要多少数据?

这是迄今为止关于数据挖掘最常见的问题,这个问题得到如此多的关注是有其原因的。当你第一次进行数据挖掘,几乎会下意识的提出这个问题。你想知道,从数据挖掘的角度来讲手里的数据是否足够。尽管问题很简单,但在没有更深理解问题的前提下回答它却是不明智的。在这里我只能提供一些原则性的指导意见,然后你可就此来做为进一步工作的起点。我甚至会提供一个经验法则来帮助你估计所需要的数据。

第一个原则是基于关系的复杂度。你想构建的关系越复杂,你就需要越多的数据来准确的构建它。但是,你可能会说,“我不知道关系有多复杂啊”。从现实角度来看,关系的复杂度可以从影响关系的因子来加以判断。比方说,要预测天气。那么想想可能的影响因素会有哪些,例如风力、风向、温度、湿度、云层等等。你需要对可能的影响因素有大体的估计。


下一步你要考虑,在这些因素条件下,我应该如何从实验中收集数据。至少,你要独立测试每个因子的大小,以判断这些因子间是否相互影响。而且,你要运行每个实验多次,以减少噪音的影响。我们可以将这些因素通盘考虑后转化为一个经验公式:
NR  M × 2(F+1)
其中F是影响因子个数,M是每个实验的倍数(我们可以取25),2代表每个因子有两种水平需要测量。NR就是最终的结果,也就是你需要的最少数据个数。让我们来试一个简单的例子。假设确定有9个因子,乘数为25,根据经验法则,我们得到:
 NR  (25) × 2(9+1)  25,000
你会注意到,随着数据挖掘中的因子增加,所需要的数据以指数倍增加。有人曾认真地告诉我,他的模型中往往有50甚至100个因子,所需数据真是个天文数字。而我的回答是,并非所有因子都会独立施加影响(意味着有些因子是无需考虑的)。如果你的模型中有很多因子,那就用F = 12作为一个良好的开端。

第二个原则是平衡,尤其是各输出结果的平衡。例如在天气预测的例子里,模型产生两种输出结果,即天睛或雨天,而每种结果都需要有相应的数据。因此你的模型输出结果越多,你就需要更多的数据。

不仅如此,每项输出结果还要有足够的“混合”。还是以天气预测的例子来讲,假设你有10万个样本记录,但其中只有1%的数据是对应着雨天的结果。换句话说,雨天这个输出结果只对应1000个样本。对于10万来讲,1000条记录确实不多,而这个最低频数样本将成为建模的约束条件。在前文所述的经验公式中,NR实际上是指的最低频数结果所对应的样本数,思考一下原因。

第三个原则是模型的复杂性模型越复杂,那么涉及到的参数或系数会越多,则需要更多的数据。但关于这一原则还有更多需要讨论的细节,我们下回再说。

没有评论:

发表评论