AI 工程從零開始|Phase 2 Part 1:傳統機器學習 — 生產 AI 的骨幹

「任何問題都用深度學習解決」 「Transformer 萬能,傳統模型已經過時」 ——這是 80% 初學者的第一直覺。 正確的工程師問的是:資料量多少?延遲需求是幾 ms?可解釋性重要嗎?預算有多少? 再選模型。


面試情境

你的電商平台每天有 50 萬筆訂單,需要即時預測「這筆訂單是否為詐騙」,要求推論延遲 < 5ms、需要提供法務可稽核的決策理由、訓練資料有 200 萬筆歷史記錄(其中詐騙率 0.3%)。你會選擇哪種模型?為什麼?


一、核心問題:深度學習時代為什麼還要學傳統 ML

2024 年,ChatGPT 席捲世界,LLM 成為媒體焦點。許多工程師開始質疑:傳統機器學習是否已成歷史?

答案是:不,傳統 ML 在生產系統中的佔比仍超過 80%。

原因很直接:

1. 資料量的現實

大多數企業的結構化資料集在 10 萬至 500 萬筆之間。神經網路在這個規模下通常不比梯度提升樹更好,卻需要 10–100 倍的計算資源。

2. 延遲的硬需求

金融風控、廣告競價、即時推薦的推論預算通常是 1–10ms。線性模型推論 < 0.1ms,決策樹 < 1ms,而即使是小型神經網路也需要 10–50ms(CPU),加上批次化開銷後更長。

3. 可解釋性的法規壓力

歐盟 GDPR、台灣個資法、金融監理機關都要求「自動化決策必須能解釋」。邏輯回歸的係數、決策樹的規則路徑可以直接呈給法務;神經網路的注意力權重不能。

4. 維護成本的差距

一個訓練好的 XGBoost 模型可以用 pickle 序列化,部署到任何有 Python 的環境。不需要 GPU,不需要特殊推論框架,oncall 工程師看得懂特徵重要性。

5. 過擬合風險

資料少、特徵少的場景,深度模型反而容易過擬合。L1/L2 正則化的線性模型在小資料集上往往比 5 層 MLP 表現更穩定。

傳統 ML 的適用邊界(速查表)

場景                    資料量        延遲需求      推薦模型
──────────────────────────────────────────────────────────────
結構化分類(詐騙偵測)  10K–10M      < 5ms        XGBoost / LogReg
數值回歸(房價預測)    1K–1M        < 10ms       Ridge / GBM
文字分類(垃圾郵件)    1K–500K      < 50ms       LogReg + TF-IDF
異常偵測(設備監控)    1K–100K      < 100ms      IsolationForest
推薦系統(協同過濾)    100K–50M     < 20ms       MF / LightFM
影像分類               > 10K        任意          CNN(深度學習)
序列生成(對話)        > 1M token   > 100ms      Transformer

二、三個演進階段(POC / MVP / Scale)— 傳統 ML 在不同規模的角色演進

╔══ Phase 1:POC(< 1 萬筆資料,< 1K QPS)══╗

目標:快速驗證假設,兩週內上線。

┌─────────────────────────────────────────────────────┐
│                  Phase 1 架構                        │
│                                                     │
│  原始資料(CSV)                                       │
│       │                                             │
│       ▼                                             │
│  ┌──────────────┐    sklearn Pipeline               │
│  │ 特徵工程      │    (StandardScaler +              │
│  │ (手動)        │     LogisticRegression)           │
│  └──────┬───────┘                                   │
│         │                                           │
│         ▼                                           │
│  ┌──────────────┐    pickle 序列化                   │
│  │  模型訓練     │──────────────────▶ model.pkl      │
│  └──────┬───────┘                                   │
│         │                                           │
│         ▼                                           │
│  ┌──────────────┐                                   │
│  │ Flask API    │  POST /predict → JSON             │
│  │ (單機)        │  latency: < 5ms                  │
│  └──────────────┘                                   │
└─────────────────────────────────────────────────────┘

選型:LogisticRegression 或 DecisionTreeClassifier。原因:參數少、可解釋、訓練快(< 1 秒)。

可接受的妥協:無模型版本管理、無 A/B 測試、無特徵 store。

成本:單一 t3.small EC2($0.023/hr),總月費 < $20。


