examlab .net 用最有效率的方法,考取最有價值的證照
本篇導覽 約 21 分鐘

SageMaker Data Wrangler 與特徵工程

4,200 字 · 約 21 分鐘閱讀 ·

掌握 SageMaker Data Wrangler 與特徵工程,對應 MLA-C01 Domain 1 Task 1.2:內建轉換(one-hot、label、ordinal encoding、normalization)、缺失值填補、類別不平衡處理(SMOTE、oversampling)、文字與時間序列特徵、SageMaker Processing 產品化,以及匯出至 Feature Store 與 Pipelines。

立即做 20 題練習 → 免費 · 不用註冊 · MLA-C01

SageMaker Data Wrangler 是 SageMaker Studio 內的視覺化特徵工程工具,讓 ML 工程師與資料科學家無需逐行手寫 PySpark 就能建構、測試並匯出轉換流程。在 MLA-C01(Machine Learning Engineer Associate)考試中,Data Wrangler 貫穿 Domain 1,也出現在 Domain 3,因為把 Data Wrangler flow 匯出至 SageMaker Pipeline 是標準的產品化交接模式。Pluralsight 的 MLA-C01 學習指南將 Data Wrangler 列為「高頻考題」,而社群痛點研究也一再指出 Data Wrangler 與 DataBrew 的混淆是 Domain 1 前三大失分陷阱之一——兩者的視覺介面相似到足以讓只讀過其中一個的考生在另一個上翻車。

本指南涵蓋 Data Wrangler flow 模型與其在 ML pipeline 中的定位、考試按名稱測試的類別編碼選項(one-hot、label、ordinal、binning)、數值縮放與正規化轉換及其考試相關取捨、缺失值填補策略(含 MICE)、類別不平衡處理工具箱(SMOTE、random oversampling/undersampling、class weights)、時間序列與文字特徵管線、將互動式 flow 轉為產品化管線的 SageMaker Processing job 模型,以及匯出至 Feature Store、S3 和 SageMaker Pipelines 的路徑。讀完後,你應能看到「不平衡詐騙資料集,正類 0.5%,建構具備適當類別平衡與可重現特徵管線的 ML-ready 資料集」這種題幹,立即想到 Data Wrangler 搭配 SMOTE oversampling,並匯出為 Pipeline step。

SageMaker Data Wrangler 是什麼,以及它在哪裡

Data Wrangler 是 SageMaker Studio 內的功能,提供類似試算表的視覺化資料準備環境,含 300+ 內建轉換、整合 S3、Athena、Redshift、Snowflake、EMR 和 Databricks 作為資料來源、自動資料品質報告,以及一鍵匯出至 S3、Feature Store、SageMaker Processing 或 SageMaker Pipelines。它面向想快速迭代特徵、然後將相同轉換作業化為產品管線步驟的 ML 工程師與資料科學家。

MLA-C01 脈絡中的特徵工程步驟

特徵工程——將原始欄位轉為模型可用的訊號——大約佔每個 ML 專案工時的一半。MLA-C01 考試不期待你知道哪些特徵讓 XGBoost 預測最好(那是資料科學家的事);它期待你知道哪個 AWS 服務做哪種轉換,以及轉換如何從互動式探索流入產品訓練管線。Data Wrangler 是視覺互動工具;SageMaker Processing 是產品執行引擎;SageMaker Pipelines 是協調層。

Data Wrangler 與 Glue DataBrew 的差異

兩者都是視覺化轉換工具。關鍵差異在於它們在整合故事中的定位。Data Wrangler 住在 SageMaker Studio 內,原生匯出至 Feature Store 與 Pipelines,目標是 ML 特定的特徵工程。DataBrew 住在 AWS Glue 內,整合 Glue Data Catalog 與 Lake Formation,目標是通用資料準備。MLA-C01 考試透過題幹脈絡來測試這個差異——「SageMaker Studio 的 ML 工程師」→ Data Wrangler;「產出 S3 curated 資料集的資料工程師」→ DataBrew。

白話文解釋 SageMaker Data Wrangler

特徵工程是教科書讓它聽起來很數學、實際上像 Excel 加強版的主題。三個具體類比讓結構容易記憶。

類比一 — 婚前量身訂製的裁縫工作室

