
数据工程和机器学习流程在很多方面都非常不同,但奇怪的是它们也可以感觉非常相似。我之前与很多机器学习工程师交流过,他们依赖像Airflow这样的工具来部署他们的批处理模型。
因此,我想讨论数据工程和机器学习流程之间的区别。
为了回答这个问题,我请来了Sarah Floris,她既是一位经验丰富的数据工程师,也是《Dutch Engineer》新闻通讯的作者。
那么,让我们开始吧。
在过去的5年里,由于TikTok和Snapchat等社交媒体平台的流行,数据积累凸显出数据和机器学习(ML)流程之间的差异。这两者是每个公司的重要组成部分,但它们经常被混淆。尽管它们存在相似之处,但它们的目标却大不相同。
构建一个数据和ML平台并不像听起来那么简单。它需要大量的工作,这也是我每天所从事的工作。在这篇文章中,我们将探讨机器学习和数据流程工作方式的区别,以及每个工作所需的内容。
数据工程流程

首先,让我们深入了解数据流程。数据流程是一系列的流程,从不同的来源中提取数据,清理数据,然后将数据存储在数据仓库或数据库中。这对于公司来说非常重要,因为它有助于他们做出明智的决策。数据流程由四个部分组成:

数据工程流程通常向机器学习流程提供数据。然而,存在许多通信中断导致机器学习工程师构建自定义的端到端流程的情况。
数据收集:这是从不同的来源(如数据库、API和文件系统)收集数据的地方。数据可以是结构化的、半结构化的或非结构化的。数据收集需要仔细的规划和执行,以确保高质量的数据。
数据清理:这是通过检查缺失值,纠正错误并将数据转换为一致的格式来清理数据的过程。这确保了数据的准确性和可靠性。
数据集成:这是将来自不同来源的数据合并到单个数据集中的过程。这对于企业来说很重要,因为它确保了一致和准确的信息,有助于更好的决策。
数据存储:这是存储处理后的数据的地方。它对于快速和方便地访问数据以及数据的保护和安全性都很重要。
这四个数据流程部分通常也被称为抽取(数据收集)、转换(数据清洗和集成)和加载(数据存储)。提取、转换和加载数据的过程通常被称为ETL或ELT。
一些人会注意到ELT和ETL是“数据工作流”或数据流程这一总体的子集,因为还有其他几个子类,通常包括诸如发布/订阅或CDC之类的流式模式。——Ben Rogojan
这些过程可以根据项目的要求以不同的顺序执行。
无论如何执行数据流程,它们通常都会按照从源头到存储的线性过程进行。
因此,这就是为什么您通常会听到数据工程师说他们将数据从A点移动到B点。
SeattleDataGuy的通讯是一份受读者支持的出版物。要收到新的帖子并支持我的工作,请考虑成为免费或付费订阅者。
机器学习流水线

