Amazon MLA-C01: 数据工程与特征工程 — 学习指南
属于 AWS Machine Learning Engineer Associate MLA-C01 — 学习指南. 使用经过验证的答案练习: Amazon 考试中心, 或参加限时模拟考试: ExamRoll.io.
核心概念
机器学习的数据工程旨在为模型训练和推理生成可复现、可审计的输入,同时最大限度地减少泄漏和运维负担。其核心在于一致的摄取语义(事件时间、记录标识符、模式)、一个规范的元数据目录,以及定义明确、既可离线执行用于模型训练、又可在线执行用于实时推理的转换。架构您的管道,以便相同的转换代码(或相同的 Feature Store 记录定义)同时支持训练数据集和推理时返回的在线特征;这可以避免训练/服务偏差。对于时序问题,请保留每条记录的事件时间,并强制执行时间感知的连接和拆分,以防止标签泄漏;当使用 SageMaker Feature Store 时,在 CreateFeatureGroup 中设置一个 RecordIdentifierFeatureName 和一个 EventTimeFeatureName,以便下游的训练和推理使用相同的键。
特征工程分为确定性的、可重复的转换和探索性转换。确定性转换包括插补、缩放、分类编码和派生聚合(滚动计数、时间窗口特征)。将这些作为代码执行,这些代码可以在 Glue ETL、SageMaker Processing 或 SageMaker Data Wrangler 中运行,并可被检查点化到一个离线存储中。对于高基数分类特征,优先选择带有交叉验证折叠的目标编码或基于频率/嵌入的表示,而不是朴素的独热编码,以避免组合爆炸。对于数值特征,优先选择适合管道的标准化(均值/方差)或分位数转换,并将这些参数存储在模型构件中,以确保生产环境的归一化与训练时相匹配。
关键服务与配置
AWS Glue 为许多机器学习管道提供了规范的 ETL 和元数据层。使用 Glue 爬网程序(Crawlers)为 S3 和 JDBC 数据源填充 Glue 数据目录(Data Catalog),然后编写基于 Spark 的 Glue ETL 作业或 Glue Studio 可视化作业来清洗和转换数据。配置 Glue 作业时,需设置 GlueVersion(例如 3.0)、WorkerType(G.1X, G.2X)、NumberOfWorkers、用于增量处理的 JobBookmarks,以及 DefaultArguments,例如
undefined
以包含像 awswrangler 或 pydeequ 这样的库。要从本地 MySQL 摄取数据,需建立一个带有 JDBC URL 的 Glue 连接,并使用 Glue 作业或 AWS DMS 将 CDC 捕获到 S3 落地(landing)区域;当使用 DMS 时,选择先全量加载后 CDC,并以 S3 parquet 为目标,以实现高效的离线特征。
SageMaker Feature Store 是在大规模下实现低运维开销的中央特征管理选项。CreateFeatureGroup 需要 FeatureDefinitions、RecordIdentifierFeatureName、EventTimeFeatureName、OnlineStoreConfig(设置
undefined
以启用一个由 DynamoDB 支持的低延迟存储),以及带有 S3Uri 和 DataCatalogConfig 的 OfflineStoreConfig,以便通过 Athena/Glue 暴露离线特征。根据吞吐量需求,使用 BatchPutRecord 或 PutRecord 进行摄取;需包含 FeatureGroupArn 和授予服务 PutRecord 权限的 RoleArn。离线存储将 Parquet 文件持久化在 S3 中,并自动与 Glue Data Catalog 集成,从而实现可复现的训练查询。对于实时特征,请对在线存储使用 GetRecord;对于批量训练连接,优先选择离线 S3 Parquet 路径。
对于模型治理和部署工作流,请使用 SageMaker Model Registry 和 SageMaker Pipelines。使用 CreateModelPackage 或 Pipelines 的 RegisterModel 步骤注册训练好的模型,并将 ModelApprovalStatus 设置为
undefined
以强制执行一个手动审批关卡。将 Pipelines 与 AWS CodePipeline 集成,或添加一个自定义 Lambda,在获得授权时通过 UpdateModelPackage 将 model_package 版本转换为
undefined
。对于漂移和偏差监控,结合使用 SageMaker Clarify 进行偏差/基线分析和 SageMaker Model Monitor 进行持续的数据/标签漂移检测。使用 ClarifyProcessor (
undefined
) 进行按需偏差评估,方法是将其指向离线存储的 Parquet 构件或由 Model Monitor 收集的流式样本。
设计模式与权衡
当训练吞吐量和复杂连接至关重要时,选择离线优先架构:将大的窗口化特征聚合和持久化到 S3 Parquet(通过 Glue/EMR/Glue Spark 作业),在 Glue Data Catalog 中对其进行编目,并使用 S3 前缀和对象版本控制来对数据集进行版本管理。这种方法有利于可复现性和经济高效的存储,但会增加提供新鲜特征的延迟。当需要低延迟特征时,将一个子集镜像到 Feature Store Online (DynamoDB) 或缓存层;其权衡是需要额外的运维开销来保持在线和离线存储的一致性。使用 Feature Store 内置的 BatchPutRecord 管道,或通过 Kinesis Data Streams + Lambda 进行流式摄取写入 Feature Store,以实现近乎实时的更新,同时仍然保留一个离线的规范视图。
对于迭代式实验与生产吞吐量的权衡,带有缓存功能的 SageMaker Pipelines 提供了一个显著优势:在管道步骤中启用 CacheConfig,这样当输入(参数、数据校验和)未发生变化时,计算密集型转换甚至训练步骤都会被跳过。与重复配置相同的计算资源相比,这降低了连续运行的启动延迟。对于极低延迟的推理,您需要在成本和复杂性之间进行权衡:多模型端点或预置并发可以减少冷启动的可变性但会增加成本;使用在线 Feature Store 加上一个轻量级模型容器可以最大限度地减少每次请求的编排工作。
算法和预处理的选择也存在权衡:内置的 XGBoost 在处理表格类欺诈任务方面表现出色,并提供 scale_pos_weight 来解决类别不平衡问题,且无需重采样,这在运维上非常轻量。然而,带有嵌入的深度模型能更优雅地处理高基数类别变量,但需要更多的基础设施和特征管道。尽可能使用自动化转换:SageMaker Data Wrangler 和 Glue DataBrew 提供可视化的、可重复的转换(如插补、归一化、重采样),并且可以将流程导出为脚本或导出到 Feature Store,从而减少工程时间。
常见陷阱与决策标准
一个常见的错误是未能对齐训练和服务(推理)的数据转换。应将转换参数(如缩放器、编码器)与模型一同存储,或存入 Feature Store,以确保在线预处理与训练时完全一致。另一个陷阱是,对高基数类别进行独热编码会导致特征维度过高;更可取的方法是使用嵌入(embeddings)、哈希(hashing)或目标频率编码(target-frequency encodings),并通过交叉验证的、防止数据泄漏的程序来验证这些方法。安全方面的错误也很常见:当在敏感的 S3 数据上进行训练时,应强制使用 SSE-KMS (KmsKeyId),通过 S3 存储桶策略和 IAM 角色(主体为 sagemaker.amazonaws.com)限制访问,并将训练任务置于带有 S3 VPC 网关端点的 VPC 中,以确保数据不经过公共互联网。
在 Glue 作业驱动的 ETL 与 SageMaker Processing/Data Wrangler 之间做决策时,需评估其频率和复杂性:Glue 针对跨多个数据源的可调度的、可扩展的 Spark ETL 进行了优化,并与 Glue Data Catalog 集成;Data Wrangler 和 SageMaker Processing 则适用于快速实验以及直接导出到 Feature Store 或训练任务的场景。对于异常检测,如果想在时间序列上进行自动统计异常检测且无需繁重的机器学习运维,应使用 Amazon Lookout for Metrics;但如果需要可定制的、感知数据血缘的数据质量检查,并将指标馈送到仪表板,则应选择在 Glue 中运行的 Deequ。
实践问题:用例场景
公司名称:FinEdge
FinEdge 正在构建一个欺诈检测服务,该服务必须使用 Amazon S3 中的每日批量交易日志以及存储在本地 MySQL 中的客户资料来训练模型。数据必须保持加密和隔离;模型版本在部署到生产环境前需要手动批准;模型必须支持按需进行偏见和漂移评估;推理需要低延迟的特征查找。
摄取与集中化:使用 AWS DMS 从本地 MySQL 执行初始全量加载和 CDC 复制,将数据以 Parquet 文件格式导入 S3 落地(landing)区域。为 DMS 配置 S3 目标设置,并确保 JDBC 源使用 SSL。使用 Glue Crawler 在 Glue Data Catalog 中注册 S3 交易日志和 DMS 生成的 Parquet 格式的客户资料。设置 Glue 作业参数:GlueVersion 3.0,WorkerType G.2X,NumberOfWorkers 根据每日数据量设置,并启用 JobBookmarks 以支持增量运行。
特征工程与存储:在 Glue 中编写 Spark 转换,或使用 SageMaker Data Wrangler 进行交互式特征迭代和导出。将确定性的聚合特征以 Parquet 格式持久化到 S3,并使用 CreateFeatureGroup 创建一个 SageMaker Feature Store FeatureGroup,指定 FeatureDefinitions、RecordIdentifierFeatureName=“transaction_id”、EventTimeFeatureName=“event_time”、包含 EnableOnlineStore=True 的 OnlineStoreConfig,以及指向规范化数据湖的 OfflineStoreConfig S3Uri 和用于链接 Glue 表的 DataCatalogConfig。通过 BatchPutRecord 进行批量加载,通过 PutRecord 进行事务性更新。
训练与模型注册:使用 SageMaker Pipelines 进行预处理、训练和注册。包含一个 RegisterModel 步骤,该步骤将模型注册到指定的 ModelPackageGroupName 中,并设置 ModelApprovalStatus=“PendingManualApproval”。接入一个 AWS CodePipeline 手动批准操作,或使用 SageMaker API UpdateModelPackage 将已批准的包状态更新为 “Approved”。对于类别不平衡问题,基于在基线统计中计算的类别比例来设置 XGBoost 超参数 “scale_pos_weight”,以避免重采样的复杂性。
治理、监控与按需检查:使用 SageMaker Clarify 创建基线,通过 ClarifyProcessor 计算偏见指标并将基线保存到 S3/FeatureStore 离线存储。使用 CreateMonitoringSchedule 部署 Model Monitor 以监控数据/特征漂移;对于按需的偏见或漂移评估,以编程方式运行 ClarifyProcessor 或 StartMonitoringSchedule,以分析最近捕获的流量或在线存储的快照。将监控输出存储到 S3,并通过 QuickSight 仪表板呈现异常。使用 SSE-KMS 保护 S3,通过具有最小权限的 IAM 角色限制访问,并将训练和推理置于带有 S3 VPC 端点的 VPC 中。
AWS 方案解析:该方法利用 Glue 和 DMS 通过 Glue Data Catalog 实现可扩展、可审计的数据摄取和元数据管理;利用 SageMaker Feature Store 实现一致的在线/离线特征和低延迟查找;利用 SageMaker Pipelines 和 Model Registry 以最小的运维开销和内置的手动审批支持来控制模型生命周期;利用 Clarify 和 Model Monitor 提供按需和持续的偏见/漂移分析。这一组合通过(SSE-KMS、VPC 端点)保持了加密隔离,通过使用托管服务进行数据摄取和特征管理减少了工程工作量,并强制实施了可复现、可审计的机器学习产物。
所有领域 · 模型训练与超参数优化 →
练习这些题目 → · 在 ExamRoll.io 上限时练习 →
Pass the whole exam — not just this question
You found this answer. Get every verified question and explanation in one place, and save hours of prep. Free to start.
通过考试 →