想像一家婚紗禮服店,每件禮服從廠商到貨時都是標準尺寸(原始資料),必須為特定新娘(模型可用特徵)修改才能在婚禮前完成。量體站——裁縫幫新娘量尺寸並記錄所有修改需求——就是 Data Wrangler flow 的分析步驟:產出資料品質報告、找出缺失的量測值(空值)、標出異常值,並列出待辦清單。改衣工作台上有數百種預建技法(縫收腰身、修裙擺、縫珠飾),就是 300+ Data Wrangler 轉換將禮服標準尺寸標籤轉換成精確尺寸的特定修改(把「XL 碼」one-hot 編碼成向量)就是類別編碼修正不對稱設計(左肩修改量大於右肩)就是用 SMOTE 處理類別不平衡記錄每個修改步驟的修改日誌,讓同款下一件禮服也能依樣修改,就是 Data Wrangler flow 定義——一份 JSON 文件,記錄每個轉換步驟,可對新資料重播。接手日誌並把它應用到連鎖店數千件禮服的產品縫紉室,就是大規模執行匯出 flow 的 SageMaker Processing儲存預修改組件供多場婚禮重複使用的精品布料倉庫,就是 Feature Store

類比二 — 便利超商的新品開發實驗室

想像 7-Eleven 研發中心在開發新品——每批原料(原始資料)都要經過配方實驗、試做和包裝設計才能上架(模型可用特徵)。研發廚房——研究員用小批量試做、快速修改配方——就是互動模式的 Data Wrangler:小樣本、視覺回饋、快速迭代。研究員寫下的配方卡——「加熱 80 秒、糖減 10%、香料比例 6:4」——就是 Data Wrangler flow 定義量產工廠依照配方卡,一口氣生產一萬份的流程,就是 SageMaker Processing配方卡上的各個步驟——「去除不良原料」(缺失值填補)、「以 6:4 比例混合」(類別 one-hot 編碼)、「均一厚度切片」(normalization)、「平衡甜鹹比例」(SMOTE 類別平衡)——就是個別的 Data Wrangler 轉換包裝好上架的成品就是放在 S3 或 Feature Store 的 curated 訓練資料集研究員在決定量產前做的試吃評分,就是 Data Wrangler quick model 與特徵相關性報告——在真正大規模製作之前,快速確認配方是否能做出暢銷商品。

類比三 — 醫院檢驗室的檢前準備流程

想像一家醫院病理實驗室在為大型診斷儀器(訓練完的模型)準備樣本。原始樣本進來(原始資料),但不能直接放進分析儀——需要離心、稀釋、加試劑、平衡。技術員的工作站上有數百種預先驗證的操作流程,就是有 300+ 內建轉換的 Data Wrangler各個操作流程——「以 3000 rpm 離心 5 分鐘」(normalization)、「以 1:10 用生理食鹽水稀釋」(min-max scaling)、「標記每支試管的病患與時間戳記」(類別 one-hot 編碼)、「加試劑調整 pH」(類別平衡)——就是個別資料轉換記錄每個樣本每個步驟的操作日誌就是 flow 定義後室的自動化機器人備品站依照操作日誌,連夜處理 5000 個樣本,就是 SageMaker Processing儲存預處理完成樣本供多個研究重複使用的中央生物樣本庫,就是 Feature Store

Data Wrangler Flow — 連接資料來源

一個 Data Wrangler flow 從一個或多個資料來源開始,套用一連串轉換,然後產出一個輸出。Flow 以 .flow 文件(JSON)形式儲存在你的 SageMaker Studio 使用者空間中。

支援的資料來源

Data Wrangler 可讀取:Amazon S3(Parquet、CSV、JSON、ORC)、Amazon Athena(針對任何 Glue Catalog 資料表的查詢)、Amazon Redshift(直接查詢)、Snowflake、Databricks、Amazon EMR、Salesforce,以及透過 AWS DataConnections 的 SaaS 連接器。樣本大小可設定(預設 50,000 列以獲得快速互動回饋),但 flow 在匯出時會套用至完整資料集。

匯入並合併多個來源

你可以把多個資料集匯入同一個 flow,並使用 Join 轉換來合併。常見模式:從 Athena 匯入交易資料表,從 Redshift 匯入使用者資料表,以 user_id 做 join,產出統一的特徵資料表。

樣本大小與迭代速度

互動式 flow 在樣本上執行以獲得快速回饋。當你確定 flow 並匯出時,才會處理完整資料集。在假設產品執行會成功之前,務必先用樣本測試邊界情況(高基數類別、極端異常值)。