机器学习(ML)流水线不像数据流水线一样直线工作。相反,它们涉及到构建、训练和部署ML模型。这用于自动化构建ML模型的整个过程,从收集数据到在生产环境中部署。一个ML流水线由五个部分组成:
数据清理:数据清理和标准化数据是机器学习流水线的关键方面。虽然数据工程师进行了初步的清理,但数据科学家会进一步确保准确性和有效性。这包括任务,如确保日期格式一致、删除空值和分箱年龄。他们还可以执行探索性数据分析以识别模式和趋势。这个角色需要对数据清理的技术方面和数据使用的广泛背景都有深入的理解。
特征工程:特征工程是从原始数据中选择和提取相关特征,以提高机器学习模型的性能的过程。为了提高迭代速度,机器学习工程师会构建一个特征存储,实际上是几个表,为每个模型的重点领域(如销售、获取等)进行版本控制和创建。
模型训练:模型训练通常从找到合适的机器学习算法开始。一旦选择了算法,我们就可以在已经进行特征工程的数据上进行训练。这个过程通常涉及对模型架构和超参数进行迭代,直到达到所需的性能水平。最后,训练好的模型可以用来对新数据进行预测。
模型评估:这个阶段涉及对训练好的ML模型在测试数据集上进行性能评估。当模型经过评估并准备部署时,我们通常会将其保存到模型注册表中。
模型注册表:模型注册表是公司机器学习设置中的重要组成部分。它作为一个中央枢纽来存储已经被训练和部署的模型的详细信息。它不仅跟踪模型本身,还跟踪每个模型的性能指标和其他元数据。这些信息对于确保模型可以在其生命周期中进行复现和跟踪至关重要。
模型部署:我们将使用已保存的模型(无论是来自模型注册表还是其他地方存储的模型),将其集成到生产系统中,使其能够对新数据进行预测。
模型监控:主要的监控技术包括性能分析监控和数据漂移监控。
性能分析监控涉及设置规则,以确定是否在一定时间段内(如一小时、一个月或其他频率)内某个指标失败。例如,精度在80%以上是一个良好的基准目标,但还重要的是监控其他指标,如回归模型如果使用回归模型或分类模型如果使用精确率和召回率。除了这些检查外,监控可能会有助于及时发现可能会影响模型性能的数据异常或模式。
监视模型性能的另一种主要方式是检查底层数据。为了做到这一点,我们需要使用统计技术和其他方法比较数据的分布。
所有这些组件都在一个循环步骤中完成,从数据开始,以重新引入数据并再次循环结束。
工作类型
批量作业按照规律间隔处理数据或预测用户行为,并存储结果。对于数据流水线来说,这意味着每30分钟或每小时取一次数据,而机器学习流水线通常进行离线预测或批处理作业。后者在用户当前不观看节目时预测用户偏好。
数据管道和机器学习管道之间还有一个共同点,那就是按需进行管道处理。
在数据管道中,这通常就像“推送机制”,其中创建了一个事件,并将该事件的数据推送到Kafka集群。

在机器学习管道中,这种类型的处理通常被称为在线推断。例如,当用户点击需要进行新预测的网页时。

另一个例子是当您完成观看HBO Max的《最后的我们》节目并需要推荐一个新的节目时,无论是类似的还是不同的。
我只见过一种涉及数据管道的工作类型:流式处理。流式处理数据管道是一个实时从一个位置到另一个位置处理和移动数据的系统。尽管有人可能认为这与按需进行管道处理类似,但我不同意,因为流式处理数据是持续发生的,而按需进行管道处理是间断发生的。
数据管道有三种工作类型:流式处理、批量处理和按需处理。相比之下,机器学习管道仅具有批量处理和按需处理(或”推断”)工作类型。
计算需求
数据管道和机器学习管道是每个组织的关键组成部分,它们可能具有类似的计算需求。
数据管道依赖于传入数据的数量,理想情况下很少变动。然而,数据量的突然变化是可能发生的,因此确保数据管道可以相应调整非常重要。否则,数据处理将会延迟,从而对组织的运营产生负面影响。
另一方面,机器学习管道取决于数据量和管道处理阶段。机器学习管道的计算需求根据管道的阶段而变化,因为训练需要比处理或预测更多的计算资源。因此,我们需要根据需求调整计算需求。
无论我们使用数据管道还是机器学习管道,都要确保我们的管道能够处理计算需求的突然和显著变化。对于数据管道尤为重要,因为数据量的意外变化可能导致数据积压,影响组织做出明智决策的能力。因此,确保数据和机器学习管道具有可扩展性,并能处理计算需求的变化至关重要。否则,这些管道将失败并导致数据处理延迟,从而造成用户体验不佳。
永不停止的管道
总之,对于处理数据的公司来说,数据管道和机器学习管道都是重要的。它们具有不同的目标、工作类型和计算需求。了解这些差异对于构建、扩展和维护有效的管道非常重要,这些管道可以处理计算需求的突然变化,并确保准确、及时和可操作的数据,以实现更好的决策和提高绩效。
原文由Ben Rogojan在此发布。