垃圾进垃圾出。诞生于计算机科学早期的熟悉的短语也是如此,它强调了验证输入的重要性。
您可以拥有最巧妙,最优雅,经过充分测试的功能,模型或应用程序-但是结果仅与输入的结果一样好。
每当我们开发代码时,我们都会提前对其将处理的数据的性质进行假设。一个简单的算术函数可能期望单个浮点数。小吃摊亭的需求预测模型可以以特定表格形式预期最近五年的销售数字。无人驾驶汽车控制器将从车辆周围的许多传感器接收不同的数据流。
如果违反了这些假设,那么可能会发生三件事之一。
该代码对照预期检查输入并启动计划B。这可能是为了警告用户数据问题并正常停止。
代码遇到运行时错误,导致程序崩溃。
该代码继续进行,忽略了错误的输入,并产生了可能合理的但不正确的输出。
第一种情况为您提供降落伞,第二种情况为您带来头痛,第三种情况为您在融化的Cornetto水坑中提供多辆汽车堆积。
错误的数据=>错误的决定
随着组织变得更加成熟的数据,重要的业务决策越来越频繁地依赖于数据分析和建模。如果做出这些决定的数据不完整,那么基于该数据的推理将是有缺陷的,可能会带来非常昂贵的后果。
这就是为什么了解数据质量并了解正在使用的数据可能无法满足您的需求如此重要的原因。
准确性
曾经创建的每条数据,都起源于现实世界中的事件或度量。这可能是温度传感器的输出,金融交易的记录或有人在网络表单中键入其姓名。准确性描述了"数据正确描述所描述的"现实世界"对象的程度。"
为了实现这一点,从真实世界到数据集的每个步骤都必须正确保留原始内容的本质。
在事件/对象的测量或记录过程中,可能就在开始时就可能发生错误。2020年5月,由于填写错误的申请表时出错,澳大利亚政府高估了COVID19工资补贴计划的支出承诺600亿澳元(合390亿美元)。要求雇主说明他们加入该计划的雇员人数。但是,在0.1%的情况下,他们提交了所需补贴的美元价值—正确金额的1,500倍。这些错误被遗漏了,它们的总价值流入了议会通过的法案中。几周后,政府宣布了自己的错误,面红了,但对于在沙发后方找到600亿美元的想法,可能并不太不满意。
在上面的示例中,仅列出前100名左右的索赔人可能会阐明该问题。您可能希望找到大型的快餐和零售品牌,连锁酒店等,但是当您遇到一家当地餐馆或一家小型旅游公司,声称拥有数千名员工时,您就会知道这是一个问题。
这突出了基本分析和概要分析对理解数据集的重要性。在进行任何报告或建模之前,您需要仔细查看每个字段以查看其值是否有意义,并且不要感到奇怪。
精度与表亲有密切关系:精度。环法自行车赛的赛段时间以小时和秒为单位进行记录,但这在奥运会的100m决赛中无效。在数据类型转换期间,或者由于用于进行初始测量的仪器的灵敏度,精度可能会丢失,并且可能导致模型可用的方差较低。
完整性
数据完整性表示"数据集中所需数据的程度"。任何数据集都可能有缺口和数据缺失,但是缺失的数据是否会影响您回答问题的能力。要了解的关键是是否引入了会影响您结果的偏见。
1936年,《文学文摘》(LiteraryDigest)进行了一项民意调查,询问受访者是否会投票支持共和党人阿尔弗雷德·兰登(AlfredLandon),还是现任民主党人富兰克林·罗斯福(FranklinD.Roosevelt)。但是,邮件列表主要是从电话目录中选择的。现在,在1936年,电话远非普及,被认为是奢侈品。因此,由于遗漏了那些无法负担电话的人,邮寄名单最终偏向于中上层选民。一旦做出回应,《文学文摘》就正确地预测出了滑坡。然而,不幸的是,兰登而不是罗斯福发生了滑坡,罗斯福最终在美国历史上最单方面的选举中赢得了48个州中的46个。通过使用更完整的数据集(例如选举名册),或者至少通过理解和调整其缺失数据所造成的偏差,投票数字可能已经接近目标。
完整性问题可能会在记录级别发生,就像上面那样,您会丢失全部行,但也可能会在列级别发生,即,字段在80%的时间内可能为空白。如果缺失值不是均匀分布的,这可能会跳出许多机器学习方法,并且可能再次引入偏差。为了缓解此问题,有两种方法:
丢弃不完整的列
丢弃包含缺失数据的行
插补丢失的数据(也称为空白)
YoghitaKinha的精彩文章"如何处理数据集中的缺失值"中包含对上述方法的全面介绍。
尽管实际响应率要低得多,但默认值给人一个完整字段的错觉,这是一个更加棘手和更隐蔽的完整性问题。当我为零售时尚品牌建立客户终身价值模型时,这曾经发生在我身上。每个客户档案上都有一个"性别"标志-M代表男性,F代表女性。该字段在数据集中具有很高的完整性,但是当一些基本分析显示大约6个月前向女性客户急剧转变时,人们就产生了怀疑。事实证明,在最近重新设计的注册表单中,性别字段已从没有默认值的必需下拉框更改为默认="女性"的下拉列表。这种微小的变化意味着忽略该字段的客户现在被记录为女性,而不是被发送回表格中填写。
一致性
如果在多个位置复制数据,则所有实例之间的数据必须保持一致。对于百货商店,您可以通过会员计划,邮件列表,在线帐户支付系统和订单履行系统来保存特定客户的数据。在混乱的系统中,可能会有拼写错误的名称,旧地址和冲突的状态标志。这可能会导致仅从数据点的一个实例读取数据的过程出现问题,例如,如果某个客户退订了营销电子邮件,但是这并未反映该客户的所有代表,他们可能会继续接收通信,他们感到非常沮丧。不一致的联系信息还可能导致在打电话或向深渊发送信件时浪费金钱。
在上面的示例中,拥有一个高度集成的客户数据平台(例如Segment或Omneo)可以帮助汇总客户的单个视图,并确保解决一致性方面的问题。
及时性
您的数据集是否足够最新?事件发生与它出现在您的数据之间有什么滞后。很多数据分析和建模都将基于历史快照,因此直到今天为止都不需要运行它们。但是,实时决策需要实时数据。如果每天只能一次分批下载来自雷达系统的数据,那么这对空中交通管制员不会有太大帮助。如果某些商店由于连接问题而推迟了周日的销售数据,那么您周一的管理会议数字将不正确。
您的数据集的及时性可能取决于导致其创建的数据集成管道。这可以是实时的,可以在事件描述后立即提供数据,也可以批量处理,这意味着数据将"冻结"直到下一次刷新。对该管道的更改可能使您可以访问更多最新数据,并对新事件做出更快的响应。
独特性
每个真实世界的对象或事件仅应在特定的数据集中表示一次。即是否有JohnDoe和JohnnyDoe的客户记录,尽管他们实际上是同一个人。
因此,任何涉及客户的指标(客户数量,每位客户的支出,购买频率)都将由于包含一个人的重复表示而被剔除。
发现此问题意味着确定适当的主键。在JohnDoe和JohnnyDoe的示例中,他们可以具有不同的名称和客户ID,但是可以匹配电子邮件地址,这有力地暗示了他们是同一个人。这意味着在进行任何分析或建模之前,需要进行数据整理以合并这些客户记录的附加步骤。
有效期
数据集中的字段可能具有其必须满足的条件才能被视为有效。电子邮件地址必须带有"@"符号,电话号码必须是数字序列,并且会员级别字段可能需要为"Gold","Silver"或"Bronze"。
在许多情况下,a使用正则表达式可以轻松实现有效性检查。有在线数据库,例如regexlib.com,其中包含数千种常见数据类型的正则表达式。对于离散数据类型,例如上面的成员资格级别示例,简单的频率统计信息可以告诉您是否存在有效性问题。如果除了"Gold","Silver"或"Bronze"以外,还有大量其他值,则说明出现了问题。
一旦识别出无效数据,它将有效地成为完整性问题,可以使用前面介绍的方法来解决。
综上所述
在任何数据科学项目的开始阶段,重要的是要清楚地了解您的数据及其从源到数据集的路径。尽管可能会急于实施您项目中更性感,更复杂的部分,但如果它建立在不稳定的基础上,那将是浪费时间。只有认真地进行提问,测试假设,分析和理解数据的工作,您才能真正对分析的质量充满信心。