內建轉換 — 類別編碼

MLA-C01 考試要求你能按名稱識別每種編碼,並知道何時用哪種。

One-Hot Encoding

將有 N 個唯一值的類別欄位轉換為 N 個二元欄位。country 欄位含 USUKJP 三個值,變成三個欄位 country_UScountry_UKcountry_JP,各為 0 或 1。用於類別值無固有順序基數低(通常低於 100 個唯一值)的情況。高基數(1000+ 個值)會爆炸特徵空間——改用 embedding 或 hashing。

Label Encoding(Ordinal)

透過給每個值分配一個數字,將類別欄位轉換為整數。size 欄位含 SMLXL 四個值,變成整數 0、1、2、3。隱含順序——適合有序類別(尺碼、教育程度、嚴重性)。對名義類別(國家、顏色)是錯誤的,因為模型會把 country=2 詮釋為 country=1 的兩倍,毫無意義。

Ordinal Encoding(明確順序)

與 label encoding 類似,但有使用者明確指定的順序。severity 欄位含 lowmediumhighcritical,由你設計映射為 0、1、2、3,而非按字母順序預設映射。用於順序很重要且你不信任自動映射的情況。

Binning(分桶)

將連續數值轉換為類別桶。age 變成 age_bucket,值為 0-1819-3435-5455+。當特徵與目標之間的關係是非單調時很有用(年齡越大不一定風險越高——青少年和高齡者風險都高)。

Frequency / Count Encoding

用某類別值在資料集中的出現頻率來取代該值。常用於 one-hot 不實用的高基數特徵。

Target / Mean Encoding

用某類別的目標變數均值來取代該類別值。對高基數特徵很有效,但容易造成洩漏——必須只在訓練資料上計算,絕不能在驗證集上計算。Data Wrangler 提供帶洩漏保護的此功能。

選擇正確的編碼,先確認類別變數是否有固有順序。 名義(無順序:國家、顏色、產品類型)→ 基數低用 one-hot encoding,基數高用 hashing 或 embedding。有序(有順序:教育程度、滿意度評分)→ 用有明確排序的 ordinal encoding。MLA-C01 的錯誤答案陷阱是對名義資料使用 label encoding——模型把 country=2 視為 country=1 的兩倍,毫無意義。Label encoding 用自動編號只在真正有序、且字母順序恰好符合語義順序的類別上才安全。

數值特徵工程

對數值欄位,轉換管理數值的縮放與分佈。

Min-Max Scaling

將值縮放至固定範圍,通常是 [0, 1]:(x - min) / (max - min)。當你需要有界值時使用(例如輸出有 sigmoid 的神經網路)。對異常值敏感——一個極端值會把其他所有值壓縮在狹窄範圍內。

Standardization(Z-Score)

減去均值再除以標準差:(x - mean) / std。輸出均值為 0、標準差為 1,但沒有固定範圍。用於假設輸入符合常態分佈的演算法(線性模型、神經網路)。對異常值的敏感度低於 min-max。

Robust Scaling

使用中位數和四分位距代替均值和標準差:(x - median) / IQR。資料有異常值時使用——robust scaling 會忽略異常值,而非讓它們主導結果。

Log Transform

log(x + 1)。用於高度偏斜的分佈(收入、事件計數)——壓縮長尾並產生近似常態的輸出。重尾資料的許多樹狀模型都需要此轉換。

Power / Box-Cox Transform

類似 log transform,但有學習到的指數。自動選擇能產出最接近常態分佈的轉換。

決策啟發

  • 樹狀模型(XGBoost、Random Forest)——縮放影響較小;對重尾特徵做 log transform。
  • 線性模型、神經網路、k-NN、SVM——縮放很重要;預設用 standardization,需要有界輸出時用 min-max。
  • 重度異常值——robust scaling。

處理缺失值

缺失資料是 ML pipeline 的隱形殺手。MLA-C01 期待你熟悉填補工具箱。

Drop Rows / Drop Columns

如果缺失很少且無相關性,刪除受影響的列。如果欄位大部分為空,刪除欄位。這是最後手段,不是第一選擇。

Mean / Median / Mode Imputation

用欄位的均值(連續)、中位數(連續,對異常值更穩健)或眾數(類別)取代空值。簡單快速,但當缺失與目標有相關性時會引入偏差。

Forward Fill / Backward Fill

