不受欢迎的意见:数据科学家应更加端到端、全栈式通才 - kdnuggets

20-09-18 banq

全方位的端到端据科学家真的可以更有效地从数据中传递新价值吗?尽管听起来很累人,但却拥有高效率,甚至可以更快地为业务带来更好的价值。

完成一个数据科学项目会涉及数据科学和机器学习领域中的不同角色:数据科学家,决策科学家,产品数据科学家,数据工程师,机器学习工程师,机器学习工具工程师,AI架构师等。

我发现这  令人担忧。当数据科学过程(问题框架,数据工程,机器学习,部署/维护)分散在不同的人身上时,很难奏效。它导致协调开销,责任分散和缺乏全局视野。

恕我直言,  我相信数据科学家端到端可以提高效率。

 

您可能遇到过类似的  标签  和定义,例如:

  • 通才:专注于角色(PM,  BA,  DE,  DS,  MLE); 一些负面的含义
  • 全栈:专注于技术(Spark,Torch,Docker);由全栈开发人员推广
  • 独角兽:专注于神话;相信不存在

相反,我有一个简单(实用)的定义:端到端的数据科学家可以识别和解决数据问题,以创造价值。(首席数据科学家?)

为了实现这一目标,他们将根据需要戴尽可能多(或少)的角色或帽子。他们还将学习并应用任何可行的技术,方法和流程。在整个过程中,他们会提出以下问题:

  • 问题是什么?它为什么如此重要?
  • 我们可以解决吗?我们应该如何解决呢?
  • 估计值是多少?实际值是多少?

 

数据科学流程

定义端对端数据科学的另一种方法是通过流程。这些过程通常很复杂,因此我不在主要讨论之列。尽管如此,以下是一些您可能好奇的情况:

  • CRISP-DM:数据挖掘的跨行业标准流程(1997年)。
  • KDD:数据库中的知识发现。
  • TDSP:团队数据科学过程,由Microsoft在2018年提出。
  • DSLP:数据科学生命周期过程。

如果这些流程看起来繁重且势不可挡,请不要担心。您不必批量采用它们-一点一点地开始,保留有效的方法,然后调整其余的方法。

 

上下文更多,迭代更快,满意度更高

端到端工作提供了更多的上下文。 尽管专业角色可以提高效率,但它会减少上下文(对于数据科学家而言)并导致次优解决方案。

忘记全局的窍门是看所有特写镜头。– Chuck Palahniuk

没有上游问题的全部上下文背景,很难设计一个整体解决方案。假设转化率下降了,并且PM提出了改进搜索算法的要求。但是,首先导致下降的原因是什么?可能有多种原因:

  • 产品:欺诈性/劣质产品是否会降低客户信任度?
  • 数据管道:数据质量是否受到影响,还是存在延迟/中断?
  • 模型刷新:模型是否没有定期/正确刷新?

问题和解决方案往往在机器学习之外。如果聚焦在改进算法的解决方案上, 将遗漏根本原因。

同样,在不了解下游工程和产品约束的情况下开发解决方案也是有风险的。毫无意义:

  • 如果基础设施和工程师无法支持,则构建一个近实时的推荐器
  • 如果不适合我们的产品和应用,则构建一个无限鼓动不断修改的推荐器

通过端到端的工作,数据科学家将拥有充分的环境来识别正确的问题并开发可用的解决方案。它还可能会导致创新思想,而狭窄背景的专家可能会错过。总体而言,它提高了交付价值的能力。

 

边做边学实现端到端

如果您仍然渴望变得更加端到端,那么我们现在将讨论如何做到这一点。在此之前,在不涉及特定技术的情况下,以下是端对端数据科学家通常使用的技能:

  • 产品:了解客户问题,定义需求并确定优先级
  • 沟通:促进团队之间的交流,获得支持,编写文档,共享结果
  • 数据工程:将数据从A点移动到B点并将其转换
  • 数据分析:了解和可视化数据,A / B测试和推断
  • 机器学习:通常以及实验,实施和指标
  • 软件工程:生产代码实践,包括单元测试,文档,日志记录
  • 开发运营:基本的容器化和云能力,构建和自动化工具

 

Stitch Fix和Netflix的端到端

现在,Stitch Fix不再组织数据团队来专门化和提高生产力,而是组织它们来  学习和开发新的数据和算法产品。

数据科学的目标不是执行。相反,目标是学习和开发新的业务功能。……没有蓝图;这些都是具有固有不确定性的新功能。…必须通过实验,反复试验和迭代来学习您需要的所有元素。–埃里克·科尔森(Eric Colson)

他建议应该使数据科学的角色更加通用,并承担与技术功能无关的广泛职责,并针对学习进行优化。因此,他的团队聘用并发展了可以概念化,建模,实施和衡量的通才。当然,这取决于一个可靠的数据平台,该平台抽象出了基础设施设置,分布式处理,监视,自动故障转移等方面的复杂性。

Netflix  Edge Engineering最初是专门角色。但是,这会在整个产品生命周期中造成效率低下。代码发布花费了更多时间(数周而不是数天),部署问题需要更长的时间来检测和解决,并且生产问题需要多次往返沟通。

为了解决这个问题,他们尝试了  全周期开发人员  ,他们有权在整个软件生命周期中工作。这需要转变思维方式-开发人员不仅要考虑设计和开发,还必须考虑部署和可靠性。

 

 

                   

猜你喜欢