实现数据科学研究结果可复制的十条规则

近年来,有越来越多的迹象表明,科研结果的可复现性出现了危机。对心理学和癌症生物学论文的检查发现,分别只有40%和10%的结果是可复现的。

《自然》杂志在2016年对科研人员的调查结果显示:

  • 52%的科研人员认为存在严重的可复现性危机
  • 70%的科学家试图复现另一位科学家的试验,但以失败告终

2013年,一群科研人员在一篇论文中,讲述了可复现性计算研究的十条规则。如果遵循这些规则,应该会产生更具可复现性的结果。

所有的数据科学都是研究。仅仅因为研究结果没有发表在学术论文中,这不会改变我们试图从庞杂数据中获取洞见的事实。因此,对于任何从事内部分析的数据科学家来说,那篇论文中的十条规则都应该引起重视。

规则1:对于每个结果,都要记录它的产生过程

知道研究结果的产生过程很重要。知道你如何从原始数据中得出该结论,这可以让你:

  • 为结果辩护
  • 发现错误时修改结果
  • 在数据更新时复现结果
  • 提交结果以供评审

如果你使用一种编程语言(R、Python、Julia、F#等等)来编写你的分析脚本,那么过程应该是清晰明了的,前提是避免了任何的手动步骤。如果使用“鼠标点击”工具(比如Excel),这会使你更难记录步骤,因为你必须描述一系列手动操作,而手动操作很难记录和复现。

规则2:避免手动数据操作步骤

你可能很想在编辑器中打开数据文件,手动修改格式错误或者删除异常值。而且,现代的操作系统使你可以轻松地剪切和粘贴应用。然而,你应该抵挡住这种走捷径的诱惑。手动数据操作是无法显示踪迹的操作。

规则3:存档你使用的所有外部程序的准确版本

理想情况下,你应该创建一个包含所有脚本运行软件的虚拟机。这使你可以生成分析生态系统的快照,轻松实现结果的可复现性。

不过,这并不总是可行。例如,如果你使用云服务,或者你分析的数据集非常庞大,那么你很难圈定整个环境进行存档。另外,商业工具的使用可能使你难以和其他人分享这样的一个环境。

至少,你必须记录你使用的所有软件的版本,包括操作系统的版本。软件的任何细微变化都可能影响到结果。

规则4:记录所有自定义脚本的版本

应该使用版本控制系统(比如Git)来记录脚本的版本。你应该标记(快照)多个脚本,并在你产生的任何结果中索引那个标记。这样一来,如果你后来决定修改脚本(你肯定会这么做),你就可以及时找到产生特定结果的确切脚本。

规则5:尽量用标准格式记录所有的中间结果

如果你遵循了规则1,应该就有可能从原始数据中重现任何结果。不过,虽然这在理论上是可能的,但在实践中存在种种限制。问题可能包括:

缺乏从头开始运行结果的资源(比如使用了大量的集群计算资源)

使用了商业工具,但没有某些工具的授权

使用某些工具的技术能力不足

在这些情况下,从原始数据的派生数据集着手不失为明智之举。这些中间数据集(比如CSV格式数据)提供了更多的分析选择,并且在出错的时候,更容易识别有问题的结果,不必重头来过。

规则6:对于带有随机性的分析,要记录潜在的随机种子

数据科学家常常没有为他们的分析设置种子值,因此不可能准确复现机器学习研究。很多机器学习算法都包含随机成分,虽然强劲的结果可能在统计上是可复现的,但没什么能比得上与其他人产生的精确数据相一致。

如果你使用脚本和源代码控制,你可以在脚本中设置种子值。

规则7:始终保存原始数据

如果你使用脚本/编程语言,图表常常将自动生成。但如果你使用Excel这样的工具来绘制图表,请确保你保存了原始数据。这使图表可以复现,也能对图表背后的数据进行更细致的检查。

规则8:生成层次分析输出结果,使越来越细致的层次可以被检查

数据科学家的工作是以某种形式总结数据,从数据中获取洞见。

不过,总结也容易导致数据误用,所以应该让相关方可以把总结分解成各个数据点。对于每个总结性结果,要与使用的数据联系起来,以便对总结进行推算。

规则9:把文本陈述和潜在结果联系起来

归根结底,数据分析的结果是以文字的形式呈现,而文字是不精确的。有时,结论和分析之间的联系很难确定。由于论文常常是科研中最具影响力的部分,因此把论文和结果联系起来至关重要,由于规则1的缘故,与原始数据联系起来也很重要。

这可以通过在文本中添加脚注的方式来实现。脚注引用的文件或URL应该包含引出论文中观察发现的特定数据。如果你无法建立这种联系,说明你可能没有充分记录所有步骤。

规则10:公开脚本、过程和结果

在商业环境中,可能不适合公开所有的数据。不过,向组织内部的其他人公开数据是可以的。基于云的源代码控制系统,比如Bitbucket和GitHub,允许创建私密存储,任何获得授权的同事都能访问。

众人的审视可以改善分析质量,所以分享得越多,你的分析质量就可能越高。

本文作者:车品觉

来源:51CTO

时间: 2024-12-22 08:10:16

实现数据科学研究结果可复制的十条规则的相关文章

SELECT INTO 语句数据表全表复制备份

select into 语句数据表全表复制备份 select into 语句常用于创建表的备份复件或者用于对记录进行存档. sql select into 语法 您可以把所有的列插入新表: select * into new_table_name [in externaldatabase] from old_tablename 或者只把希望的列插入新表: select column_name(s) into new_table_name [in externaldatabase] from ol

mysql中表数据与表结构复制语句

先来总结复制表与结的方法 一.CREATE TABLE 方法 整表复制: create table 新表 select * from 旧表; 结构复制: 1.create table 新表 select * from 旧表 where 1<>1; 一,复制表结构 方法1:  代码如下 复制代码 mysql> create table a like users;         //复制表结构 Query OK, 0 rows affected (0.50 sec) mysql> s

有图有数据!微信自媒体运营的十条干货

中介交易 SEO诊断 淘宝客 云主机 技术大厅 到今天为止,"信海光微天下"这个公众账号已经发布超过200期,虽然是新媒体,但也要有一点对读者负责的精神,所以,今天就分享一下"信海光微天下"的一些后台数据,以及一些个人经验,与亲爱的读者分享,为后来者分享,并提请同好赐教. 后台数据截图之前曾在微博贴出过10月初的一次,以下是刚过去十天的数据(注:24日数据应该是部分有异常,偏高): 简单分析: 后台数据对作者来说时而是鼓励,时而是鞭策,看到数据在上升,则是鼓励,反之

玩转数据中心:Twitter复制谷歌成名秘密武器

&http://www.aliyun.com/zixun/aggregation/37954.html">nbsp; Twitter的本海因德曼 <连线>周二刊登了一篇署名为卡德梅茨(Cade Metz)的评论文章,借谷歌网络帝国最核心的软件系统伯格(Borg)分析了Twitter如何重建谷歌的秘密武器. 原文如下: 约翰威尔克斯(John Wilkes)说,加入谷歌就象是<黑客帝国>中的尼欧(Neo)吞下红药丸一样,那就是选择了觉醒. 4年前,威尔克斯只是

Java新手入门:Java编程三十条规则

编程 1) 类名首字母应该大写.字段.方法以及对象(句柄)的首字母应小写.对于所有标识符,其中包含的所有单词都应紧靠在一起,而且大写中间单词的首字母.例如: ThisIsAClassName thisIsMethodOrFieldName 若在定义中出现了常数初始化字符,则大写static final基本类型标识符中的所有字母.这样便可标志出它们属于编译期的常数. Java包(Package)属于一种特殊情况:它们全都是小写字母,即便中间的单词亦是如此.对于域名扩展名称,如com,org,net