對時間序列,用前一個(或後一個)值取代空值。間歇性資料缺失的感測器資料的標準做法。

KNN Imputation

找出 K 個在其他特徵上最相似的列,取其缺失欄位的均值。對有相關特徵的資料,比簡單均值填補更準確。

MICE(Multiple Imputation by Chained Equations)

透過對其他欄位做迴歸,以迭代方式填補每個欄位。最準確,但也最耗資源。Data Wrangler 提供 MICE 作為內建選項。

Indicator Column

在填補值旁邊加一個二元的 _was_missing 欄位。讓模型學習缺失本身就是有資訊的。

何時選哪種

  • 缺失 < 5%,MCAR(完全隨機缺失)——刪除列。
  • 缺失 5-20%——速度要求用 mean/median/mode,精確度要求用 KNN。
  • 缺失 20-40%——精確度重要且有算力時用 MICE。
  • 缺失 > 40%——考慮刪除欄位,除非缺失本身有訊號。

類別不平衡處理

不平衡分類——詐騙、客戶流失、設備故障——是 MLA-C01 測試最多的特徵工程主題之一。

為何不平衡很重要

一個正類 0.5% 的詐騙資料集,在天真的準確率訓練下,會每次都預測「非詐騙」,得到 99.5% 準確率——完全沒用。模型從未學會少數類別,因為損失函數被多數類別主導。

SMOTE(Synthetic Minority Over-sampling Technique)

SMOTE 透過在現有少數樣本之間進行插值,合成少數類別的樣本。對每個少數樣本,SMOTE 找出 K 個最近的少數類別鄰居,並在它們之間的連線上建立新樣本。輸出是一個含有看起來真實的合成資料的平衡資料集。Data Wrangler 有 SMOTE 作為一鍵式轉換。

Random Oversampling

複製少數類別的列直到類別平衡。簡單但有過擬合風險——模型會記憶這些重複樣本。

Random Undersampling

刪除多數類別的列直到類別平衡。簡單,減少資料集大小,可能丟失多數類別的資訊。

Class Weights

不重新抽樣,而是在訓練時對少數類別的錯誤賦予更高的損失權重。模型從不平衡資料學習,但對少數類別的失誤付出更多代價。SageMaker 的內建演算法(XGBoost)支援 scale_pos_weight

組合技巧

SMOTE + random undersampling 是常見的組合:合成過採樣少數類別,然後刪除部分多數類別來平衡。根據每個資料集調整比例。

對嚴重不平衡的分類(正類低於 1%),預設選 SMOTE 加 class weights,而非天真的 oversampling。 天真的 oversampling 完全複製少數列,導致模型過擬合於那些特定樣本,在真正新的少數例子上表現差。SMOTE 透過在現有樣本之間插值建立合成但真實的少數樣本,泛化能力更好。Class weights(例如對 0.5% 正類 XGBoost 設 scale_pos_weight=200)告訴損失函數,少數類別的錯誤要難 200 倍。兩者組合——SMOTE 讓訓練分佈更豐富,class weights 讓損失函數感知少數——是 Data Wrangler 提供的產品級方案。MLA-C01 題幹訊號「0.5% 詐騙率」或「極端類別不平衡」對應 SMOTE + weights;天真 oversampling 通常是錯誤答案陷阱。

文字特徵工程

對 NLP 與文字分類任務,Data Wrangler 提供聚焦但實用的工具箱。

Tokenization

將文字切分為詞或子詞。Data Wrangler 提供基本 tokenization;對產品 NLP,自訂 Processing jobs 搭配 Hugging Face tokenizer 很常見。

TF-IDF(Term Frequency - Inverse Document Frequency)

將文字轉換為數值矩陣,每格是一個詞在一份文件中的重要性。傳統 ML 文字處理的標準方法(邏輯斯迴歸搭配 TF-IDF 向量)。

Word Embeddings

對深度學習文字模型,詞被映射到密集向量(Word2Vec、GloVe)。Data Wrangler 整合 SageMaker BlazingText 進行 embedding 生成。

Character / Subword Encoding

對現代 transformer 模型,BPE(Byte-Pair Encoding)或 WordPiece tokenization。通常在自訂 Processing 或直接在訓練腳本中完成。

Data Wrangler 是正確文字工具的時機