╔══ Phase 2:MVP(10K–200K 筆資料,1K–10K QPS)══╗

目標:生產穩定,可監控,支援多個模型版本。

┌──────────────────────────────────────────────────────────────┐
│                      Phase 2 架構                             │
│                                                              │
│  資料倉儲(S3/BigQuery)                                        │
│       │                                                      │
│       ▼                                                      │
│  ┌─────────────┐     ┌─────────────────────────────────┐    │
│  │ 特徵工程     │────▶│  MLflow Experiment Tracking     │    │
│  │ Pipeline    │     │  (params, metrics, artifacts)   │    │
│  └──────┬──────┘     └─────────────────────────────────┘    │
│         │                                                    │
│         ▼                                                    │
│  ┌─────────────┐     ┌─────────────┐                        │
│  │  XGBoost /  │────▶│  Model      │                        │
│  │  LightGBM   │     │  Registry   │                        │
│  └──────┬──────┘     └──────┬──────┘                        │
│         │                   │                               │
│         ▼                   ▼                               │
│  ┌─────────────────────────────────────────────────────┐    │
│  │  推論服務 (FastAPI + uvicorn, 2 replicas)             │    │
│  │  ┌──────────┐  ┌──────────┐                         │    │
│  │  │ Model v1 │  │ Model v2 │  A/B traffic split      │    │
│  │  └──────────┘  └──────────┘                         │    │
│  └─────────────────────────────────────────────────────┘    │
│         │                                                    │
│         ▼                                                    │
│  ┌─────────────┐                                            │
│  │  監控        │  Prometheus + Grafana                     │
│  │  (漂移偵測)  │  特徵分布 PSI > 0.2 觸發警報              │
│  └─────────────┘                                            │
└──────────────────────────────────────────────────────────────┘

新增組件:MLflow、模型 registry、A/B 測試框架、PSI 漂移監控。

成本:3 × c5.xlarge($0.17/hr),MLflow server(t3.medium),月費約 $400–600。

解決的問題:模型可追蹤、可回滾、漂移時有告警。

仍未解決:特徵重複計算、大規模批次推論效率。


╔══ Phase 3:Scale(200K–10M 筆資料,> 10K QPS)══╗

目標:企業級,自動化重訓,成本最佳化。

┌─────────────────────────────────────────────────────────────────┐
│                       Phase 3 架構                               │
│                                                                 │
│  ┌──────────────────────────────────────────────────────────┐  │
│  │                  Feature Store (Feast/Hopsworks)          │  │
│  │  Online Store (Redis, < 1ms)  Offline Store (S3+Spark)   │  │
│  └──────────────────────┬───────────────────────────────────┘  │
│                         │                                       │
│          ┌──────────────┼──────────────┐                       │
│          ▼              ▼              ▼                       │
│  ┌──────────────┐ ┌──────────┐ ┌──────────────┐              │
│  │ 批次訓練      │ │ 線上學習  │ │ Shadow Mode  │              │
│  │ (Spark ML)   │ │ (River)  │ │ 新模型驗證    │              │
│  └──────┬───────┘ └────┬─────┘ └──────┬───────┘              │
│         │              │              │                        │
│         └──────────────┼──────────────┘                       │
│                        ▼                                       │
│              ┌─────────────────────┐                          │
│              │  Model Serving       │                          │
│              │  Triton / BentoML   │                          │
│              │  Auto-scaling k8s   │                          │
│              │  p99 latency < 2ms  │                          │
│              └─────────────────────┘                          │
└─────────────────────────────────────────────────────────────────┘

新增組件:Feature Store、線上學習、Shadow Mode 驗證、Kubernetes 自動擴縮。

成本:約 $3,000–8,000/月,但模型推論成本是 DL 方案的 1/10–1/50。


三、線性模型:回歸與分類基礎

3.1 線性回歸的幾何直覺

線性回歸在做的事情:在 n 維空間找一個超平面,使所有訓練點到該平面的垂直距離平方和最小。

y(目標變量)
▲
│    ○ ○
│  ○   ○
│○  /  ○
│  /
│ /  ← 最小化 Σ(yᵢ - ŷᵢ)²
│/
└──────────────────▶ x(特徵)

殘差(residual)= yᵢ - ŷᵢ
目標:min Σ residual²

數學形式:ŷ = w₀ + w₁x₁ + w₂x₂ + … + wₙxₙ