扼杀IIS服务器性能的十条规则

iis|服务器|性能 下面的每一条戒律都将有效地影响代码的性能和可伸缩性.换句话说,尽可能不要照着戒律去做!下面,我将解释如何破坏他们以便提高性能和可伸缩性. 1.应该分配和释放多个对象 你应该尽量避免过量分配内存,因为内存分配可能是代价高昂的.释放内存块可能更昂贵,因为大多数分配算符总是企图连接临近的已释放的内存块成为更大的块.直到Windows NT? 4.0 service pack 4.0,在多线程处理中,系统堆通常都运行得很糟.堆被一个全局锁保护,并且在多处理器系统上是不可扩展的. 2

目前流行的界面设计的十条规则

老早前收藏的一篇文章了,发出来一起学习下 目前流行的界面风格有三种方式:多窗体.单窗体以及资源管理器风格,无论那种风格,以下规则是应该被重视的. 1.易用性: 按钮名称应该易懂,用词准确,屏弃没楞两可的字眼,要与同一界面上的其他按钮易于区分,能望文知意最好.理想的情况是用户不用查阅帮助就能知道该界面的功能并进行相关的正确操作. 易用性细则: 完成相同或相近功能的按钮用Frame框起来,常用按钮要支持快捷方式. 完成同一功能或任务的元素放在集中位置,减少鼠标移动的距离. 按功能将界面划分局域块,用

刘东明:百度大数据预测将颠覆传统商业和规则

中介交易 SEO诊断 淘宝客 云主机 技术大厅 导语:时下,从信息化到互联网化营销,成为传统企业营销最关注的话题,如果传统行业不能与互联网经济挂钩,就会与时代脱钩.而一个更值得关注的趋势是,过去大企业垄断行业资源,对市场有绝对的支配权.而如今,通过互联网.百度大数据预测等工具,中小企业能够提前获取信息,寻找不同信息间的关系和匹配度,从而及时洞察市场,精准的找到用户所求.这种颠覆传统的营销模式,也让中小企业迎来更大的发展空间. 在最近举办的"2014年互联网金融论坛"第二届中国中小企业投

Java编程的三十条规则

(1) 类名首字母应该大写.字段.方法以及对象(句柄)的首字母应小写.对于所有标识符,其中包含的所有单词都应紧靠在一起,而且大写中间单词的首字母.例如: ThisIsAClassName thisIsMethodOrFieldName 若在定义中出现了常数初始化字符,则大写static final基本类型标识符中的所有字母.这样便可标志出它们属于编译期的常数. Java包(Package)属于一种特殊情况:它们全都是小写字母,即便中间的单词亦是如此.对于域名扩展名称,如com,org,net或者