数据是现代商业中最重要的竞争优势之一,随着决策过程中对数据的依赖性越来越高,数据科学家的作用以及支持他们的 IT 团队的地位也随之提升。但就像所有部门一样,数据科学团队也会遇到一些头疼、沮丧,以及,好吧,恐怖故事。
点燃一支蜡烛,如果你敢的话,就来阅读这些来自办公桌之外的令人不寒而栗的数据科学故事吧!
当你不得不从干草堆里找到针时
Sean Law,查尔斯·施瓦布的首席数据科学家,最近在一个包含 2300 万行的 JSON 文件中遇到了这个“大海捞针”问题,该文件一直返回无效。要解析所有这些数据以找到破坏系统的少数几个小错误,听起来像是噩梦般的经历,但这对数据科学家来说只是家常便饭。
在数据科学地狱的今天:在一个包含 2300 万行的 *无效* JSON 文件中找到多个不同的针头。 😭
— Sean Law 🇨🇦 (@seanmylaw) 2022 年 10 月 26 日
大多数如果不是所有数据科学家都熟悉这类问题,包括 Anaconda 高级数据科学家 Vicky Kwan,她在调查基础设施错误时遇到了类似的问题。在 300 行 CloudFormation 代码中搜索缺失的“ }”之后,Vicky 最终修复了这个错误,并确保了 Anaconda 的服务器正常运行。CloudFormation 是一种基础设施即代码 (IaC) 服务,用于建模、配置和管理 AWS 和第三方资源。
格式错误和数据转换噩梦并不仅仅存在于数据科学领域;所有部门的技术人员,包括 IT,经常要与这些挑战作斗争。解析数据既费时又费力,但解决这类问题是将数据转化为洞察力并推动企业前进的重要组成部分。
我们向内部询问了一些关于处理数据转换和格式的技巧和窍门。以下是一些我们团队的建议
-
IT 团队经常帮助将数据转换为不同的结构,例如 JSON 到 CSV。查看 Python 中的 pandas 库,以简化此过程。
-
使用现有的解析器,而不是编写自己的解析器。同时,使用解析器而不是正则表达式。走上“我只要用一个正则表达式从这个 HTML 文档中提取电子邮件”的路,只会让你泪流满面。
-
在任何转换之后,不要忘记手动扫描数据样本。通过自己滚动浏览一些记录,你会发现很多明显的问题,并且很容易假设“没有错误提示”意味着“一切按预期转换”。
-
如果需要反复运行转换,那么对于基本的跟踪记录、事件时间或值之类的基本内容,自动执行“快速一致性检查”会非常有用。
当模型的准确率有点 *太高* 时
如果你的模型返回的结果几乎达到了 100% 的准确率,你的第一反应应该是检查自己的错误,因为很可能在某个地方犯了错误。如果该模型未被发现,并进入生产阶段,那么就会出现问题。这个问题可能会对企业造成严重后果,因此必须对其进行管理和监控。
根据最近的 Reddit 主题帖,多个用户遇到了这种情况,他们分享了他们的令人毛骨悚然的故事
我正在审查一位数据科学家的预测模型。他们使用了神经网络,可能是因为他们熟悉这种方法。他们的模型非常准确,几乎完美无缺,这对我来说是一个危险信号。因此,我进行了更深入的挖掘。他们使用的时间序列数据随着时间的推移丢失了很多数据。因为他们需要一个矩阵,所以他们必须对丢失的数据点进行处理。因此,他们用 0 填充所有丢失的数据。现在,相当一部分数据只是 0。在我指出这个问题后,这个模型变得毫无用处。——Reddit 用户
一位同事自信地宣称他的模型的准确率达到了 98%。在代码审查中,我发现他没有正确地划分训练集和测试集。他几乎在整个测试集上进行训练……。我不应该审查代码,它差点就进入生产阶段。——Reddit 用户
我刚在另一篇文章中评论了这一点:一位经济学博士拒绝我询问他是否验证了他的模型。我注意到他根本没有划分数据集,并且,我引用他的话说,“进行了经济评估”……。他的模型已经部署,而且明显错误:它会预测房屋质量得分,并且将高收入的住宅区评估为“质量差”。——Reddit 用户
代码就是代码,无论是用于纯粹的软件开发、管理基础设施 (IAC) 还是数据科学模型。将久经考验的软件开发技术应用于数据科学可能是新颖的,但你可以并且应该将这些从其他技术领域汲取的宝贵经验应用于数据科学。例如,在模型开发过程中进行结对编程可以帮助发现和消除错误,并提高你的速度。
没有人会故意让模型失败,在你的工作中获得第二、第三甚至更多人的意见是确保改进的最佳方式。要求在发布之前进行代码审查也可以增强团队的输出。
最后,必须在整个过程中考虑文档。这不仅可以保证你的代码透明,并允许其他人发现你可能忽略的地方,而且适当的文档也是 IT 治理的重要组成部分,会让你的审计人员满意。
当你意识到自己的错误暴露在利益相关者面前时
当你不知道哪里出错时,修复错误和审查模型会非常耗时。但有时你会立即发现错误——只是在同事或利益相关者面前。
Dan Killam,旧金山河口研究所的环境科学家,最近在 Twitter 上分享了一个关于真正令人毛骨悚然事件的数据科学恐怖故事:向重要的受众展示带有错误标签的对象
在数据科学地狱,你被迫向重要的受众展示你标记为“测试”的所有对象。 #rstats
— Dan Killam, PhD (@DantheClamMan) 2022 年 4 月 8 日
在 Medium 上的一篇文章中,Vincent Vanhoucke,谷歌的杰出科学家,谈到了他作为实习生参与的第一个项目,以及一个失败如何让他终生难忘
想象一下另一个恐怖故事:你是一名实习生,被要求构建一个“是”与“否”的语音分类器。你有音频文件:yes1.wav、no1.wav、yes2.wav、no2.wav、yes3.wav 等等。你构建了分类器,并获得了不错的结果。在你准备演示工作的那一刻,你发现你的模型实际上做的只是读取音频文件的文件名中的“是”或“否”,而不是实际监听音频样本。所以你羞愧地躲起来,哭泣,并寻找最近的出口。——我的数据科学恐怖故事,Vincent Vanhoucke
我们都会犯错误,这对我们这些刚开始职业生涯的人来说是个好消息。因为那些在我们之前的人,那些我们敬仰的领域的杰出人物——他们也会犯错误。这是预料之中的事情。只要问问你的同事,每个人都会有技术演示失败、向领导层做汇报效果不佳或生产更改导致全局停机的例子。
有些人可能会争辩说,如果你没有犯错误,你就可能没有逼迫自己发挥最佳水平。因此,要带着自我同情接受你的失误,在那一刻要幽默地面对它们,最重要的是要从中学到教训。有时,错误是最好的老师。
不要让恐怖故事阻止你前进
数据科学团队和 IT 团队的挑战有很多重叠之处,尤其是在确保组织做好准备来迎接未来目标方面。作为 IT 资源的适当配置和配置、数字资产稳定性和安全性的生命线,数据可能让人觉得是一个高风险领域,有时甚至有点可怕。
在任何职业生涯中,都会有令人害怕、尴尬或压力重重的时刻,但这些时刻对于学习和成长是必要的。只要付出一些努力,我们就能走出困境,回头看看过去的“恐怖故事”,将其视为挑战我们变得更强大的时刻。有了韧性、支持性的社区和强大的工具,我们一定会在前进的道路上找到一些巨型巧克力棒。
Anaconda 祝您万圣节快乐!