正規化版本

  • Ridge(L2):loss + λΣwᵢ² → 係數收縮,不為零,適合多重共線性
  • Lasso(L1):loss + λΣ|wᵢ| → 係數可降為零,自動特徵選擇
  • ElasticNet:兩者混合,λ₁L1 + λ₂L2

何時用 Ridge vs Lasso

  • 特徵數 > 樣本數 → Lasso(強迫稀疏)
  • 所有特徵都可能有用 → Ridge(平滑收縮)
  • 不確定 → ElasticNet(調 l1_ratio 參數)

實際性能數字

  • 訓練(10 萬筆,100 特徵):< 1 秒(sklearn)
  • 推論(單筆):< 0.1ms
  • 記憶體佔用:< 1MB

3.2 邏輯回歸的直覺

邏輯回歸 ≠ 回歸。它是分類器,用 Sigmoid 函數把線性輸出壓縮到 [0,1]:

P(y=1|x) = σ(wᵀx + b) = 1 / (1 + e^(-wᵀx))

Sigmoid 函數形狀:
1.0 │              ╭──────────
    │           ╭──╯
0.5 │         ──╯  ← 決策邊界(P = 0.5)
    │      ╭──╯
0.0 │────── ╯
    └──────────────────────────
         負值        正值   wᵀx

損失函數:Binary Cross-Entropy = -Σ[yᵢlog(ŷᵢ) + (1-yᵢ)log(1-ŷᵢ)]

關鍵優勢:輸出的 P 值直接是「機率」,可以調整閾值(預設 0.5)。例如詐騙偵測可以把閾值降到 0.3,提高召回率,代價是精確率下降。

多分類延伸:Softmax 回歸,輸出 K 個類別的機率分布,Σ = 1。

實際性能

  • 訓練(100K 筆,1000 特徵):2–5 秒
  • 推論(單筆):< 0.5ms
  • 可解釋性:係數 exp(wᵢ) 直接是 odds ratio

四、決策樹與規則學習

4.1 決策樹的構建原理

決策樹透過遞迴地選擇「最能分隔資料的特徵」來建立二元樹結構。

                 ┌─────────────────┐
                 │  Age > 35?      │
                 └────────┬────────┘
                          │
            ┌─────────────┴─────────────┐
           Yes                          No
            │                           │
   ┌────────▼────────┐        ┌─────────▼────────┐
   │ Income > 50K?   │        │  有信用記錄?      │
   └────────┬────────┘        └─────────┬────────┘
            │                           │
    ┌───────┴───────┐           ┌───────┴───────┐
   Yes              No         Yes               No
    │                │          │                 │
   ✅ 核准          ❌ 拒絕    ✅ 核准           ❌ 拒絕
   (信用良好)      (風險高)   (低風險)          (無記錄)

分裂標準

  • 分類問題:Gini Impurity 或 Information Gain(Entropy)
  • 回歸問題:均方誤差(MSE)減少量

Gini Impurity 計算:Gini = 1 - Σpᵢ²

  • 純節點(全同類):Gini = 0
  • 最混亂(均勻分布):Gini = 1 - 1/K

過擬合控制參數

  • max_depth:建議從 3–7 開始調整
  • min_samples_split:節點繼續分裂的最小樣本數
  • min_samples_leaf:葉節點最小樣本數
  • max_features:每次分裂考慮的特徵數(隨機森林的關鍵)

4.2 集成方法:從單棵樹到森林

單棵決策樹的問題:高方差(variance),對訓練資料敏感,容易過擬合。

解決方案

Bagging(Random Forest)

  • 對訓練集 Bootstrap 抽樣 B 次,各訓練一棵深樹
  • 預測時取平均(回歸)或多數投票(分類)
  • 降低方差,偏差基本不變
  • 100–500 棵樹,各用 √n 個特徵子集

Boosting(XGBoost / LightGBM)

  • 序列訓練,每棵新樹專門修正前一棵的殘差
  • 降低偏差,也有正則化控制方差
  • 通常比 Random Forest 準確率高 2–5%
  • 但訓練速度較慢,超參數更多

實際性能對比(100K 筆,50 特徵,二元分類)

