避免低质量数据的5个方法

  • 2016-01-08 19:04:12
  • DAMS翻译

数据科学家的最怕的是低质量的数据。因为哪怕你发明出世界上最聪明的算法,这些算法碰到低质量数据便毫无用处。正如我们常说的,“垃圾数据入,垃圾数据出”。


我最近在为一个大型的石油天然气公司工作。为提升炼油厂的安全性,我协助他们采用一个更加基于风险的检验策略。为了能够最好地运用这种策略,我们需要把风险完全量化。我们想使用历史检验数据来确定需要更多关注的高风险区域。但是因为人们对于现有的历史数据并没有信心,这个方法便行不通。这是一个数据从业者经常面对的挑战。为了让你的数据科学良好地运作,你需要有一些避免低质量数据的方法。


1.清洁数据源


一个清洁的数据源是非常重要的。一个本来就相对干净的房子,清理起来会比较轻松。数据清理也是一个道理。


在石油天然气客户那里,我发现了许多数据采集的问题。比如说,在数据库中,你可能发现2015年管道厚度的读数比2012年的读数大。虽然我不是一个物理学家,但是我相当肯定管道厚度不会随着时间而增长。当初当我们看到一个如此可疑的数据,我们并没有从根本上做出一个原因的分析。但是这的确是值得详细调查的。这就是我所说的从源头清理数据。相对于其他的数据清理方法,我偏爱清洁数据源这种方法。因为它的清洁效果是任何其他方法的10倍。


2.建立标准答案


在你能够认定什么是高质量数据前,你必须知道高数据质量是什么样子。虽然在一些案例中,这是不可能的。譬如说在管道测量这个例子中,就不可能确切知道三年之后管会道薄多少。这也正是你测量它的原因。但在一些案例中,你可以知道高质量的数据是什么样子的。


你最好有一个标准答案。特别当你在用统计学的方法确定数据质量时候,一个简单的单一样本T检验,就可以告诉你数据的质量如何。


当你在利用公司Email服务器进行员工情绪的数据挖掘时,你的算法应该排除所有进入服务器的垃圾邮件。在这种情况下,垃圾邮件十分明显,所以你也能够很明显地看出哪些是非垃圾邮件,而这就是标准答案的作用。


3.谨记完整性规则


完整性规则是清理数据的必须条件


我曾经在一间大型的技术公司工作,公司主要业务是构建政府交易的客户注册表。这些客户注册表是4到5个数据源的客户主数据。为集成每一个数据源,我们会见了产品的拥有者,询问了他们关于数据的ACD(增加、修改、删除)属性情况。然后,我们在它们的数据表中建立ACD审计日志去观察实际上发生了什么事情 。结果,在几乎所有的案例中,总有一些不应该删除的数据从表中被删除,并且总有数据被插入到本应是静态的表中。


考虑数据没有损坏时,你的数据中运用的逻辑法则,然后建立审计脚本,在有违背规则情况发生的时候,你可以得到及时的通知。例如,如果有一个外键指向一个不存在的主键,你就可以及时发现这个问题。


4.采用专家系统


如果不涉及定量的风险评策略不能让石油天然气的客户满意,我们会和专家们商量,看我们是否可以重复他们在分析数据前进行数据清洗的过程。这是一个专家系统,它是一个基于规则的复制,复制一个人类专家如何去介定好的数据质量。一个专家系统可以良好地运作,只要如下条件:1)你有真正的专家(提示:检查他们的结果并且忽略他们的职位)。2)他们可以清楚地解释他们所做的一切。3)他们所做的可以转换为明确的规则。


理论都是背后内容的简化,所以需要小心,你的专家可能很难向你解释他们所做的事。正如同向一个小学生解释如何开车,并不是那么容易的事。


5.在你的兵工厂中加上机器学习能力这个工具


使用机器学习能力去清理你将会用作机器学习的数据,听起来有点绕。但它确实可行。你要设立两种系统:一个用于清理,而另一个用于分析。你需要确保它们的解决方案空间独立,因为这是两个不相同的问题。 教会计算机学习清洁数据是什么样的,这个方法是完全可行的,特别是当你有标准答案的时候。

只依靠计算机,利用它的机器学习能力去清洗输入数据并不能让我安心。因为哪怕是在机器学习能力如此发达的今天,你都永远不能完全了解清洗算法究竟能在多大程度上发挥作用。就好像亚马逊的机器,它的确很好,但它推荐给我的电影却不合我心意。然而,即使如此,在你的兵工厂中储存上这种工具依旧是有利无害的。


小结


我讲述了五个方法用来确保你不会因为垃圾数据破坏你的数据科学努力。一些战术可以马上使用,一些需要时间去开发。


你应该认真对待只输入高质量的数据到你的数据算法这一原则。否则,你很快会看到你的数据科学团队将被质量问题所困扰。


(作者:John Weathington,翻译:新炬网络梁铭图,整理:DAMS,架构师联盟微信号:jiagoushi2015)