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 (可利用述詞下推 (predicate pushdown)、像 Snappy 這類的壓縮,以及根據查詢模式調整的分割區索引鍵),並在為 TensorFlow 管線提供資料以進行高吞吐量循序讀取時,使用 TFRecord。注意小檔案爆炸問題:緩衝寫入 (例如 Firehose 的緩衝功能、Glue 的批次處理) 以產生為大數據框架設計大小的 S3 物件 (數十到數百 MB)。結構演進是常見的:使用 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 自訂建置版本),並且可以使用 S3 作為底層資料湖時,EMR 是更佳的選擇。若要進行無需擷取的分析,可使用 Redshift Spectrum 或 Athena 直接查詢 S3 中的 Parquet/ORC;Redshift 更適合複雜的 join 和商業智慧 (BI) 工作負載。對於模型資料的準備,SageMaker Processing jobs 提供受管的容器來運行可擴展的 Spark 或 Python 前處理,確保前處理程式碼在靠近訓練的地方運行,並可與訓練任務一起進行版本控制。當使用內建演算法啟動 SageMaker 訓練時,至少需提供訓練映像檔、IAM 角色、instance_type/count,以及訓練資料的 S3 URI;對於數百萬筆記錄的資料集,可考慮使用 Pipe 模式來串流記錄,以避免 EBS 複製。常見的陷阱:為極低延遲的轉換選擇 Glue (應改用 Lambda/Kinesis),或在 Redshift Spectrum/Athena 就足夠的情況下,不必要地將 S3 資料複製到 HDFS/EBS。
特徵工程、轉換管線與特徵選擇
特徵工程應該是可重現的,並且能避免資料洩漏。將前處理實作為生產等級的管線 (scikit-learn Pipeline、Spark ML pipelines 或 SageMaker Processing + Feature Store),以便在訓練和推論時應用完全相同的轉換。透過策略選擇來處理遺失值:對於小量的缺口使用簡單插補 (平均數/中位數/眾數);當其他特徵可以預測遺失值時,使用基於模型的方法 (KNN、迭代 MICE)。對於基於梯度的模型,使用 StandardScaler 或 MinMax 來縮放數值特徵;如果離群值佔主導地位,則應用穩健的縮放。對於類別變數,對低基數類別使用獨熱編碼 (one-hot encoding),對高基數類別使用目標編碼 (target encoding) 或學習嵌入 (learned embeddings) (在深度模型中使用 Embeddings 或使用特徵雜湊 (feature hashing) 來控制維度)。對於文字,執行一致的正規化 (小寫、標點符號、斷詞);使用 Word2Vec/BlazingText 進行嵌入,或對於線性模型使用 TF-IDF/稀疏管線;SageMaker 中的 BlazingText 支援 skip-gram/CBoW,且在大規模下很有效率。對於特徵選擇,可使用 L1 正規化、基於樹的重要性 (XGBoost/RandomForest)、互資訊 (mutual information) 或遞歸特徵消除 (recursive feature elimination),並且務必在交叉驗證的摺疊 (fold) 內部執行特徵選擇,以避免選擇偏誤。實務上最大的陷阱是資料洩漏 (leakage):絕不使用未來的目標資訊來衍生特徵,也絕不在分割資料集前,對整個資料集進行前處理。
安全性、存取控制、治理與營運監控
安全且可稽核的資料工程是必要的。使用 SSE-KMS 為 S3 和 EBS 磁碟區的靜態資料加密,並使用用戶端加密以獲得額外控制;透過 AWS KMS CMK 管理金鑰,並使用金鑰政策 (key policies) 和授權 (grants) 來實踐最低權限原則。使用 S3 VPC 端點和精確的儲存貯體政策 (bucket policies),或將範圍限定在 VPC principal 的 S3 Access Points,來將 S3 資料集限制在 VPC 內;並結合附加到 SageMaker、Glue、EMR 或 Lambda 的 IAM 角色來強制執行最低權限原則。對於敏感的 PII,使用權杖化 (tokenization) 或欄位級加密 (field-level encryption),並確保 KMS 根據政策輪換金鑰。在營運方面,啟用 CloudTrail 來記錄 SageMaker 和 Glue 的 API 活動,並使用 CloudWatch 來監控任務指標;使用 SageMaker Model Monitor 進行模型漂移偵測,並設定警示以重新訓練或檢查模型偏誤。資料治理需要 Glue Data Catalog 或企業級的中繼資料儲存庫、資料血緣 (data lineage) 以及用於生命週期政策的標籤;為冷資料實作 S3 生命週期規則 (轉換至 glacier)。常見的誤解包括:認為僅有安全群組 (security groups) 就足夠(您還需要 IAM、儲存貯體政策和 VPC 端點),或忘記在訓練執行個體的磁碟區上啟用加密——務必在訓練任務定義中包含 EBS 加密,並使用最低權限角色來驗證存取。
實務問題:使用案例情境
情境: MetroRetail 營運一個 AWS ML 環境,客戶的點擊流 (clickstream) 被擷取到 Kinesis Data Streams,儲存在 S3 中,並在 SageMaker 中訓練模型。其資料湖使用 Glue Catalog 和 Athena 供分析師使用。
挑戰: 將串流的 CSV 點擊事件轉換為 S3 中的 Parquet 格式並支援結構演進 (schema evolution),為推薦模型產生可靠的特徵向量,並確保管線能夠擴展,而無需將數 GB 的資料集複製到訓練執行個體。
建議方法:
- 使用 Kinesis Data Streams 進行擷取,附加一個 Lambda 消費者來執行輕量級驗證,並將記錄轉發到一個 Kinesis Data Firehose 交付串流。該串流設定使用 Glue Schema Registry 將 JSON/CSV 轉換為 Parquet,並將分區的 Parquet 檔案寫入 S3(將緩衝提示調整至約 64–128 MB)。
- 在 AWS Glue 中對 Parquet 進行編目;使用 Glue ETL 任務(無伺服器 Spark)或 SageMaker Processing(Spark 容器)來建立可重現的特徵管線,應用插補法(對偏斜的數值使用中位數)、StandardScaler,以及對高基數的 item_id 進行類別嵌入 (categorical embeddings)。
- 將線上特徵向量儲存在 SageMaker Feature Store(用於低延遲查詢的線上儲存),並將離線特徵儲存在 S3(透過 Parquet 的特徵儲存庫離線儲存)。在 SageMaker 中使用 Pipe 模式進行訓練,指向 S3 的 Parquet 清單檔 (manifests) 以串流方式傳輸資料,避免完整的資料複製。
- 使用 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.
通過考試 →