数据科学项目管理中的“黄金标准”

简介:

如何建立一个数据科学项目管理?建立的标准又是什么?

我想大多数人至少承认这一点:“你的研究需要让其他人能够轻松地理解你在项目中做了什么,并能复制这些结果”。

此外,你还得对文件的命名方式多加注意,具体做法如何,我们一起来看看吧。

研究结果的可复制性和分享性

d73befa46f001e0b7d1d9ad8a0b263bb1ea8e219

首先,你所做的项目必须具有非常强的可复制性以及可分享性,因为只有这样才能让你的同行检验项目的成果。

例如,杜克大学的研究人员曾经发表了一项关于将个人基因信息用于患者化疗的研究。来自MD Anderson癌症研究中心的两位研究人员Baggary和Coombs想要对研究进行复现。但是复现之前必须获取数据和代码是必须的。

经过数月的时间,终于,这两位认真的研究人员拿到了想要的数据和代码。虽然,拿到的时候这些资料还是未经整理、杂乱无章的。

又经过很长时间的实验验证,这两位研究人员发现已发表的研究中的代码出现了一个错误,这个错误严重到研究的成果会将患者置于危险境地。

所以,几个月份来,两位研究者一直在对一项错误的研究进行复现,更重要的是,他们大多数的时间花费到了“无意义”的数据收集与整理上。

这就是弱分享性以及弱复制性带来的危害,验证实验结果可能花费不了多少成本。但是由于研究作者对数据的保护,使得你需要用更长的时间收集相关数据。

那么,为什么研究者大多不愿意分享研究数据呢?

当你联系一个研究员想要获得他的研究的源代码和初始数据时,你需要解释你是谁,你为谁工作,为什么需要这些数据,以及你要如何处置这些数据。

另外,你还经常收到如下回复:

我不得不说如果没有解释的话,这就是一个不太正常的要求。请让你的导师发一封详细的,我再强调一遍,详细的邮件给我来解释一下。

这些数据文件是我们的资产,并且不是免费使用的,所以请告诉我们你想要用这些文件来做什么,然后我们看看可以如何帮到你。

我们通常不会将我们的内部数据分享给非合作单位。

这些代码是我和同事多年努力的结晶,这些数据也是我与合作者们千辛万苦花了很长时间收集到的,所以也需要得到他们的允可。

通常我们不会提供这类数据给不认识的人。可能你想要查验数据分析,这可能对于我们也有用,但是在你发表你的研究时请恰当地提到我们。.

感谢你对我们的文章感兴趣。在计算中我用的是我们自己的代码,目前还没有公共版本可供下载。鉴于目前的代码不是很易用,而且还在持续改进中,所以我倾向于暂不分享。

很抱歉我们的代码在创建时并没有想过给他人使用。代码现在并未文档化,我们也没有时间和资源来文档化。如果你有一个特别的计算要做,且不是我们现在做的东西的主要延伸的话,我们可以帮你跑这个代码。

R是一个免费的软件,你可以在www.r-project.org/找到。我用R是因为XX模型。你可能有所了解XX和XX十分复杂。但是我可能不必说这些你已经是个统计学学生了。我都是用Matlab来处理几何的问题。

所以,建议你在阅读研究成果时,先看是否有一份附有所有的原始数据和代码的可重复性声明。如果没有看到一份这样的东西,你可以暂时忽略这个研究。

81faabf331d3ea192af261b277d8e2b390342502

可重复使用说明范例

不能让你的项目具有可复制性是学术上的不端行为,可能会产生严重的后果。例如“未能妥善记录和保存研究成果”是近日康奈尔大学研究员Brian Wansink的受到的不光彩的指控之一 。

在Daniele Procida关于软件文档的黄金标准上,他很好地总结了这一点:

“不管你的软件有多好,如果说明文档不够好,人们就不会使用它。即使出于某种原因,人们没有选择而不得不使用它,没有好的说明文档的话,大家也不能有效地使用它,更不会按照你希望的方式使用它。”

因此,遵循Procida先生的明智建议,你的研究需要让其他人能够轻松地理解你在项目中做了什么,并能复制这些结果。这对于现在和同事的合作至关重要,也对后人有很大帮助(例如,未来某一天你要重新运行一个六个月没碰过的分析的时候,或者任何其他研究员想要重新看一看你的工作的时候)。Leek认为 “花费数据科学项目中10-20%的时间来对你的工作进行组织与文档化”是非常重要的。

文件命名

adb22390a59e5379d31a5e53a615de4a815467a2

文件的命名的方式在数据科学项目中也是非常重要的。

一位对R语言脚本设计、工作流程和文件组织与命名方面颇有见地的数据科学家Jenny Bryan认为有三个原则是必须遵守的:

  • 机器可读

  • 人类可读

  • 很好地处理默认排序

为了机器的可读性,我们希望避免空格、标点符号、句号和任何其他特殊字符(除了“_”和“-”)。

