一、學習目標
讀完這篇,你會知道:
- AI 資料從「收集」到「可以訓練」要經過哪八個步驟?
- 資料清理時缺失值、異常值、重複值各怎麼處理?
- 資料標注有哪些方式?Label Studio 和 Snorkel 是什麼?
- 資料分割策略:隨機 / 分層 / 時序 / 交叉驗證,各自適用什麼場景?
- 特徵工程五大技術是什麼?PCA 在做什麼?
- 資料增強怎麼讓訓練資料「變多」?SMOTE 解決什麼問題?
- DVC / MLflow 怎麼幫你管理資料版本?
- GDPR、去識別化、差分隱私在 AI 開發中的意義?
二、核心內容
2-1|八大流程總覽——餐廳備餐比喻
把 AI 資料處理流程想成一家米其林餐廳的備餐 SOP:
┌─────────────────────────────────────────────────────────┐
│ AI 資料處理八大流程 │
│ │
│ ① 收集 → ② 清理 → ③ 標注 → ④ 分割 │
│ 買食材 洗菜切菜 貼標籤分類 分裝備用 │
│ │
│ ⑤ 特徵工程 → ⑥ 增強 → ⑦ 儲存版控 → ⑧ 法遵 │
│ 調味萃取 做庫存備份 冷凍保鮮分批 食安規範 │
│ │
└─────────────────────────────────────────────────────────┘
考試重點:這八個步驟不一定完全線性,但「清理必須在標注前」、「分割必須在訓練前」是基本原則。法遵(倫理合規)應貫穿整個流程,不是只在最後才考慮。
2-2|第一步:資料收集(Data Collection)
比喻:早上去市場採買,決定要買什麼、從哪個攤位買。
四大收集管道:
| 管道 | 英文 | 比喻 | 工具 / 例子 |
|---|---|---|---|
| API 串接 | API Integration | 超市直送:標準介面、品質穩定 | Twitter API、Google Maps API、氣象資料 API |
| 網路爬蟲 | Web Scraping | 市場掃貨:量大但品質參差不齊 | Scrapy、BeautifulSoup、Selenium |
| 感測器 / IoT | Sensor / IoT | 農場直送:即時、大量、連續串流 | 工廠機台、智慧家電、醫療監測設備 |
| 公開資料集 | Open Datasets | 現成食材包:整理好可以直接用 | ImageNet、Kaggle、政府開放資料 |
考試重點:網路爬蟲在使用前必須確認robots.txt 規範和目標網站的服務條款,涉及版權和法律問題。收集到的是原始資料(Raw Data),不能直接訓練。
2-3|第二步:資料清理(Data Cleaning)
比喻:把買回來的菜洗乾淨、去掉爛掉的部分、把重複買的退掉。
三大清理任務:
| 問題類型 | 英文 | 比喻 | 常見處理方法 |
|---|---|---|---|
| 缺失值 | Missing Values | 菜已經爛掉了,缺了一塊 | 刪除該筆資料 / 均值填補 / 中位數填補 / 模型預測填補 |
| 異常值 | Outliers | 進了一顆超級大的異形番茄 | Z-score 過濾 / IQR 方法 / 視覺化後手動審查 |
| 重複值 | Duplicates | 同一顆高麗菜買了三顆 | 對比主鍵或全欄位去重 |
缺失值處理策略比較:
| 策略 | 適用情境 | 風險 |
|---|---|---|
| 刪除整筆 | 缺失比例 < 5%,且是隨機缺失 | 可能損失重要資料 |
| 均值 / 中位數填補 | 數值型資料、分佈接近常態 | 可能壓縮資料變異性 |
| 眾數填補 | 類別型資料 | 可能引入偏誤 |
| 模型預測填補 | 缺失量大,資料有明顯關聯性 | 計算成本高 |
常用工具:pandas(Python)的 .dropna()、.fillna();scikit-learn 的 SimpleImputer、KNNImputer。
考試重點:異常值不一定是「錯誤」,有時是真實的極端事件(例如黑色星期五的異常高銷售量),刪除前要先判斷業務意義。
2-4|第三步:資料標注(Data Labeling)
比喻:請專業人員把每一顆食材貼上標籤「這是有機蔬菜」、「這是基因改造大豆」。
四大標注策略:
| 策略 | 英文 | 比喻 | 適用場景 | 成本 |
|---|---|---|---|---|
| 人工標注 | Human Labeling | 自家員工一個一個貼 | 高精度需求、醫療/法律領域 | 最高 |
| 專家標注 | Expert Labeling | 請米其林大廚來鑑定 | 需要領域知識(如放射科醫師標注 X 光) | 極高 |
| 群眾外包 | Crowdsourcing | 在網路上雇用兼職打工仔 | 一般物件辨識、文字分類 | 中等 |
| 弱監督標注 | Weak Supervision | 設定規則讓程式自動貼標(可能不準確) | 資料量龐大、快速迭代 | 最低 |
主動學習(Active Learning):
不是一次標注所有資料,而是讓 AI 模型自己「挑選」它最不確定的資料請人標注,用最少的標注量達到最高的模型效果。
┌──────────────────────────────────────────────┐
│ 主動學習流程 │
│ │
│ [少量標記資料] → 訓練初始模型 │
│ ↓ │
│ 模型選出「最不確定的 N 筆」→ 送給標注員 │
│ ↓ │
│ 標注完成 → 加入訓練集 → 重新訓練 │
│ ↓ │
│ 重複直到效能達標(標注量遠少於全量標注) │
└──────────────────────────────────────────────┘
常用工具:
- Label Studio:開源的多功能標注平台,支援圖片、文字、音訊
- Snorkel:弱監督學習框架,用「標注函數(Labeling Functions)」自動產生噪聲標籤再去噪
考試重點:**弱監督學習(Weak Supervision)**的核心是用「低品質大量標籤」取代「高品質少量標籤」,Snorkel 是這個領域的代表工具。
2-5|第四步:資料分割(Data Splitting)
比喻:食材備好後,分成「現在用」、「測試新菜色用」、「最後驗收用」三份。
四大分割策略:
| 策略 | 英文 | 適用場景 | 注意事項 |
|---|---|---|---|
| 隨機分割 | Random Split | 資料量大、各類別分佈均勻 | 最簡單,但可能造成類別不均 |
| 分層分割 | Stratified Split | 類別資料、不均衡資料集 | 確保每個子集的類別比例與原始一致 |
| 時序分割 | Time-series Split | 時間序列資料(股票、氣象) | 絕對不能隨機分——不能用未來預測過去 |
| K 折交叉驗證 | K-Fold Cross Validation | 資料量少、需要可靠的效能估計 | 訓練 K 次取平均,計算成本 K 倍 |
為什麼時序資料不能隨機分割?
┌──────────────────────────────────────────────────────┐
│ 時序資料分割示範(以月份為例) │
│ │
│ 錯誤做法(隨機分割): │
│ 訓練集:1月、3月、5月、7月、9月 │
│ 測試集:2月、4月、6月、8月、10月 │
│ → 用未來資料預測過去,結果虛高! │
│ │
│ 正確做法(時序分割): │
│ 訓練集:1月 → 7月(前 70%) │
│ 驗證集:8月(中間 15%) │
│ 測試集:9月 → 10月(最後 15%) │
│ → 永遠用「過去」預測「未來」 │
└──────────────────────────────────────────────────────┘
考試重點:分層抽樣(Stratified Sampling) 是處理類別不均衡資料集的標準做法,確保稀有類別在訓練集和測試集都有足夠代表性。
2-6|第五步:特徵工程(Feature Engineering)
比喻:廚師把食材切絲、榨汁、熬成高湯——把原始食材轉化成最適合烹飪的狀態。
特徵工程五大技術:
| 技術 | 英文 | 比喻 | 例子 |
|---|---|---|---|
| 特徵轉換 | Feature Transformation | 把整條魚切成魚片、魚骨高湯 | 對數轉換、標準化(StandardScaler)、正規化(MinMaxScaler) |
| 特徵編碼 | Feature Encoding | 把「牛肉 / 豬肉 / 雞肉」翻譯成數字 | One-Hot Encoding、Label Encoding、Target Encoding |
| 特徵選擇 | Feature Selection | 只保留對菜色最重要的食材,丟掉多餘的 | 相關係數過濾、LASSO 正則化、隨機森林特徵重要性 |
| 特徵構建 | Feature Construction | 用現有食材做出新的半成品 | 從出生日期算年齡、從交易紀錄算平均消費金額 |
| 降維 | Dimensionality Reduction | 把 100 種香料壓縮成 3 種精華調味包 | PCA(主成分分析)、t-SNE、UMAP |
PCA(主成分分析,Principal Component Analysis)白話解釋:
想像你有一張 1000 維的資料(1000 個特徵),PCA 幫你找到「最能保留資訊的方向」,把 1000 維壓縮成 10 維,而且儘量不損失太多資訊。
┌───────────────────────────────────────────────────┐
│ PCA 概念圖 │
│ │
│ 原始資料:身高、體重、BMI、腰圍(4個特徵,有相關) │
│ ↓ PCA │
│ 主成分1:「身材大小」方向(解釋 80% 變異) │
│ 主成分2:「體型比例」方向(解釋 15% 變異) │
│ ↓ │
│ 4個特徵 → 2個主成分,保留 95% 資訊 │
└───────────────────────────────────────────────────┘
考試重點:特徵工程在傳統機器學習中至關重要,深度學習(尤其 CNN)能自動學習特徵,但結構化資料仍需要手動特徵工程。One-Hot Encoding 把類別變成二進位向量,避免模型誤以為類別有大小關係。
2-7|第六步:資料增強(Data Augmentation)
比喻:食材不夠了,把已有的食材用不同方式加工,創造更多備用食材。
三大資料類型的增強方法:
| 資料類型 | 增強技術 | 比喻 | 例子 |
|---|---|---|---|
| 圖像資料 | 旋轉、翻轉、縮放、色彩調整、裁切、加噪聲 | 把同一道菜從不同角度拍照 | 貓咪照片左右翻轉 → 還是貓咪,但模型見過更多「角度」 |
| 文字資料 | 同義詞替換、回譯(Back Translation)、隨機刪除 | 把同一道食譜翻成英文再翻回中文 | 「快樂」→「開心」、「喜悅」 |
| 音訊資料 | 加入背景噪聲、改變音調、時間拉伸 | 在不同噪音環境中錄同一句話 | 安靜房間錄音 + 加入咖啡廳背景聲 |
SMOTE(Synthetic Minority Over-sampling Technique):
不是用在圖像或文字,而是用在類別不均衡的表格資料。
比喻:你的訓練資料裡有 9900 個「正常交易」和 100 個「詐欺交易」,模型全猜「正常」就有 99% 準確率,但完全沒學到詐欺特徵。SMOTE 解法:在少數類別的樣本之間「插值」,合成新的假樣本,把少數類別補到一定比例。
┌──────────────────────────────────────────────────────┐
│ SMOTE 運作示意 │
│ │
│ 原始:●●●●●●●●●● (正常 9900) vs ★★ (詐欺 100) │
│ │
│ SMOTE 在 ★ 和 ★ 之間插值,生成 ★' ★'' ★''' ... │
│ │
│ 增強後:●●●●●●●●●● vs ★★★★★★★★★★ (詐欺 → 1000+) │
│ → 模型有更多詐欺樣本可以學習 │
└──────────────────────────────────────────────────────┘
考試重點:資料增強的目的是增加訓練集多樣性、防止過擬合,但只能用在訓練集,絕對不能用在驗證集或測試集(否則評估結果失真)。
2-8|第七步:資料儲存與版本控制(Storage & Versioning)
比喻:廚房的冰箱管理——食材要分門別類、標記日期、知道哪個版本的高湯是上個月熬的。
AI 資料管理的三大工具:
| 工具 | 用途 | 比喻 |
|---|---|---|
| DVC(Data Version Control) | 追蹤資料集的版本變化,類似 Git 但用於大型資料 | Git 用來管程式碼;DVC 用來管資料集 |
| MLflow | 追蹤實驗(模型版本、超參數、結果指標) | 每次試菜的食譜和評分全部記錄下來 |
| Data Lake(資料湖) | 儲存原始、多格式、大量資料,需要時再取用 | 超大冷凍庫,原料全部丟進去,要用時再拿 |
Data Lake vs Data Warehouse(資料倉儲)比較:
| 特性 | Data Lake | Data Warehouse |
|---|---|---|
| 資料格式 | 任意格式(結構化 + 非結構化) | 僅結構化資料 |
| 資料處理時機 | 存入時不處理(Schema-on-read) | 存入時就整理好(Schema-on-write) |
| 查詢速度 | 較慢,需要先處理 | 快,已優化 |
| 適用場景 | AI / ML 訓練、探索性分析 | 商業報表、BI 分析 |
考試重點:DVC 讓資料集和模型訓練結果可以像程式碼一樣「版本回滾」,是 MLOps 的核心工具之一。當你的資料集更新後,DVC 可以追蹤「是哪版資料訓練出哪版模型」。
2-9|第八步:倫理與法遵(Ethics & Compliance)
比喻:食安法規——你的食材來源合法嗎?有沒有過期?有沒有標示過敏原?
四大隱私保護技術:
| 技術 | 英文 | 做什麼 | 比喻 |
|---|---|---|---|
| 去識別化 | Anonymization | 永久移除所有個人識別資訊,無法還原 | 把菜單上的名字全部塗掉,連塗掉的格式都不保留 |
| 假名化 | Pseudonymization | 用假名替換真實身份,有金鑰才能還原 | 把「王小明」換成「User-9527」,有表格才能對回去 |
| 差分隱私 | Differential Privacy | 在輸出結果加入數學噪聲,讓個人資料無法被推算 | 調查問卷:有 50% 機率如實回答,否則隨機回答,統計上仍然有意義 |
| 聯邦學習 | Federated Learning | 資料不集中,模型到各地端訓練,只回傳梯度 | 每家分店只分享「學到的技術」,不分享「顧客資料」 |
GDPR(一般資料保護規則)核心原則:
| 原則 | 白話說明 | AI 開發影響 |
|---|---|---|
| 目的限制 | 收集資料只能用於說明的目的 | 不能把客服資料拿去訓練廣告模型 |
| 資料最小化 | 只收集任務必要的資料 | 不要收集「備用」資料 |
| 被遺忘權 | 用戶可要求刪除其所有資料 | 模型訓練後要能移除特定用戶的影響 |
| 可解釋性 | 自動化決策必須能解釋 | 高風險 AI(如信貸審核)不能是黑盒子 |
考試重點:去識別化(Anonymization) 是不可逆的;假名化(Pseudonymization) 是可逆的(有金鑰)。GDPR 認定假名化資料仍屬個人資料,去識別化後才不受 GDPR 管轄。
三、關鍵名詞中英對照
| 中文 | 英文 | 一句話解釋 |
|---|---|---|
| 資料清理 | Data Cleaning | 處理缺失值、異常值、重複值 |
| 缺失值 | Missing Values | 資料中有欄位沒有數值 |
| 異常值 | Outliers | 與正常分佈差異極大的數值 |
| 資料標注 | Data Labeling | 為資料加上正確答案標籤 |
| 弱監督 | Weak Supervision | 用低品質標籤大量訓練 |
| 主動學習 | Active Learning | 模型主動挑選最有價值的樣本請人標注 |
| 分層抽樣 | Stratified Sampling | 確保各類別比例一致的資料分割方式 |
| 特徵工程 | Feature Engineering | 將原始資料轉化成模型可以有效學習的特徵 |
| 主成分分析 | PCA | 將高維資料壓縮到低維,保留最多資訊 |
| One-Hot 編碼 | One-Hot Encoding | 將類別轉為二進位向量,避免大小順序問題 |
| 資料增強 | Data Augmentation | 對現有資料做變形,創造更多訓練樣本 |
| SMOTE | SMOTE | 合成少數類別樣本,處理類別不均衡問題 |
| 資料版本控制 | Data Version Control (DVC) | 追蹤資料集版本,類似資料的 Git |
| 資料湖 | Data Lake | 儲存原始多格式資料的大型儲存體 |
| 去識別化 | Anonymization | 永久移除個人識別資訊,不可還原 |
| 假名化 | Pseudonymization | 用假名替換身份,有金鑰可還原 |
| 差分隱私 | Differential Privacy | 加入數學噪聲保護個人隱私 |
| GDPR | GDPR | 歐盟個人資料保護法規 |
四、考試重點提示
必背清單:
- 八大流程順序:收集 → 清理 → 標注 → 分割 → 特徵工程 → 增強 → 儲存版控 → 法遵
- 缺失值三大策略:刪除 / 填補 / 預測
- 時序資料分割不能隨機,必須依時間順序切割
- SMOTE 解決類別不均衡問題,不是讓資料變多那麼簡單
- 去識別化(不可逆)vs 假名化(可逆),GDPR 只對假名化資料有管轄
- DVC 管資料版本;MLflow 管實驗記錄
- 資料增強只能用在訓練集,不能用在測試集
易混淆比較:
| 常搞混的 | 差別在哪 |
|---|---|
| 資料增強 vs SMOTE | 增強用在圖像 / 文字 / 音訊;SMOTE 用在結構化資料的類別不均衡 |
| Label Studio vs Snorkel | Label Studio 是人工標注平台;Snorkel 是程式化弱監督標注框架 |
| DVC vs MLflow | DVC 管資料集版本;MLflow 管模型訓練實驗記錄 |
| Data Lake vs Data Warehouse | Lake 存原始多格式資料;Warehouse 存整理好的結構化資料 |
| 去識別化 vs 假名化 | 去識別化不可逆,不受 GDPR 管;假名化可逆,仍受 GDPR 管 |
| 隨機分割 vs 分層分割 | 隨機可能讓少數類別全進測試集;分層確保比例一致 |
Q1. 你的資料集中有 5% 的「詐欺交易」和 95% 的「正常交易」,最適合用哪種方式讓模型學到更多詐欺特徵?
- (A) 隨機分割
- (B) K-Fold 交叉驗證
- (C) SMOTE 合成少數類別樣本
- (D) PCA 降維
Q2. 使用時間序列資料(如每日股價)訓練預測模型時,資料分割應該使用哪種方式?
- (A) 隨機分割(Random Split)
- (B) 分層抽樣(Stratified Split)
- (C) 時序分割(Time-series Split)
- (D) K-Fold 交叉驗證
Q3. 下列關於去識別化(Anonymization)與假名化(Pseudonymization)的敘述,哪個正確?
- (A) 兩者在 GDPR 下都不受管轄
- (B) 去識別化可以透過金鑰還原;假名化不可還原
- (C) 去識別化不可還原,GDPR 不再管轄;假名化仍視為個人資料
- (D) 兩者都可以透過金鑰還原
Q4. Label Studio 和 Snorkel 的主要差異是什麼?
- (A) Label Studio 用於圖像;Snorkel 用於文字
- (B) Label Studio 是人工標注平台;Snorkel 是弱監督程式化標注框架
- (C) Label Studio 免費;Snorkel 需要付費
- (D) 兩者功能相同,只是介面不同
Q5. 資料增強(Data Augmentation)的正確使用原則是?
- (A) 可以同時用在訓練集和測試集,讓評估更可靠
- (B) 只能用在測試集,訓練集不需要增強
- (C) 只能用在訓練集,不能用在驗證集和測試集
- (D) 只能用在圖像資料,不能用在文字和音訊
解答與解析
| 題號 | 答案 | 解析 |
|---|---|---|
| Q1 | (C) | 詐欺交易只有 5% 是典型的類別不均衡問題,SMOTE 透過在少數類別樣本間插值合成新樣本,讓模型有足夠的詐欺樣本可學。PCA 是降維工具,不解決類別不均衡;隨機分割和 K-Fold 是分割策略,不增加少數類別樣本數。 |
| Q2 | (C) | 時間序列資料有時間順序,如果隨機分割,會用「未來資料」預測「過去」,造成資料洩漏,評估結果嚴重失真。必須用時序分割,永遠保持「用過去預測未來」的方向。 |
| Q3 | (C) | 去識別化(Anonymization)是不可逆操作,移除所有識別資訊後,GDPR 不再視其為個人資料;假名化(Pseudonymization)用假名替換但保留還原金鑰,GDPR 仍視其為個人資料,受到管轄。 |
| Q4 | (B) | Label Studio 是視覺化的標注工具平台,標注員可以手動點選標記圖片、文字等;Snorkel 是程式化弱監督框架,讓工程師撰寫「標注規則函數」來批次自動標注,適合大規模資料。 |
| Q5 | (C) | 資料增強只能用在訓練集。如果對測試集也做增強,等於改變了「原始真實分佈」,評估結果不再代表模型在真實世界的表現。驗證集同理,也不能增強。 |