数据科学项目的步骤有哪些?这些步骤对数据分析师很重要
1、数据科学项目的步骤有哪些——初步评估项目的潜在价值
为什么进行这一步? 这个问题有助于你设定项目的优先级。你应该能够恰当地回答为什么一个项目应该在另一个项目之前完成。这个问题也让我们更好地理解项目和团队、公司的目标的一致性。此外,也为我们应该优化模型的哪些测度提供了指引。

这一步涉及什么? 大致评估下收益,例如,节省的资金,增加的收益,节省的人力。有人不主张进行这项评估,因为做这个评估很难,而且收益并不总是能够量化。对此,我的回应是:如果你或者利益相关者弄不清楚项目的价值,那么为什么要浪费你或者利益相关者的时间呢?评估的数值不必完美,大概估计下就行。这一步也包括判定谁是主要的利益相关者。
如果不做这一步会怎么样?我们可能花费大量时间进行一个无人获益的项目。我曾经见过一个项目,需要数据科学团队识别值得营销团队联系的最能带来收益的客户列表。创建模型之后,我们决定花几个月的时间改进这一模型。尽管新模型给出了更好的结果,但营销团队调整了阈值,因为他们不在乎为每个客户生成的评分,只打算联系固定数目的客户。所以,花在改进模型上的时间很可能毫无意义。(当然,可能联系的固定数目的客户实际上能带来更多收益,因为模型更好了,但因为没有测量这方面的数据,所以我们并不知道这点是否成立。)
这一步的输出是什么? 项目价值的大概估计和简短的项目总结。注意,取决于公司和项目的情况,可能只需说明数据模型能够带来可以观测到的收益,而无需估计具体数值。不过这很大程度上取决于公司政治。
有用资源: A Simple way to Model ROI of any new Feature(建模新特性ROI的简单方法)给出了一个简单的公式:期望ROI = (惠及用户 × 新使用量/增加的使用量 × 商业价值) - 开发成本。Prioritizing data science work(为数据科学工作设定优先级)和Product and Prioritisation(产品和优先级指定)这两篇文章也值得一读。
2、数据科学项目的步骤有哪些——判定现有方法/创建基线模型
为什么进行这一步? 当前的解决方法提供了一个评测的目标。如果当前存在解决方法,所有有用的模型都应该胜过当前方法。如果面临的问题当前尚无解决方案,那么你应该开发一个基线模型。基本上,基线模型就是不用机器学习的方案。复杂方案很可能只能提供一点增值,所以你需要评估下创建更复杂的模型是否值得。
这一步涉及什么? 找利益相关者谈下,他们当前是怎么做的,取得了哪些成功。很可能他们并未测量成功程度,所以有时你需要自行估计/计算。创建基线模型不应该设计任何复杂、需要大费周折的方法。基线模型应该是相当迅速、原始的,甚至可能直接使用计数这样简单的方法。
这一步的输出是什么? 基于基线量化评估成功模型(对利益相关者有用)需要达到什么样的表现。评估是否值得创建复杂模型。
如果不做这一步会怎么样? 你可能浪费时间创建了一个复杂的模型,结果发现不值得投入这些时间提高这点精确度,甚至不能战胜当前方法。我们创建自己的推荐引擎的时候就忽略了这一点。我们没有检查算法是否优于实用的基线(推荐最流行的内容)。很可能推荐算法没有提供对得起投入的开发成本的价值。
有用资源 数据科学项目的第一步:创建常识基线和总是从蠢模型开始,强调了这一点。
3、数据科学项目的步骤有哪些——“团队”讨论
为什么进行这一步? 目前为止,我们已经得出结论,项目值得进行(第一步),有可行性(第二步),所以,是时候和相关人员谈谈了,比如工程师和其他数据科学家。应该编写什么代码,需要什么数据,应该做哪些测试,使用哪些测度评估表现,尝试哪些模型方法,这些你现在应该比较清楚了。你自己可能觉得需要做什么一清二楚,但是和别人讨论一下常常有助于找到你遗漏的东西或者可以改进的地方。不要低估让不同视角的人参与讨论的重要性。
这一步涉及什么? 至少和另一个数据科学家聊一下,展示你已经取得的结果。也许他们能告诉你如何改进你的想法。开始开发模型前的讨论必不可少,因为写好模型后通常就不怎么方便大改了。同时,和你讨论的数据科学家也许会评审你的代码,事先讨论一下有助于他们了解上下文。和项目工程师聊下,他们负责产品化你的工作。他们可能需要知道可以期待什么,也可能提一些有助于产品化代码的建议。
这一步的输出是什么? 没有什么具体的输出。这一步不过是在第一时间保证项目质量。确保相关人员了解项目。
如果不做这一步会怎么样? 最好的情况,你独自想出了怎么做这个项目,并避开了所有的坑。然而,更可能的情况是你没有考虑到所有事情,漏掉了一些重要的事情。会碰到的典型问题包括将模型转移到生产环境时,难以迁移、处理存储文件。模型输出缺乏标记,没有给出最有用的格式。这是我开发一个模型时碰到的情况。我编写的代码中,有很多API调用是不必要。在本地的小数据集上,模型运行得很好,但在生产环境中,加载数据很吃力。直到我求助一个工程师后才解决了问题(这个工程师帮助我查明了问题)。
4、数据科学项目的步骤有哪些——模型研发
为什么进行这一步? 不用多说,最终解决问题靠的是模型。
这一步涉及什么? 这取决于具体的项目。需要注意的是,模型研发并不等于创建模型。有太多关于如何编写机器学习算法解决特定问题的文章了,所以我这里就不多说了。我想强调一些有助于产生高质量产品代码的步骤。通常情况下你不是唯一一个看代码的人,所以代码审阅和文档对项目的寿命而言至关重要。在生产环境几乎一定会碰到bug和意料之外的输入,所以你可以通过代码测试来缓解这些问题,增强代码的鲁棒性。这包括单元测试,集成测试,系统测试,用户接受测试(UAT)。关于如何使代码便于产品化的规范,不同团队可能有所不同,不过有一些东西是相通的:在隔离环境下工作(虚拟环境或Docker容器),记录日志,使用配置文件。
这一步的输出是什么? 一个共享的代码仓库,其中包含解决项目所定义的问题所需的文件和可以工作的模型。
如果不做这一步会怎么样? 如果代码未经测试,逻辑上的错误可能直到部署到生产环境后才暴露出来。如果代码没有经过他人评审或者没有文档,你离职或者休年假的时候其他人很难接手。我之前做过的一些项目就不断出问题。我现在还需要给9个月前“完工”的一个项目修bug. 这占用了我做其他有价值的事情的时间,令所有项目相关人员沮丧。在开发阶段额外花一点时间保证代码的鲁棒性,长期来看,可以节省你很多时间。
资源 How to write a production-level code in Data Science?(如何编写生产环境级别的数据科学代码?)是一篇全面的指南,覆盖了我能想到的一切东西。如果你是一个编写生产环境级别的代码的数据科学家,你应该读一下这篇文章。另外推荐Code Reviewing Data Science Work(数据科学工作的代码审阅)和Doing Code Review Solo & Writing Good Code(自我审阅代码 & 写好代码)这两篇关于代码审阅的文章。后一篇文章介绍了如何通过自我审阅代码提高自己编写的代码的质量,这并不能代替实际的代码审阅。Code Documentation Guide(代码文档指南)介绍了如何恰当地编写文档。我个人很喜欢numpy风格的docstring。关于代码测试,我推荐How to unit test machine learning code(如何单元测试机器学习代码)这篇指南,还有semaphore的Testing Python Applications with Pytest(使用Pytest测试Python应用),我自己一个项目开始编写测试的时候参考了这篇教程。semaphore上还有一篇Getting Started with Mocking in Python(Python伪造数据入门),介绍了如何为测试伪造数据。Python unit testing with Pytest and Mock(使用Pytest和Mock进行Python单元测试)则是另一篇值得一读的指南。
5、数据科学项目的步骤有哪些——模型监测和反馈
为什么进行这一步? 这是为了确保产品在生产环境中的表现符合期望。解决方案的输出应该是稳定可靠的。如果出现了错误,我们应该是第一个知道的。模型的表现比期望的差吗?生产环境的数据和训练数据的格式不一样吗?数据不正确吗?自动化检测可以节省大量手工查看输出、追查代码以确保一切符合期望的时间。为公司提供价值是我们的职责,所以我们应该测量解决方案的影响力。是否良好运作?需要调整吗?创造了多少利润?使用有多频繁?我们可以向管理层报告这些,以显示数据科学的商业价值。
这一步涉及什么? 在模型部署到生产环境后的一段时间内(也许是两三周),主动地手工检查所有一切运作良好。然后自动化检测过程,也许可以创建一个控制面板和一套邮件预警系统,和/或一个异常检测系统。也许利益相关者也需要进行监测,所以可能需要调整监测方案,使其对非技术同事更友好。至于反馈方面,可能涉及和利益相关者讨论如何接受反馈?定量反馈还是定性反馈?你可以在产品中编写记录使用数据的代码,这样不用明确要求利益相关者报告使用习惯。
这一步的输出是什么? 确保模型恰当工作、提供解决方案使用量和价值的定性或定量反馈的方法和产品。可能也包括出错时的通知/预警系统。
如果不做这一步会怎么样? 如果没有恰当地监测我们的产品,我们将承担产品出错时商业利益相关者丧失信任的风险,同时也可能导致商业损失,团队尝试修复问题也可能花掉大量时间。我曾经碰到过的一个情况是,我们创建的数据分析工具给出了离谱的图表。结果发现是原始数据提供商搞砸了数据。但是,利益相关者在团队之前发现了问题。之前模型研发阶段描述过的鲁棒性测试和自动预警系统本应该侦测到这个问题,但我们并没有配备这些。当数据最终回归正常之后,利益相关者以为数据还是错的。我们数据团队花了2周时间检查数据,最后得出结论数据没有出错!我们损失了2周的时间。自动化监测系统本可以将2周降至2分钟!此外,如果我们不收集反馈,那我们就会对项目是否有用,甚至项目是否还在使用一无所知。我们曾在和市场团队的一次会议中询问“你们在使用这个模型吗?”我们本不应该提出这个问题,因为 1) 在第一步和第二步,我们应该确保模型具有价值,并且超过了当前解决方案/基线模型的表现 2) 我们应该将监测系统作为项目的一部分,而不是在一次不相关的会议中询问利益相关者是否使用我们的项目。这显示了我们并没有测量模型的影响力。
以上就是《数据科学项目的步骤有哪些?这些步骤对数据分析师很重要》的全部内容,可见严谨的数据分析步骤,对于整个行业来说十分重要,如果你也想做好数据分析,就应该努力学习数据分析,环球网校的小编祝您数据分析师之路顺利。如果你想学习更多数据分析知识,可以点击下方资料下载链接。
最新资讯
- 数据分析汇总报告有哪些组成?这才是数据分析师能力的体现2020-07-17
- 什么是EOI框架?这对于数据分析师竟然这么重要2020-07-17
- 如何进行业务核心数据分析?这对于数据分析师来说竟如此重要2020-07-16
- 有哪些数据分析实践的概念?不会这个的数据分析师都转行了2020-07-13
- 数据的分析思路是什么?正确的分析思路可以帮助数据分析师进步2020-07-10
- 什么是数据回归分析方法?这才是数据分析师要用到的利器2020-07-10
- 数据相关的分析方法是什么?这三种才是数据分析师的救星2020-07-10
- 高级数据分析方法是什么?这才是数据分析师进阶的必备技能2020-07-09
- 提出数据假设的方法是什么?这才是数据分析师应该明白的东西2020-07-09
- 如何找出数据优化指标?优秀的数据分析师都在这样思考2020-07-09