對傳統 ML 文字處理(TF-IDF + 線性/樹狀模型),Data Wrangler 足夠。對深度 NLP(transformer、fine-tuning),使用 SageMaker JumpStart 或搭配 Hugging Face 的自訂 Processing——Data Wrangler 的文字能力不是為此設計的。

時間序列特徵工程

時間序列資料需要捕捉時間結構的特殊特徵。

Lag Features

建立代表 N 個時間週期前的值的欄位。sales_lag_7 = 7 天前的銷售額。對需要從近期歷史學習的預測模型至關重要。

Rolling Window Statistics

計算滾動窗口內的均值、總和、標準差、最小值、最大值。sales_rolling_7d_mean = 過去 7 天銷售額的平均值。平滑雜訊並揭示趨勢。

Timestamp Decomposition

從時間戳記中提取 hour_of_dayday_of_weekmonthis_weekendis_holiday。捕捉週期性模式。

Cyclic Encoding

對像一天中某個小時這樣的週期性特徵,編碼為 sin(2π * hour / 24)cos(2π * hour / 24),讓模型學習到 23 時接近 0 時。

Differencing

value 替換為 value - lag_1 使序列平穩(去除趨勢)。ARIMA 類模型通常需要此操作。

為何考試測試時間序列特徵工程

DeepAR 是用於時間序列預測的 SageMaker 內建演算法(在 Training Jobs 主題中介紹),Forecast 是 AWS 的管理服務。兩者都在有工程化時間特徵時表現更好。MLA-C01 題幹訊號「預測下季度銷售」或「提前 7 天預測設備故障」要求考生知道 lag 和 rolling-window 特徵。

SageMaker Processing — 從互動式到產品化

Data Wrangler 是互動式的。要對產品規模的資料執行相同 flow,你需要匯出至 SageMaker Processing

SageMaker Processing 是什麼

SageMaker Processing 是一個託管服務,用於按需執行資料處理工作負載。它在託管的 instance 上啟動容器(內建 Scikit-Learn、Spark、PyTorch,或 BYOC),針對 S3 中的輸入資料執行你的腳本,將輸出寫入 S3,然後拆除叢集。按 instance 小時收費。

Data Wrangler 如何匯出至 Processing

Data Wrangler 的「Export」選單提供四個目標:SageMaker Processing job(Python 或 Spark)、SageMaker Pipelines(作為 Processing step)、Amazon S3(一次性執行)和 Feature Store(直接攝取)。選擇 Processing 會產出一個 Python notebook,可即用。

內建 Processing 容器

  • SKLearnProcessor — 預裝 Scikit-Learn 0.20+;用於 sklearn 管線。
  • PySparkProcessor — Apache Spark 3.x;用於分散式特徵工程。
  • PyTorchProcessor / TensorFlowProcessor — 用於 ML 框架特定的前處理。
  • ScriptProcessor — 使用你選擇的 Docker image 的通用 Python 腳本。

何時直接使用 Processing 而非 Data Wrangler

Data Wrangler 是互動式的;對於完全程式化的特徵管線(CI/CD、無 UI 工作流程),直接撰寫 Processing 腳本。MLA-C01 題幹訊號「產品管線,無手動 UI 步驟」對應不帶 Data Wrangler 的 Processing。

Data Wrangler 是互動式設計工具;SageMaker Processing 是產品執行引擎。Data Wrangler 將其 flow 定義匯出為 Processing job——兩者相輔相成,不是競爭關係。 MLA-C01 心智模型:資料科學家在 SageMaker Studio 的 Data Wrangler 中迭代特徵,把確定的 flow 匯出為 Processing job 腳本,ML 工程師把該腳本接入 SageMaker Pipeline 的 ProcessingStep。兩個階段使用相同的 flow 定義,確保訓練與推理使用完全相同的前處理,消除 training-serving skew。

匯出 Data Wrangler Flows

匯出步驟將互動式工作轉換為可重用的產品資產。

匯出至 Amazon S3

一次性執行,使用 flow 定義處理完整資料集並寫入指定的 S3 前綴。用於臨時資料集生成。

匯出至 Feature Store

直接將 flow 輸出攝取到 SageMaker Feature Store 特徵群組中。匯出精靈從 flow 輸出綱要建立特徵群組綱要。匯出後,特徵可從 online store(低延遲即時推理)和 offline store(S3 Parquet,用於訓練)查詢。

匯出為 SageMaker Pipeline Step