模型              訓練時間   推論(單筆)  AUC    記憶體
────────────────────────────────────────────────────
LogisticRegression  2s       < 0.1ms    0.82   < 1MB
DecisionTree        1s       < 0.5ms    0.79   2MB
RandomForest(100)   30s      2–5ms      0.88   50MB
XGBoost             45s      1–3ms      0.91   30MB
LightGBM            15s      < 1ms      0.91   20MB
MLP(3層)            5min     5–20ms     0.89   100MB

結論:LightGBM 在表格資料上性價比最高,推論接近 XGBoost 但訓練快 3 倍。


五、支援向量機 SVM 的直覺

5.1 最大間隔分類器

SVM 的核心思想:找到一個決策邊界,使其與最近的訓練點(支援向量)之間的距離(間隔)最大化。

         類別 A (○)    類別 B (×)
              ○           ×
         ○        margin    ×
              ○  ←──────→  ×
         ○   │  決策邊界  │  ×
              ○  │        │  ×
              支援向量    支援向量
              (這些點決定邊界)

間隔 = 2 / ||w||
最大化間隔 ≡ 最小化 ||w||²

硬間隔 vs 軟間隔

  • 硬間隔:不允許任何誤分類,只適合線性可分資料
  • 軟間隔(C-SVM):允許部分誤分類,C 值控制懲罰強度
    • C 大 → 小間隔,低訓練誤差,易過擬合
    • C 小 → 大間隔,高訓練誤差,較好泛化

5.2 核函數技巧

線性不可分的資料,透過核函數把資料映射到高維空間,在高維空間線性可分。

低維(非線性可分)       高維(線性可分)
                          ───────────────
  ×  ×  ×                 ×  ×  ×
 × ○○○○○ ×    K(x,z)    ○ ○ ○ ○ ○
○○  ×  ×  ○○  ────────▶  × × × × ×
 × ○○○○○ ×              ───────────────
  ×  ×  ×
(圓形邊界)             (超平面邊界)

常用核函數

  • 線性核:K(x,z) = xᵀz(SVM 退化為線性分類器)
  • RBF(高斯核):K(x,z) = exp(-γ||x-z||²)← 最常用
  • 多項式核:K(x,z) = (xᵀz + c)ᵈ
  • Sigmoid 核:K(x,z) = tanh(αxᵀz + c)

RBF 核的超參數 γ

  • γ 大 → 每個點影響範圍小,邊界複雜,易過擬合
  • γ 小 → 每個點影響範圍大,邊界平滑,易欠擬合

SVM 的實際限制

  • 訓練複雜度 O(n²)–O(n³),10 萬筆以上很慢
  • 超過 50 萬筆資料,換用 SGD 分類器或 LightGBM
  • 不直接輸出機率(需要 Platt Scaling 後處理)

SVM 現在的主要用途:小樣本高維資料(生物醫學特徵 > 10K 維但樣本 < 1K)、文字分類的競爭基線。


六、特徵工程:從原始資料到模型輸入

特徵工程是傳統 ML 中最重要的技能。好的特徵可以讓簡單模型超過特徵差的複雜模型。

6.1 特徵工程完整流程

原始資料
    │
    ▼
┌───────────────────────────────────────────┐
│  1. 資料清理                               │
│  • 缺失值處理(均值/中位數/前向填充)        │
│  • 異常值偵測(IQR / Z-score)              │
│  • 重複資料移除                             │
└──────────────────────┬────────────────────┘
                       │
                       ▼
┌───────────────────────────────────────────┐
│  2. 數值特徵處理                            │
│  • 標準化(StandardScaler)z = (x-μ)/σ     │
│  • 正規化(MinMaxScaler)x' = (x-min)/range│
│  • 對數變換(右偏分布)log(x+1)             │
│  • 冪次變換(Box-Cox / Yeo-Johnson)        │
└──────────────────────┬────────────────────┘
                       │
                       ▼
┌───────────────────────────────────────────┐
│  3. 類別特徵處理                            │
│  • One-Hot Encoding(低基數,< 50 類)      │
│  • Label Encoding(有序類別)               │
│  • Target Encoding(高基數,> 100 類)      │
│  • Frequency Encoding(計算出現頻率)        │
└──────────────────────┬────────────────────┘
                       │
                       ▼
