Amazon MLS-C01: 数据工程与特征工程 — 学习指南
属于 AWS Machine Learning Specialty MLS-C01 — 学习指南. 使用经过验证的答案练习: Amazon 考试中心, 或参加限时模拟考试: ExamRoll.io.
数据摄取、存储和文件格式
设计一个为机器学习准备好的数据湖,首先要选择正确的摄取模式和持久化格式。对于实时遥测数据,使用 Kinesis Data Streams(用于低延迟处理)或 Kinesis Data Firehose(用于托管式交付)。Firehose 可以直接将数据交付到 Amazon S3,并在与 AWS Glue Schema Registry 和 Lambda 转换结合使用时,执行服务器端记录格式转换,生成 Parquet/ORC 格式;如果您需要自定义数据扩充或亚秒级响应,则应选择 Data Streams + Kinesis Data Analytics 或 Lambda。对于批量迁移,可使用 AWS DataSync;对于 RDS/OLTP 数据源,可使用 Database Migration Service (DMS);对于 TB 级别的离线传输,可使用 Snowball。在 S3 上,应使用列式存储的 Parquet 格式来支持分析工作负载(利用其谓词下推、Snappy 等压缩方式以及根据查询模式调整的分区键),并在为 TensorFlow 管道提供数据以实现高吞吐量顺序读取时使用 TFRecord 格式。警惕小文件爆炸问题:通过缓冲写入(如 Firehose 缓冲、Glue 批处理)来生成适合大数据框架(几十到几百 MB)的 S3 对象大小。模式演进很常见:使用 Glue Catalog 和 Schema Registry 对模式进行版本控制;使用分区和命名约定来避免昂贵的全表扫描。一个常见的陷阱是在下游处理中使用文件模式(File mode),这会将整个数据集复制到计算节点;当数据集包含数百万条记录时,应优先选择流式处理(SageMaker Pipe mode)、Redshift Spectrum 或 Athena,而不是进行整体复制。
无服务器和集群 ETL:Glue、EMR、Redshift 和 SageMaker
ETL 的选择取决于规模、定制化需求、成本概况和所需的库。AWS Glue 提供无服务器的 Spark ETL,集成了数据目录、爬网程序和内置的作业编排功能——非常适合需要托管式扩展的、频繁的、事件驱动的转换任务。当您需要自定义的 Spark/Hadoop 生态系统、长时间运行的集群或专用库(如 GraphX、MLlib 自定义构建版本)时,EMR 是更佳选择,并且您可以使用 S3 作为底层数据湖。对于无需数据摄取的分析场景,可使用 Redshift Spectrum 或 Athena 直接查询 S3 中的 Parquet/ORC 文件;对于复杂的连接操作和 BI 工作负载,Redshift 更为适合。对于模型数据准备,SageMaker Processing 作业提供托管容器来运行可扩展的 Spark 或 Python 预处理,确保预处理代码在靠近训练环境的位置运行,并能与训练作业一起进行版本控制。使用内置算法启动 SageMaker 训练时,至少需要提供训练镜像、IAM 角色、instance_type/count 以及训练数据的 S3 URI;对于包含数百万条记录的数据集,应考虑使用管道模式(Pipe mode)以流式传输记录,避免 EBS 复制。常见陷阱:为要求极低延迟的转换选择 Glue(应改用 Lambda/Kinesis),或在 Redshift Spectrum/Athena 就能满足需求的情况下,不必要地将 S3 数据复制到 HDFS/EBS。
特征工程、转换管道和特征选择
特征工程应是可复现的,并能避免数据泄露。将预处理实现为生产级的管道(如 scikit-learn Pipeline、Spark ML 管道或 SageMaker Processing + Feature Store),以确保在训练和推理时应用完全相同的转换。通过选择策略来处理缺失值:对于少量缺失,使用简单插补(均值/中位数/众数);当其他特征可以预测缺失值时,使用基于模型的方法(如 KNN、迭代 MICE)。对于基于梯度的模型,使用 StandardScaler 或 MinMax 对数值特征进行缩放;如果存在大量离群值,则应用稳健缩放(robust scaling)。对于分类变量,为低基数类别选择独热编码(one-hot encoding),为高基数类别选择目标编码(target encoding)或学习嵌入(learned embeddings)(在深度模型中使用 Embeddings 或使用特征哈希进行维度控制)。对于文本,执行一致的规范化处理(小写转换、标点符号处理、分词);使用 Word2Vec/BlazingText 生成嵌入,或为线性模型使用 TF-IDF/稀疏管道;SageMaker 中的 BlazingText 支持 skip-gram/CBoW,并且在大规模数据上非常高效。对于特征选择,可使用 L1 正则化、基于树的重要性(XGBoost/RandomForest)、互信息或递归特征消除等方法,并始终在交叉验证的每个折叠(fold)内部执行特征选择,以避免选择偏差。实践中最大的陷阱是数据泄露:切勿使用未来的目标信息来派生特征,也切勿在划分数据集之前对整个数据集应用预处理。
安全、访问控制、治理和运维监控
安全且可审计的数据工程是强制性要求。使用 SSE-KMS 对 S3 和 EBS 卷上的静态数据进行加密,并使用客户端加密以获得额外控制;通过 AWS KMS CMK 管理密钥,并使用密钥策略和授权实现最小权限。使用 S3 VPC 端点和精确的存储桶策略,或使用范围限定于 VPC 主体的 S3 Access Points,将 S3 数据集限制在 VPC 内;并结合附加到 SageMaker、Glue、EMR 或 Lambda 的 IAM 角色来强制执行最小权限。对于敏感的 PII,使用令牌化或字段级加密,并确保 KMS 根据策略轮换密钥。在运维方面,为 SageMaker 和 Glue 启用 CloudTrail 进行 API 活动日志记录,并使用 CloudWatch 监控作业指标;使用 SageMaker Model Monitor 进行漂移检测,并设置警报以重新训练或检查模型偏差。数据治理需要 Glue Data Catalog 或企业级元数据存储、数据血缘以及用于生命周期策略的标签;为冷数据实施 S3 生命周期规则(转换到 Glacier)。常见的误解包括:认为仅安全组就足够了(您还需要 IAM、存储桶策略和 VPC 端点),或者忘记在训练实例卷上启用加密——务必在训练作业定义中包含 EBS 加密,并使用最小权限角色验证访问。
实践问题:用例场景
场景: MetroRetail 公司在一个 AWS 机器学习环境中运行,客户点击流数据被采集到 Kinesis Data Streams,存储在 S3 中,模型在 SageMaker 中进行训练。其数据湖使用 Glue Catalog 和 Athena 供分析师使用。
挑战: 将流式 CSV 点击事件转换为 S3 中的 Parquet 格式并支持模式演进,为推荐模型生成可靠的特征向量,并确保管道能够扩展,而无需将数 GB 的数据集复制到训练实例。
推荐方法:
- 使用 Kinesis Data Streams 进行数据采集,附加一个 Lambda 消费者执行轻量级验证,并将记录转发到配置了 Glue Schema Registry 的 Kinesis Data Firehose 交付流,以将 JSON/CSV 转换为 Parquet,并将分区后的 Parquet 文件写入 S3(将缓冲区提示调整到约 64–128 MB)。
- 在 AWS Glue 中对 Parquet 文件进行编目;使用 Glue ETL 作业(无服务器 Spark)或 SageMaker Processing(Spark 容器)构建可复现的特征管道,对高基数的 item_id 应用插补(对偏态数值使用中位数)、StandardScaler 和分类嵌入。
- 将在线特征向量存储在 SageMaker Feature Store 中(用于低延迟查找的在线存储),并将离线特征存储在 S3 中(通过 Parquet 作为特征存储的离线存储)。在 SageMaker 中使用指向 S3 Parquet 清单文件的 Pipe 模式进行训练,以流式传输数据并避免完全复制。
- 使用 SSE-KMS 保护 S3,通过 S3 VPC 端点和针对 VPC 的严格存储桶策略限制访问,并启用 CloudTrail + SageMaker Model Monitor 进行活动日志记录和漂移警报。
理由: 该方法利用托管的流式到 Parquet 转换和无服务器 ETL 实现扩展,使用 Feature Store 确保训练和推理之间的一致性,通过 Pipe 模式避免了昂贵的数据移动,并强制执行加密和最小权限访问,为生产就绪做好准备。
所有领域 · 探索性数据分析与可视化 →
练习这些题目 → · 在 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.
通过考试 →