產生一個可加入 SageMaker Pipeline 的 ProcessingStep 定義。Flow 作為 pipeline DAG 中的一個步驟執行,輸入輸出 S3 路徑在 pipeline 執行時參數化。

匯出為 Python 程式碼

為了完全的程式化控制,將 flow 匯出為 Python 腳本(PySpark 或 Pandas),可進行編輯和版本控制。這是當視覺 UI 用於原型設計但部署的 pipeline 存在於 Git 中的產品工作流程的推薦路徑。

特徵重要性與 Quick Model 報告

Data Wrangler 內建了對特徵品質的快速回饋迴路。

Quick Model 報告

一鍵式 XGBoost 模型,在樣本上訓練,帶有交叉驗證的 F1(分類)或 MSE(迴歸)以及特徵重要性。在投入完整訓練管線前,用它驗證特徵是否具有預測訊號。

Bias 報告

針對敏感特徵(例如人口統計屬性)的內建公平性分析。輸出:類別不平衡、標籤不平衡和其他公平性指標。不同於 SageMaker Clarify(後者是專用的完整偏差與可解釋性服務)。

Target Leakage Detection

快速檢查是否有特徵能輕易預測目標(通常是資料洩漏的跡象——例如把 is_fraud_label 作為特徵)。訓練前的關鍵檢查。

Multicollinearity Detection

報告高度相關的特徵。幫助決定線性模型中哪些要刪除,因為線性模型假設特徵獨立。

為何報告很重要

Quick model 和 bias 報告將迭代週期從「建構完整管線、訓練完整模型、看到失敗」縮短到「點擊報告、看到問題、修正 flow」。在 MLA-C01 考試中,「訓練前快速驗證特徵是否有用」→ Data Wrangler quick model。

Data Wrangler 常見考試陷阱

陷阱一 — Data Wrangler 與 DataBrew 可以互換

錯。Data Wrangler 以 SageMaker 為中心,針對 ML,匯出至 Feature Store 和 Pipelines。DataBrew 以 Glue 為中心,通用目的,匯出至 S3 和 Glue Catalog。

陷阱二 — Data Wrangler 本身就可投入產品

部分正確。互動式 flow 在樣本上執行以獲得快速回饋。產品執行需要匯出至 SageMaker Processing 或 Pipelines。Flow 是設計文件,不是產品執行時期。

陷阱三 — Label Encoding 對類別資料總是安全的

錯。Label encoding 隱含有序順序。只對真正有序的類別安全。對名義類別(國家、顏色),使用 one-hot encoding(低基數)或 hashing/embedding(高基數)。

陷阱四 — Mean Imputation 永遠是正確的預設值

錯。當缺失與目標有相關性時,mean imputation 會引入偏差。謹慎填補時使用 KNN 或 MICE;缺失作為訊號時,加入 indicator column。

陷阱五 — SMOTE 是通用不平衡解方

部分正確。SMOTE 對中等不平衡和結構化表格資料效果良好。對極端不平衡(低於 0.1%)或文字/圖像資料,結合 class weights 並考慮 undersampling。直接對原始文字或圖像做 SMOTE 無效——在像素空間插值毫無意義。

陷阱六 — Data Wrangler 取代 Glue ETL

錯。Data Wrangler 用於 SageMaker 內的 ML 特徵工程。Glue ETL 用於服務多個消費者(BI、倉儲、ML)的通用資料湖轉換。產品架構通常兩者都用——Glue 用於整個資料湖的 curation,Data Wrangler 用於 ML 特定的特徵推導。

陷阱七 — Quick Model 報告等同於完整模型評估

錯。Quick model 是對樣本的快速 XGBoost,用於特徵驗證回饋。它取代完整訓練、超參數調優和嚴格評估。

Data Wrangler 用於 SageMaker Studio 中的互動式特徵工程;SageMaker Processing 是產品執行引擎;Data Wrangler 將 flow 匯出為 Processing jobs 和 Pipeline steps 來橋接兩者。 這是 MLA-C01 考試反覆回到的心智模型。互動 UI 用於探索和原型設計。匯出的 flow 是產品文件。相同的 flow 定義在兩個階段都執行——保證訓練時與推理時的前處理完全一致,這就是 Feature Store 和 Pipelines 消除 training-serving skew 的方法。每次題幹說「SageMaker Studio 中的特徵工程」→ Data Wrangler。「執行相同轉換的產品管線」→ 匯出為 Processing 或 Pipeline step。