┌───────────────────────────────────────────┐
│  4. 特徵建構(Feature Construction)        │
│  • 交互特徵:age × income                  │
│  • 比率特徵:clicks / impressions(CTR)    │
│  • 時間特徵:hour_of_day, day_of_week      │
│  • 聚合特徵:user_avg_order_7day           │
└──────────────────────┬────────────────────┘
                       │
                       ▼
┌───────────────────────────────────────────┐
│  5. 特徵選擇(Feature Selection)           │
│  • 過濾法:相關係數、Chi-Square、ANOVA      │
│  • 包裝法:RFE(遞迴特徵消除)              │
│  • 嵌入法:Lasso 係數、樹模型特徵重要性     │
│  • 降維:PCA、t-SNE(探索)                │
└──────────────────────┬────────────────────┘
                       │
                       ▼
                  模型輸入特徵矩陣 X

6.2 關鍵特徵工程技術細節

Target Encoding 的洩漏問題

直接用訓練集的目標均值編碼類別,會造成資料洩漏。正確做法是 K-Fold Target Encoding:

1# 錯誤做法(洩漏)
2df['city_encoded'] = df.groupby('city')['target'].transform('mean')
3
4# 正確做法(K-Fold)
5from category_encoders import TargetEncoder
6encoder = TargetEncoder(smoothing=10)  # smoothing 防止小樣本過擬合

時間特徵提取(以電商訂單為例)

原始:timestamp = "2026-06-21 14:32:00"

提取特徵:
• hour = 14(下午購物高峰)
• day_of_week = 6(週日)
• is_weekend = 1
• month = 6
• days_since_last_purchase = 3
• hour_sin = sin(2π × 14/24)  ← 週期性編碼,避免 23→0 斷裂
• hour_cos = cos(2π × 14/24)

特徵重要性解讀

樹模型的特徵重要性有三種計算方式:

  • weight:特徵被選為分裂點的次數
  • gain:特徵帶來的平均資訊增益(推薦)
  • cover:特徵分裂影響的樣本數

注意:weight 偏向高基數特徵,gain 更能反映真實貢獻。


七、模型選擇與評估框架

7.1 Bias-Variance Tradeoff

誤差
 ▲
 │\
 │ \  總誤差 = 偏差² + 方差 + 不可避免噪聲
 │  \
 │   \───────────────      ← 方差(隨複雜度增加)
 │    ╲       ╭─────
 │     ╲   ╭──╯
 │      ──╯              ← 偏差(隨複雜度降低)
 │         ▲
 │         最佳複雜度
 └────────────────────────▶ 模型複雜度

欠擬合(高偏差)的症狀:訓練誤差高,驗證誤差與訓練誤差接近。

  • 解方:增加特徵、增加模型複雜度、減少正則化

過擬合(高方差)的症狀:訓練誤差低,驗證誤差顯著高於訓練誤差。

  • 解方:增加訓練資料、增加正則化、降低模型複雜度、Dropout(神經網路)

7.2 交叉驗證策略

K-Fold CV(標準場景)

  • K = 5 或 10,平衡偏差與方差
  • 對小資料集(< 1000 筆)用 LOOCV

Stratified K-Fold(類別不平衡)

  • 確保每個 fold 中各類別比例一致
  • 詐騙偵測(正例 0.3%)必用

Time Series Split(時序資料)

Fold 1: Train [t₁...t₆₀]  Val [t₆₁...t₇₂]
Fold 2: Train [t₁...t₇₂]  Val [t₇₃...t₈₄]
Fold 3: Train [t₁...t₈₄]  Val [t₈₅...t₉₆]

不能用隨機分割!未來資料不能出現在訓練集。

7.3 評估指標選擇

分類指標速查

場景                  主要指標        原因
──────────────────────────────────────────────────────
詐騙偵測              Recall(召回率)  漏報代價 > 誤報
醫療診斷              Recall + F1      漏診代價最高
廣告點擊率預測        AUC-ROC         排序質量重要
垃圾郵件過濾          Precision        誤報(正常→垃圾)代價高
類別不平衡(< 1%)   PR-AUC          AUC-ROC 對不平衡過度樂觀
多分類                Macro-F1         各類別等同重要

混淆矩陣的業務解讀

                    預測為詐騙    預測為正常
實際為詐騙   TP(正確攔截)  FN(漏報,損失最大)
實際為正常   FP(誤報,影響UX)  TN(正確放行)

