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

简介:

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

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

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

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

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 API Maven
一文搞懂Java日志级别,重复记录、丢日志问题(下)
一文搞懂Java日志级别,重复记录、丢日志问题
1829 0
一文搞懂Java日志级别,重复记录、丢日志问题(下)
|
6月前
|
存储 安全 固态存储
2026阿里云服务器价格表:最新收费标准与38元1年、9.9元1个月、99元1年等活动价格参考
阿里云服务器收费标准涵盖实例配置、带宽及云盘三大核心组件,价格随规格、时长动态调整。2026年活动中推出多类优惠:轻量应用服务器2核4G低至9.9元/月、199元/年;经济型e实例2核2G 3M带宽99元/年;九代ECS(如计算型c9i 8核16G)年付低至6.4折。选购时需注意带宽与CPU/内存的匹配、云盘类型选择及实例适用场景。用户还可领取各种优惠券,在活动价基础上进一步减免,实现成本优化。
1925 4
|
10月前
|
JSON 运维 网络协议
iperf3网络性能测试
iperf3 是一款网络性能测试工具,支持 TCP/UDP 协议,可测量带宽、延迟、丢包等指标。基于客户端-服务器模型,适用于网络调试与性能评估,提供丰富参数及 JSON 输出,便于自动化分析。
1254 1
iperf3网络性能测试
|
5月前
|
缓存 API 开发者
阿里巴巴国际站商品详情接口深度解析与实战指南
阿里巴巴国际站开放平台提供`alibaba.product.get`等API,支持获取商品全维度数据(标题、价格、SKU、多媒体、交易量、供应链、SEO等)。仅限企业认证接入,需OAuth2.0签名认证,适用于选品、比价、ERP集成等场景。(239字)
|
6月前
|
机器学习/深度学习 人工智能 搜索推荐
1688新方向丨 读懂1688 AI排序,让产品只给对的人看!
1688搜索生态正由“关键词堆砌”迈向“AI意图洞察”。AI深度识别买家身份、需求与偏好,按文本相关性、商品质量、商家实力、个性化匹配四大维度排序。商家需转向用户价值创造,以优质产品和服务赢得AI精准推荐。
|
人工智能 API
LLMs.txt:AI时代网站的"智能身份证"
当AI模型因HTML冗余代码浪费50%上下文窗口时,LLMs.txt正成为网站与AI对话的新语言。这个轻量级标准已被Anthropic、Cursor等企业采用,让AI理解内容效率提升3倍。
608 0
|
人工智能 前端开发 API
手动开发?给我一条提示词,CodeBuddy能做的你都做不到!
本文介绍了使用CodeBuddy完成的一个五一期间的小项目,主要展示其编码能力。项目采用基础的HTML+CSS+JS实现界面,也提到可用React或Next.js复刻。文章重点讲解了通过提示词生成代码的方法,包括局部和整体两种方式,并展示了AI旅行规划功能的实现过程。通过与模型对话调整细节,最终生成满意的界面。CodeBuddy在前后端开发中表现出强大能力,未来可结合绘画作品生成惊艳网站。
609 1
|
机器学习/深度学习 计算机视觉
YOLOv10实战:SPPF原创自研 | SPPF_attention,重新设计加入注意力机制 | NEU-DET为案列进行展开
【7月更文挑战第1天】 优点:为了利用不同的池化核尺寸提取特征的方式可以获得更多的特征信息,提高网络的识别精度; 如何优化:在此基础上加入注意力机制,能够在不同尺度上更好的、更多的获取特征信息,从而获取全局视角信息并减轻不同尺度大小所带来的影响; SPPF_attention,重新设计加入注意力机制 ,在NEU-DEU任务中mAP50从0.683提升至0.703;
1798 3
|
存储 缓存 前端开发
|
存储 JSON 缓存
大麦 Android 选座场景性能优化全解析
大麦 Android 选座场景性能优化全解析
966 1
大麦 Android 选座场景性能优化全解析