Data Wrangler Flow 架構 — 來源(S3、Athena、Redshift、Snowflake)匯入 SageMaker Studio 中的 Data Wrangler flow,套用轉換(編碼、縮放、填補、平衡),產生報告(quick model、偏差、洩漏),flow 匯出至 S3、Feature Store、SageMaker Processing,或作為 SageMaker Pipeline ProcessingStep 用於產品執行。

決策矩陣 — 特徵工程服務選擇

使用案例 正確服務 錯誤答案陷阱
Studio 中的互動式 ML 特徵工程 SageMaker Data Wrangler Glue DataBrew
資料工程師的視覺化資料準備 Glue DataBrew Data Wrangler
TB 規模的產品特徵工程 SageMaker Processing(Spark) Data Wrangler 互動式
無順序的類別特徵,低基數 One-hot encoding Label encoding
有順序的類別特徵(S/M/L/XL) Ordinal encoding One-hot encoding
0.5% 正類的詐騙偵測 SMOTE + class weights 天真 oversampling
30% 缺失值,準確度重要 MICE imputation 刪除列
重尾數值(收入、計數) Log transform Min-max scaling
時間序列預測特徵 Lag + rolling window + timestamp 分解 僅原始 timestamp
匯出特徵管線至產品 Pipeline ProcessingStep 一次性 S3 匯出

MLA-C01 必記關鍵數字

  • Data Wrangler 預設樣本:50,000 列(可設定)
  • 300+ 內建轉換
  • 匯出目標:S3、Feature Store、Processing job、Pipelines step、Python 程式碼
  • 內建 Processing 容器:SKLearnProcessor、PySparkProcessor、PyTorchProcessor、ScriptProcessor
  • One-hot encoding 基數閾值:通常 < 100 個唯一值
  • 不平衡訓練的 class weights:XGBoost 中的 scale_pos_weight
  • SMOTE:合成少數類別過採樣,在 K 個最近少數類別鄰居之間插值

MLA-C01 exam priority — SageMaker Data Wrangler 與特徵工程 — MLA-C01 ML Engineer 學習筆記. This topic carries weight on the MLA-C01 exam. Master the trade-offs, decision boundaries, and the cost/performance triggers each AWS service exposes — the exam will test scenarios that hinge on knowing which service is the wrong answer, not just which is right.

Common MLA-C01 trap on this topic. Watch for distractor answers that conflate similar services or default-off configurations. Read each option carefully — the exam frequently rewards candidates who notice that a 'works' answer would still leave a hidden security, cost, or operational gap.

FAQ — SageMaker Data Wrangler 與特徵工程常見問題

Q1 — 何時應使用 SageMaker Data Wrangler 而非 AWS Glue DataBrew?

兩者都是視覺化資料轉換工具,感覺相似,但它們存在於不同的服務中並在不同的點整合。當你是在 SageMaker Studio 工作的 ML 工程師或資料科學家、輸出目標是 Feature Store 或 SageMaker Pipeline,且你的轉換是 ML 特定的(用於下游模型的編碼、用於類別平衡的 SMOTE、時間序列 lag 特徵)時,使用 Data Wrangler。當你是在 S3 中產出 curated 資料集的資料工程師、輸出服務多個消費者(BI、倉儲、ML),且你的工作整合 Glue Data Catalog 和 Lake Formation 時,使用 Glue DataBrew。MLA-C01 題幹訊號「SageMaker Studio 的 ML 工程師,匯出至 Feature Store」→ Data Wrangler。「資料工程師產出 Glue Catalog 資料表供 Athena 使用」→ DataBrew。兩者不是競爭關係——產品架構通常兩者都用。

Q2 — 如何處理只有 0.5% 正類的詐騙偵測資料集?

結合三種技術。首先,在 Data Wrangler 中使用 SMOTE 透過在現有少數樣本之間插值生成合成少數類別樣本——產出含真實合成資料的平衡訓練集。其次,設定訓練演算法的 class weights(XGBoost 設 scale_pos_weight=200 用於 0.5% 正類),讓損失函數對少數類別錯誤的懲罰比多數類別重 200 倍。第三,用能處理不平衡的指標評估——精確率、召回率、F1、AUC-ROC,尤其是 AUC-PR(精確率-召回率曲線)——絕不只用準確率,後者對永遠預測「非詐騙」的模型會得到 99.5%。天真的 oversampling(複製少數列)是錯誤答案陷阱,因為它讓模型記憶複製品並過擬合。SMOTE + class weights + 適當指標的組合是產品級答案。

