星期日, 二月 12, 2012

数据挖掘中的九种错误


1 只关注训练数据
训练样本之外的数据才是真正重要的。安德森医疗中心的研究人员在十年前使用神经网络来检测癌症。相对于训练样本,他们的检验样本表现不佳,但还算不错的。但他们认为应该加大神经网络的训练时间,结果检验样本的表现比以前更为糟糕。这就是一个很典型的过度拟合的案例。避免过度拟合的重要手段是保留数据。一些有用的方法包括:自举法(bootstrap)、多重交叉检验(cross-validation)、刀切法(jackknife)、留一法(leave-one-out)。

2 只依赖一种技术
有句老话说:如果你手里只有一把锤子,那么看任何东西都象是一个钉子。在不同的问题背景下,模型的效果是不同的,你必须有一整套工具才能从中选择一种最优的。对同一个问题,至少你得比较新旧两种方法的优劣。相对于专业知识和数据的优良性,单一的建模技术不一定能解决很大问题。John Elder等人在1997年用五种算法对六类数据集进行了比较研究,结果发现没有一种算法能够通吃所有的数据。所以说,一把钥匙开一把锁。


3 错误的建模目标
计算机只能理解你的算法,但没法理解现实中的问题。只有依靠人的背景知识才能将问题“翻译”成适当的算法。例如建模中通常的目标是使误差平方和最小化,但这在股票收益预测中就不一定合适。所以对于特定的问题需要订制特定的评估函数。

4 只关注数据本身
数据挖掘者认为,要让数据自己说话,不要被先验的知识所约束。但这句话有时候却是错误的,因为现实中的数据只是现实世界一种映射和抽样,其中可能包括了实验错误、观察错误、记录错误等等。如果你完全相信数据而不借助于专业背景知识,你得出的结论也往往是荒谬的。

5 错误的输入变量
曾经有一家咨询公司建立了一个投资模型以预测市场的变动,其准确率居然高达70%。后来发现该模型只是一个简单的三日均线,而且它的模型里用未来的价格来预测今天的价格,这显然是荒诞可笑的。一般来讲,模型的准确率如果出奇的高,你需要仔细检查输入变量中是否包括了不应有的未来指标。

6 删除异常样本
异常值和杠杆点会极大地影响模型结果和趋势。然而,你不能随意删除它们,因为这异常值可能意味着惊人的发现。统计学家John Aitchison就回顾多年前他在研究南极上空辐射水平时,曾将一个峰值作为误差删除掉。但事实上,这个异常的峰值揭示了南极上空臭氧层空洞的存在。所以在建模时,进行数据可视化能有助于判断研究中异常值的特性。

7 简单外推
在线性回归中,我们用一条线将一些点连接起来,然后估计这些已知点之间的值,这是合理的,但在已知数据的边界之外进行估计是危险的,特别是对于非线性模型,这种简单的外推更是不可取的。除此之外,还有另一类形式的“外推”也是不合理的,例如从小样本中得到的特征外推到大样本中,从低维空间中得到的结论外推到高维空间中。

8 错误的抽样
有很多数据挖掘问题中,感兴趣的样本数总是罕见的。例如信用卡欺诈问题,欺诈发生的数量相对于整体数据几乎就是沧海一栗。但很多算法对于这种非平衡数据是没有多大效果的。所以一种方法就是将罕见的样本进行再抽样,以人工形成平衡。但随意这样再平衡也是错误的。

9 对模型过于相信
正如George Box说过,所有的模型都是错误的,但有些是有用的。

注:本文摘译自《Handbook_of_Statistical_Analysis_and_Data_Mining_Applications》第20章

没有评论:

发表评论