数据集了解最佳实践


13

我是数据挖掘的CS硕士学生。我的主管曾经告诉我,在运行任何分类器或对数据集执行任何操作之前,我必须完全理解数据,并确保数据干净无误。

我的问题:

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

  • 如何确保数据集干净?

  • 是否要确保数据集没有错误值?

Answers:


8

您可以使用任何数据集执行以下基本操作:

  1. 验证值(字符串长度容限,数据类型,格式掩码,必需的字段存在等)
  2. 范围正确性(此看似正确的数据是否在期望值的范围内)
  3. 初步处理(如果我尝试分析此数据,可以执行基础操作而不会出错)
  4. 初步报告(针对数据集运行报告,并确保其通过健全性测试)
  5. 对于任何给定的数据列,定义空值,空值,零值,错误值
  6. 识别不适当的数据(数字值与数据集中的其他值有很大不同,看起来像可能是拼写错误的字符串值,等等)
  7. 消除或纠正明显错误的数据

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

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

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

这很明显,但是说您正在处理库存数据,而您的价格范围是1000美元以下的股票。很多人不知道如此低的股价在某些交易所是无效的而在其他交易所是完全有效的。您需要有关数据的知识,以了解所看到的是否有问题。

在现实世界中,您并不总是拥有亲密了解数据的能力。

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

此外,必须查询数据源以及该数据源可信任的程度。我经常有多个相互冲突的数据源,我们创建规则来确定“真相”。有时,一个数据集在给定方面具有出色的数据,但其他数据集在其他方面更强大。

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


5

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

两个例子:最近我进行了一项研究,研究了全世界各种拖拉机收集的数据。我当时不在简报会上,所以对我来说是不透明的。不幸的是,法国某些地方的测量结果有所不同:人们都喜欢冰壶,但我们希望获得随机分布。这种统一性没有明显的原因,所以我开始寻找错误。当我查询承包商时,有人误解了简报,只从他的数据库中选择了冰淇淋爱好者。

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

结论:

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

4

我通常采取两步走法

  1. 计算每个变量的单变量(随变量而异)摘要统计信息,例如均值,范围,方差,缺失数,基数等,并查找奇数(例如,鉴于变量的含义,范围不合理)。绘制这些奇数变量的直方图。

  2. 将数据拆分为可管理的子集(选择一个有意义的变量,并根据其拆分数据(例如,所有肯定的示例,全部为否定的)),然后进行可视化探索(例如,使用ggobi)。尤其要使用诸如刷图和散布图之类的工具来了解变量如何链接在一起。

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


4

在下面的数据科学StackExchange/datascience//a/722/2452)上,您可以找到我对一个相关(但是,侧重于数据清洗方面)问题的答案的副本,该文档的全文提供给读者的方便。我相信它也可以部分回答您的问题,希望对您有所帮助。尽管答案集中在R生态系统上,但可以为其他数据分析环境找到类似的程序包和/或库。此外,尽管引用的两篇有关数据准备的论文也包含R中的示例,但这些论文提出了适用于任何方法的一般 工作流程(框架)最佳实践 数据分析环境。

R含有一些标准为数据操纵功能,其可被用于数据清洗,在其基极封装(gsubtransform等),以及在各种第三方软件包,如stringr重塑reshape2,和plyr。以下文件描述了使用这些包及其功能的示例和最佳实践: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



1

我将添加一件事-如果可能,通过将您的数据与其他来源进行比较来进行合理性检查。似乎每当我不这样做时,我都会被烧死:(

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.