71d580aea661c6c4175dd8e33ba35fb7186ed99b

针对人类的可读性,需要您给文件赋予有意义的名称。当命名R对象时,如果包含了注释的话,缩写对象名称的也是可以的。例如,cv_perf_Recoke_rf是对随机森林模型的每个交叉验证的验证召回的计算。

但是在命名文件时,我建议除非绝对必要,不要使用缩写词;如果使用了的话,请在自述文件中列明这些信息。

另外一个建议是将日期和数字放在文件名的开头。始终使用ISO 8601的日期格式(yyyy-mm-dd)和左起带0的数字。数字的最大位数取决于一共要生成多少个文件。假设你想要保存100个建筑MRI图像文件,那么它应该看起来如此001_t1_mri.nii.gz。假设你认为你实际上会生成1000个文件,它看起来应该如此0025_t1_mri.nii.gz。

Leek还指出,应该避免大小写的敏感性,例如Esophageal-Cancer_Report.md(食道癌报告.md)显然是一个可怕的文件名(输入这串包含大小写的字母和字符真是累死了)。

你也可以用esophagealCancer_report.md,因为它更能看起来更令人愉快,也并未有Leek提到的风险;只要不要忘记在linux中使用find指令时用-iname标志来忽略大小写就好。如果你健忘,或者只是效率很高(也就是懒),你总是可以把它包含在.bashrc文件中作为别名。

让文件名以大写字母开头显然是个坏主意,因为它会导致你需要额外的按键来生成大写字母(例如Shift)。然而,使用camelCase方式,您可以通过使用选项卡来自动完成以避免额外的按键。

OMT

如果你使用R,你应该读一读Jenny Bryan的here()包,它消除了setwd()可能导致的麻烦的工作流程问题。

402d5e939387ee4c5c3d674690b6b4201cd627a8

另外,建议大家去阅读她的博客文章“面向项目的工作流程”它清楚明白的告诉我们更多关于“怎样做”以及“为什么这样做”的信息。


原文发布时间为:2018-10-27

本文作者:茶西、陈同学、Aileen

本文来自云栖社区合作伙伴“大数据文摘”,了解相关信息可以关注“大数据文摘”。

相关文章
|
存储 Java 关系型数据库
家政服务管理平台
家政服务管理平台
|
Java API Apache
Gradle从0入门到实战系列【一】Hello World Gradle
早期没有项目管理工具时,对于项目所依赖的第三方包采用的是:拷贝三方jar包到本地,然后加入到lib目录下,这样做劣势不言而喻,管理复杂容易冲突。 Gradle是一个基于Apache Ant和Apache Maven概念的项目自动化构建开源工具。它使用一种基于Groovy的特定领域语言(DSL)来声明项目设置,也增加了基于Kotlin语言的kotlin-based DSL,抛弃了基于XML的各种繁琐配置。面向Java应用为主。
1125 0
Gradle从0入门到实战系列【一】Hello World Gradle
|
消息中间件 监控 测试技术
惊呆了!Python性能测试高手都用这些神器:JMeter+Locust,效率翻倍📈
【9月更文挑战第8天】在软件开发中,性能测试对确保应用稳定性和高效运行至关重要。对于Python开发者而言,选择合适的性能测试工具能显著提升测试效率并精准定位性能瓶颈。本文深入探讨了JMeter和Locust这两款工具的独特优势。JMeter作为跨平台的性能测试工具,支持多种协议,具备高度可定制性和扩展性;而Locust则专为Python应用设计,利用协程实现高并发,提供实时监控和分布式测试功能。两者结合使用,可在实际项目中实现1+1>2的效果,帮助开发者构建全面高效的测试方案,保障应用稳定运行。
1038 2
|
机器学习/深度学习 人工智能 数据可视化
深度学习之可解释人工智能(Explainable AI,XAI)
可解释人工智能(XAI)是一个旨在使AI决策过程透明和可理解的研究领域。随着AI和机器学习技术在多个行业中的应用变得越来越广泛,其决策过程的透明度和可解释性变得极其重要。
935 0
|
SQL 数据库
SQL DISTINCT 用法总结
SQL DISTINCT 用法总结
5656 3
|
网络协议 Java 物联网
Netty是什么?深入理解高性能网络框架
Netty是什么?深入理解高性能网络框架
1083 1
|
缓存 Linux API
如何使用Matplotlib绘制出美观实用的图形?
如何使用Matplotlib绘制出美观实用的图形?
394 2
|
Linux 编译器 开发者
Linux嵌入式系统之交叉编译
Linux嵌入式系统之交叉编译
575 0
|
NoSQL 关系型数据库 MySQL
阿里云服务器部署图文详解
阿里云服务器部署图文详解
阿里云服务器部署图文详解
|
存储 缓存 前端开发

热门文章

最新文章