数据集了解最佳实践

数据挖掘 统计数据 数据集
2021-10-07 03:00:47

我是数据挖掘的CS硕士生。我的主管曾经告诉我,在我运行任何分类器或对数据集做任何事情之前,我必须完全理解数据并确保数据是干净和正确的。

我的问题:

  • 理解数据集(具有数字和名义属性的高维)的最佳实践是什么?

  • 确保数据集干净的做法?

  • 确保数据集没有错误值的做法?

4个回答

您可以对任何一组数据执行以下基本操作:

  1. 验证值(字符串长度容差、数据类型、格式掩码、必填字段等)
  2. 范围正确性(这个看似正确的数据是否在预期的值范围内)
  3. 初步处理(如果我尝试分析这些数据,我是否可以在不出错的情况下执行基础操作)
  4. 初步报告(针对数据集运行报告并确保其通过健全性测试)
  5. 为任何给定的数据列定义空值、空值、零值和 False
  6. 识别不合适的数据(数值与数据集中的其他值显着不同,字符串值看起来可能拼写错误等)
  7. 消除或更正明显错误的数据

了解数据以识别错误是完全不同的游戏,而且非常重要。

例如,您可以有一条规则,规定序列号必须存在于给定的数据集中,并且序列号必须是字母数字,最大字符串长度为 255,最小字符串长度为 5。

查看数据,您可能会发现一个特定"PLEASE ENTER SERIAL" 的序列号值读取它完全有效,但错误。

这是一个显而易见的问题,但是假设您正在处理股票数据,并且您的 1000 只股票的价格范围低于 1 美元。很多人不知道,如此低的股价在某些交易所是无效的,而在其他交易所则完全有效。您需要了解您的数据以了解您所看到的是否有问题。

在现实世界中,您并不总是能够深入了解您的数据。

我避免问题的方法是利用我周围的人。对于小型数据集,我可以请某人完整地查看数据。对于大型数据,抽取一组随机样本并要求某人对数据进行完整性检查更为合适。

此外,质疑数据源以及该数据源的可信度是必不可少的。我经常有多个相互冲突的数据来源,我们创建规则来确定“真相来源”。有时,一个数据集在给定方面有很好的数据,但其他数据集在其他领域更强大。

手动输入的数据通常是我最怀疑的,但在某些情况下,它比任何可以通过自动化获取的数据都要强大。

我非常喜欢@Kallestad 的回答,但我想添加一个元步骤:确保您了解数据是如何收集的,以及存在哪些类型的约束。我认为在收集数据时认为没有不明显的步骤是很常见的,但事实并非如此:大多数时候,某些过程或个人对数据进行了一些思考,这些步骤可以并且将会影响数据的形状。

两个例子:我最近进行了一项研究,其中数据由世界各地的各种承包商收集。我没有参加简报会,所以这对我来说是不透明的。不幸的是,法国某些地区的测量结果并不理想:人们都喜欢吃冰激凌,​​但我们期望的是随机分布。这种一致性没有明显的原因,所以我开始寻找错误。当我询问承包商时,有人误解了简报,从他的数据库中只选择了冰淇淋爱好者。

第二个错误更具挑战性:在做一些地理分析时,我发现很多人的运动模式非常大,这表明他们中的很多人在几分钟内就从慕尼黑到达了汉堡。当我与上游的 ppeople 交谈时,他们在他们的数据聚合软件中发现了一个微妙的错误,这是以前没有注意到的。

结论:

  • 不要假设您的数据是由完美的流程/人类收集的。
  • 请尝试了解您的数据提供者的限制。
  • 查看单个模式/值并尝试确定它们是否合乎逻辑(易于移动/地理数据)

我通常采取两步走的方法

  1. 计算每个变量的单变量(变量变量)汇总统计数据,例如均值、范围、方差、缺失数、基数等,并寻找异常情况(例如,考虑到变量的含义,范围不合理)。绘制这些奇数变量的直方图。

  2. 将数据拆分为可管理的子集(选择一个有意义的变量并根据它拆分数据,例如所有正面示例和所有负面示例)并直观地探索它们(例如使用ggobi)。尤其是使用刷图和散点图等工具来了解变量是如何联系在一起的。

当你开始构建模型时,一定要绘制残差图,寻找可能由异常值引起的极端错误,或者查看混淆矩阵并确保它是平衡的。使用 k 折交叉验证来优化您的模型并查看每一折的训练误差的方差,如果一个折的性能比其他的差很多,它可能包含异常值。

您可以在下面找到我在Data Science StackExchange ( https://datascience.stackexchange.com/a/722/2452 )上对相关(但是,专注于数据清理方面)问题的回答的副本,全文提供方便读者。我相信它也部分回答了您的问题,并希望对您有所帮助。虽然答案集中在R生态系统上,但可以为其他数据分析环境找到类似的包和/或库。此外,虽然两篇引用的关于数据准备的论文也包含 R 中的示例,但这些论文提供了适用于任何领域的一般 工作流程(框架)最佳实践数据分析环境。

R 包含一些用于数据操作的标准函数,可用于数据清理,在其基本包(gsubtransform等)以及各种第三方包中,如stringrreshapereshape2plyr这些软件包及其功能的使用示例和最佳实践在以下论文中进行了描述:http: //vita.had.co.nz/papers/tidy-data.pdf

此外,R 还提供了一些专门针对数据清理和转换的软件包:

以下论文介绍了 R 中数据清理的全面而连贯的方法,包括示例和使用editrulesdeducorrect包,以及对 R 中数据清理的工作流程框架)的描述,我强烈推荐:http ://cran.r-project.org/doc/contrib/de_Jonge+van_der_Loo-Introduction_to_data_cleaning_with_R.pdf