Precision = TP / (TP + FP) = 攔截的有多準
Recall    = TP / (TP + FN) = 詐騙的有多少被抓到
F1        = 2 × P × R / (P + R)

閾值調整的業務影響

  • 閾值 0.5 → P = 0.85, R = 0.60(預設)
  • 閾值 0.3 → P = 0.72, R = 0.85(詐騙偵測推薦)
  • 閾值 0.7 → P = 0.94, R = 0.42(高精確需求場景)

八、為什麼選 X 不選 Y

6 個核心決策比較

決策一:邏輯回歸 vs 小型神經網路

選擇              選 X 的理由                        不選 Y 的理由
───────────────────────────────────────────────────────────────────────
邏輯回歸          推論 < 0.5ms,係數直接可解釋          神經網路:黑箱,
vs 神經網路       L1 正則化自動特徵選擇                 推論 10–50ms
                 10 萬筆以內訓練 < 5 秒               需要 GPU 或多 CPU
                 符合法規可解釋性要求                   超參調整複雜度高
                 對線性可分問題效果一樣好               小資料容易過擬合

翻轉條件:> 100 萬筆 + 特徵有複雜非線性交互 + 沒有可解釋性需求 → 選神經網路

決策二:決策樹 vs SVM

選擇              選 X 的理由                        不選 Y 的理由
───────────────────────────────────────────────────────────────────────
決策樹            可直接轉化為業務規則,法務看得懂      SVM:黑箱核函數
vs SVM            混合型特徵(數值+類別)直接用         對特徵尺度敏感
                 訓練速度快 10–100 倍                  > 10 萬筆訓練慢
                 不需要特徵標準化                       不直接輸出機率
                 
翻轉條件:小樣本(< 1K)高維文字特徵 → 線性 SVM 或 LogReg + TF-IDF

決策三:XGBoost vs LightGBM

選擇              選 X 的理由                        不選 Y 的理由
───────────────────────────────────────────────────────────────────────
LightGBM          訓練速度比 XGBoost 快 3–10 倍       XGBoost:
vs XGBoost        記憶體效率更好(直方圖算法)          社群資源更多
                 Leaf-wise 生長通常更準確              Kaggle 解法更豐富
                 支援類別特徵原生輸入                   部分雲端 AutoML
                                                       預設整合 XGBoost

翻轉條件:需要整合既有 XGBoost pipeline / 雲端 ML 平台限制 → 選 XGBoost

決策四:Random Forest vs XGBoost

選擇              選 X 的理由                        不選 Y 的理由
───────────────────────────────────────────────────────────────────────
Random Forest     可完全並行訓練(Bagging)            XGBoost:
vs XGBoost        超參數較少,更容易調                  AUC 通常高 2–5%
                 對雜訊和離群值更穩健                   更難解釋為何這棵
                 訓練早停更容易實現                     樹修正前一棵的誤差
                 適合快速基線建立

翻轉條件:需要最高精準度 + 有時間調參 + 資料相對乾淨 → 選 XGBoost/LightGBM

決策五:PCA 降維 vs 特徵選擇

選擇              選 X 的理由                        不選 Y 的理由
───────────────────────────────────────────────────────────────────────
特徵選擇          保留原始特徵語義,可解釋              PCA:
vs PCA            選出的特徵直接對業務有意義             主成分無業務含義
                 與模型協同訓練(RFE)                  資訊損失(variance
                 部署時只需子集特徵,成本低              explained 不是全部)
                                                       不適用類別特徵

翻轉條件:影像/音訊的高維稠密特徵 + 不需要可解釋性 → PCA / 自編碼器

決策六:One-Hot Encoding vs Target Encoding

選擇              選 X 的理由                        不選 Y 的理由
───────────────────────────────────────────────────────────────────────
Target Encoding   高基數類別(城市 > 500 種)          One-Hot:
vs One-Hot        不會造成維度爆炸                      高基數會產生稀疏矩陣
                 捕捉類別與目標的統計關係                維度 = 類別數
                 樹模型和線性模型都能用                  記憶體和計算開銷大

翻轉條件:類別 < 20 且需要避免任何資訊洩漏風險 → One-Hot;
          類別有自然順序(低/中/高)→ Ordinal Encoding

九、系統效應:傳統 ML vs 深度學習對比

完整性能對比表(同等任務場景)

場景:電商詐騙偵測,200 萬筆訓練資料,結構化特徵 80 個

