加入收藏 | 设为首页 | 会员中心 | 我要投稿 济南站长网 (https://www.0531zz.com/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 运营中心 > 网站设计 > 教程 > 正文

在荒芜的数据科学领域中建立架构思维

发布时间:2019-03-08 10:28:47 所属栏目:教程 来源:Romeo Kienzler
导读:副标题#e# 致谢:感谢 Kevin Turner 多次审查本文档并提供宝贵意见。 数据科学家都倾向于使用一些临时性方法。以创新方式非法侵入各种编程语言脚本的行为,在遍布于服务器和客户端上的各种机器学习框架中随处可见。我并不是要抱怨数据科学家的工作方式。我
副标题[/!--empirenews.page--]

致谢:感谢 Kevin Turner 多次审查本文档并提供宝贵意见。

数据科学家都倾向于使用一些临时性方法。以创新方式非法侵入各种编程语言脚本的行为,在遍布于服务器和客户端上的各种机器学习框架中随处可见。我并不是要抱怨数据科学家的工作方式。我发现自己经常只有在创造力迸发的状态下才会小有所成。

完全自由选择编程语言、工具和框架的能力有助于改善创造性思维和加快思维演变进程。但最终,数据科学家必须将其资产完全打造成型,然后才能交付,否则可能会存在许多缺陷。接下来,我来介绍一下这些缺陷:

技术盲点

从数据科学家的角度来看,他们通常认为实际技术与 功能性取向没有太大关联,因为所使用的模型和算法是以数学方式定义的。因此,算法的数学定义是揭示真相的唯一途径。但对于非功能性需求,这个观点有些站不住脚。例如,编程语言和技术方面的专家的可用情况和成本存在很大的差异。在维护方面,所选择的技术对于项目能否取得成功有很大影响。

数据科学家倾向于使用他们最擅长的编程语言和框架。首先,我来介绍一下 R 和 R-Studio 等开源技术,这些技术的程序包和库数量庞大且难以管理,而且其语法松散且难以维护。随后,我会介绍语法结构完善且经过精心组织的 Python 及相关框架(如 Pandas 和 Scikit-Learn)。另一类工具是“含少量代码或无代码”的完全可视化开源工具,如 Node-RED、KNIME、RapidMiner 和 Weka 以及诸如 SPSS Modeler 之类的商用产品。

“我最熟悉的技术”足以满足概念验证 (proof of concept, PoC)、黑客马拉松或启动式项目的需求。但对于行业和企业级规模的项目,必须提供有关技术使用的一些架构准则,无论此类技术有多浅显易懂都应如此。

缺乏再现性和可复用性

鉴于上述问题,我们显然无法容忍企业环境中数据科学资产不受控制的增长。在大型企业中,项目与人力资源可能出现大量流失,例如,仅为特定项目短期雇佣具备特定技能的外部咨询人员。通常,当有人退出项目时,其拥有的知识技能也会随之离去。因此,本质上,数据科学资产并不只是用各种编程语言编写且分布在各个位置和环境中的脚本的集合。由于许多数据科学资产都是在非协作环境下开发的,因此这些资产的可复用性往往是有限的。临时性的文档记录、代码质量差、技术混用且过于复杂以及普遍缺乏专业知识是导致此类问题的主要推动因素。解决这些问题后,资产就会变为可复用并且其价值显著增加。例如,如果未经协调,每位数据科学家都可能针对同一数据源重新创建 ETL(抽取 (Extract) - 变换 (Transform) - 装入 (Load))、数据质量评估和特征工程管道,从而显著增加开销并降低质量。

缺乏协作

数据科学家都是伟大的思想家。常识告诉他们,脑容量是不变的。因此,数据科学家倾向于以自己的方式和步调独立工作。当他们遇到棘手的难题时,像“stackexchange.com”这样的 Web 站点就可能成为他们获得帮助的最佳资源。也许是因为不知情或者只是缺少具有同等技能的伙伴,但技术最好的数据科学家往往不擅长协作。从局外人的角度来看,因为他们秉着“哪管死后洪水滔天”的心态,所以没有采用可复用的方式来共享和组织所创建的资产。文档记录欠佳,甚至没有文档记录,而且组件分散,这些都导致难以回溯和复制以前的工作。因此,需要提供一个公共资产存储库并制定最低的文档记录准则。

次优架构决策

数据科学家通常是具备线性代数技能和一定程度的业务理解能力的“黑客”。他们通常不是经过培训的软件工程师或架构设计师。如上所述,数据科学家倾向于使用他们最熟悉的编程语言和框架,并快速构建解决方案,而未必会考虑可扩展性、可维护性和人力资源可用性等非功能性需求 (Non-functional requirement, NFR)。因此,我要强调一点,在每个重大数据科学项目中都应设立解决方案架构设计师或首席数据科学家角色,从而确保适当满足 NFR。预定义的架构和流程框架非常适合为此类角色提供支持。但首先,我们来了解一下传统企业架构如何适用于数据科学项目。

怎样的架构和流程才适用于数据科学项目

在回答这个问题之前,我们首先来简单回顾一下传统企业架构,然后评估怎样的架构方法和流程模型才适用于此类架构。

在荒芜的数据科学领域中建立架构思维

架构层次结构。来源:IBM 公司

站在金字塔顶端的是企业架构设计师。企业架构设计师负责定义在整个企业内行之有效的标准和准则。示例包括:

  • 只要拥有许可证,就可以使用开源软件
  • REST 调用始终需要使用 HTTPS
  • 使用非关系数据库需要获得来自企业架构委员会的特别核准

解决方案架构设计师在企业架构设计师定义的框架内开展工作。该角色负责定义适用于项目或用例的技术组件。示例包括:

  • 必须在 Db2 关系数据库管理系统 (Relational database management system, RDBMS) 中存储历史数据
  • 对于实时构造的高吞吐量数据,必须使用 Apache Spark Streaming
  • 对于低延迟的实时视频流处理,必须使用 IBM Steams

然后,应用程序架构设计师负责在解决方案架构设计师的框架内定义应用程序。示例包括:

  • 使用“模型 - 视图 - 控制器”(Model-View-Controller, MVC) 模式实施 UI
  • 对于标准实体,将使用对象关系映射器
  • 对于复杂查询,将使用准备好的 SQL 语句

最后,数据架构设计师负责定义数据相关组件,如:

  • 在 ETL 期间,必须取消对数据的规范化以构成星型模型
  • 在 ETL 期间,必须对所有分类字段和有序字段建立索引

那么在此过程中,富有创造力的全能数据科学家如何一展身手呢?首先,我们尝试定义在以上定义的角色中,数据科学家能部分承担其中哪些角色以及能够与其中哪些角色进行交互。

(编辑:济南站长网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

热点阅读