Q3 — 國家欄位應使用 one-hot encoding 還是 label encoding?

One-hot encoding。國家是名義類別(無固有順序——日本不比英國「更大」),所以 label encoding(把國家映射為整數 0、1、2、3)引入了模型會利用的虛假序數關係。對低基數名義類別(通常低於 100 個唯一值)使用 one-hot encoding。對高基數名義類別(例如有 40,000+ 個值的郵遞區號),改用 feature hashing 或 embedding——one-hot 會爆炸特徵空間。Label encoding 只對真正有序的類別安全,例如教育程度(high_schoolbachelormasterphd)中整數順序與語義順序一致的情況。MLA-C01 的陷阱是用 label encoding 在名義資料上,因為它產生較少欄位;這個陷阱會讓你的模型準確度降低。

Q4 — 如何把 Data Wrangler flow 從互動式原型設計移至產品管線?

標準路徑有三步。第一步,在 Data Wrangler 中確定 flow,用 Quick Model 報告和資料品質/偏差報告驗證。第二步,透過 Data Wrangler Export 選單匯出 flow——選擇「SageMaker Pipeline」產生 ProcessingStep 定義,或選「Python 程式碼」以獲得完全的程式化控制。第三步,把步驟接入 SageMaker Pipeline,與訓練、評估和部署步驟一起。匯出的步驟是參數化的——pipeline 參數在執行時覆蓋輸入/輸出 S3 路徑,讓相同的 flow 定義在開發、暫存和產品環境中對不同資料集執行。這個匯出至 Pipeline 的模式就是消除 training-serving skew 的方法:相同的 flow 在訓練時和推理前處理時都執行,保證一致的特徵轉換。

Q5 — 何時應使用 MICE imputation 而非 mean imputation 處理缺失值?

根據缺失嚴重程度和準確度要求來選擇。Mean / median / mode imputation 快速且簡單——缺失低於 5% 時偏差可忽略。MICE(Multiple Imputation by Chained Equations) 更準確,因為它使用其他欄位上的迴歸迭代地填補每個欄位——適合缺失 20-40% 時天真填補會扭曲分佈的情況。當準確度很重要、有算力,且缺失與其他特徵有相關性時(MICE 能捕捉相關性;mean imputation 不能)使用 MICE。缺失超過 40% 時,考慮是否應完全刪除欄位,或在缺失本身有訊號時用 _was_missing indicator 取代。Data Wrangler 提供兩者作為內建轉換;選擇取決於成本(MICE 更昂貴)和準確度要求。

Q6 — Data Wrangler 取代 SageMaker Processing 還是兩者一起用?

兩者相輔相成,不是競爭關係。Data Wrangler 是 SageMaker Studio 中的互動式特徵工程 UI——用於在樣本上探索、原型設計和快速迭代。SageMaker Processing 是在託管基礎設施上以完整資料規模執行前處理腳本的產品執行引擎。標準產品模式:資料科學家在 Data Wrangler 中互動式設計特徵管線,然後將 flow 匯出為 Processing job 腳本(或作為包裝 Processing 的 SageMaker Pipeline step),ML 工程師把它接入產品訓練和推理管線。兩個階段使用相同的 flow 定義——Data Wrangler 在設計時,Processing 在執行時——保證產品管線完全複製原型中有效的方法。MLA-C01 題幹「ML 工程師在 Studio 迭代特徵,然後推向產品」對應 Data Wrangler flow → Processing job 匯出。

延伸閱讀 — 官方 AWS 文件

深入 MLA-C01 範圍的權威 AWS 來源包括:SageMaker Developer Guide Data Wrangler 章節(尤其是 Transform、Balance 和 Export 頁面)、SageMaker Processing job 文件、SageMaker Feature Store developer guide、SageMaker Pipelines step type 參考,以及 AWS Well-Architected Framework 的 Machine Learning Lens。AWS Machine Learning Blog 有多篇端到端教學文章展示 Data Wrangler flows 匯出至產品管線,AWS Skill Builder MLA-C01 考試準備課程包含一個動手實驗,讓你建構 Data Wrangler flow、匯出至 Feature Store,並對匯出的特徵執行訓練任務。

官方資料來源

更多 MLA-C01 主題