指標                    LightGBM          小型 MLP(3層)     大型 Transformer
─────────────────────────────────────────────────────────────────────────────
推論延遲(單筆,CPU)   < 1ms             15–50ms           200–500ms
推論延遲(批次 1K)     5ms               80ms              800ms
GPU 是否必需           否                 建議              必須
訓練時間(100K 筆)    15 秒              5 分鐘            1 小時+
訓練時間(2M 筆)      3 分鐘            40 分鐘           8 小時+
推論服務成本(1K QPS) $50/月(2 CPU)   $200/月(GPU)    $2000/月(A100)
AUC 準確率             0.935             0.941             0.948
可解釋性               高(SHAP值直觀)  低                極低
特徵工程需求           高(影響 3–5%)   中(自動)         低(端到端)
冷啟動時間(重訓)     5 分鐘            1 小時            1 天+
監控複雜度             低                中                高
所需工程師技能         ML 工程師         DL 工程師          ML 研究員
─────────────────────────────────────────────────────────────────────────────
總結:                最適合生產        研究基線            特殊場景

遷移學習加持後的比較

深度學習在以下場景有壓倒性優勢(傳統 ML 無法競爭):

場景              深度學習 AUC   最佳傳統 ML   差距
──────────────────────────────────────────────────
影像分類           0.995         0.920         7.5%
自然語言理解       0.970         0.880         9.0%
語音辨識           0.985         0.820        16.5%
時序預測(複雜)   0.910         0.880         3.0%  ← 差距縮小
結構化資料詐騙     0.948         0.935         1.3%  ← 幾乎持平

關鍵洞察:結構化資料的深度學習優勢僅 1–2%,但成本是傳統 ML 的 20–40 倍。工程師需要問:「這 1% 的 AUC 提升,對業務的價值是否超過每月多出的 $2,000 基礎設施成本?」


十、面試答題要點

面試情境回顧:50 萬筆/天訂單,即時詐騙偵測,< 5ms,需法務稽核,200 萬歷史資料,詐騙率 0.3%。

「這個場景我會選 LightGBM 加 SHAP 值解釋,原因有四:第一,< 5ms 的延遲需求直接排除神經網路(CPU 推論 15–50ms 起跳),LightGBM CPU 推論 < 1ms;第二,0.3% 的嚴重類別不平衡,用 Stratified K-Fold + PR-AUC 評估,並設定 scale_pos_weight = 333 處理不平衡,同時把判斷閾值從 0.5 調到 0.2–0.3 以最大化詐騙召回率;第三,法務可稽核需求用 SHAP 值實現:每筆決策輸出 top-5 貢獻特徵,例如『IP 異常(+0.4)、設備首次出現(+0.3)、金額超出歷史均值 3σ(+0.2)』;第四,200 萬筆結構化資料是 LightGBM 的甜蜜點,AUC 可達 0.93–0.95,與深度模型差距 < 1.5%,但基礎設施成本低 20–40 倍。若未來詐騙模式出現概念漂移,PSI > 0.2 觸發自動重訓 pipeline,每週更新一次模型。」

RKK 答題框架

  • Requirements(需求釐清):延遲預算、可解釋性需求、資料規模、類別分布
  • Key Design Decisions(關鍵決策):模型選型理由、不平衡處理策略、評估指標選擇、解釋性機制
  • Knowledge of Tradeoffs(取捨認知):傳統 ML vs DL 的精度-成本-延遲三角,何時會重新評估選型

加分點

  1. 主動提到 PSI 漂移監控(顯示生產意識)
  2. 說出具體閾值數字(0.2–0.3 而非「調低閾值」)
  3. 提到 SHAP 而非只說「決策樹可解釋」
  4. 能說出 LightGBM 的 scale_pos_weight 超參數(顯示熟悉工具)

十一、系列導航

本系列「AI Engineering from Scratch」根據 rohitg00/ai-engineering-from-scratch 整理,以工程師視角解析每個 Phase 的核心概念與生產實踐。


Phase 1 Part 2:Python AI 生態系統與開發工具Phase 2 Part 2:深度學習基礎 →


本文為「AI 工程從零開始」系列 Phase 2 第 1 篇,聚焦傳統機器學習在生產系統中的角色與最佳實踐。

Yen

Yen

Yen