聊天視窗

數據駕馭:企業資料科學實戰手冊 - 第 4 章

4. 機器學習模型構建

發布於 2026-02-24 20:27

# 4. 機器學習模型構建 > **目標**:把前面 EDA 與特徵工程的成果,轉化為可部署、可持續迭代的預測模型,並以科學的方法保證模型的泛化與可靠性。 ## 4.1 模型構建全流程 | 階段 | 主要工作 | 工具/方法 | 重點提示 | |------|----------|----------|----------| | 1️⃣ 選型 | 針對任務(分類、回歸、聚類)挑選合適的算法 | `scikit-learn`、`XGBoost`、`LightGBM`、`CatBoost`、`XGBoost`、`PyTorch`、`TensorFlow` | 考慮特徵類型、資料量、部署環境、可解釋性 | | 2️⃣ 參數調優 | 針對選型的模型進行超參數搜索 | Grid Search, Random Search, Optuna, Ray Tune | 避免過度擬合,加入正則化 | | 3️⃣ 評估 | 透過多維度指標判斷模型表現 | ROC‑AUC, PR‑AUC, RMSE, MAE, F1, Confusion Matrix | 盡量使用「留一法」或「分層 K‑Fold」 | | 4️⃣ 版本化 | 為模型與特徵工程流程建立版本管理 | MLflow, DVC, Git | 保持可重現性、追蹤實驗 | | 5️⃣ 部署 | 把模型打包成 API 或批處理工作流 | FastAPI, Flask, TensorFlow Serving, TorchServe, Docker | 監控延遲、資源使用、版本升級 | ## 4.2 模型選型策略 ### 4.2.1 特徵數量與類型 - **高維稀疏特徵**:使用 `LinearSVC`, `LogisticRegression`(L1 正則化)或 `XGBoost`。 - **大量非結構化特徵**:使用深度學習模型,如 CNN、Transformer,或預訓練模型再 fine‑tune。 - **少量結構化特徵**:梯度提升樹(LightGBM、CatBoost)往往表現最佳,因為它們能自動處理類別特徵與缺失值。 ### 4.2.2 目標變量 - **分類**:若類別分布不均,可使用 Focal Loss、Class‑Weighted Loss、SMOTE、ADASYN 等處理手段。 - **回歸**:考慮 `HuberLoss`、`QuantileLoss` 以減少離群值影響。 ### 4.2.3 速度與部署成本 | 模型 | 推理延遲 | 內存佔用 | 適用場景 | |------|-----------|----------|----------| | LogisticRegression | 低 | 低 | 實時分類 | | RandomForest | 中 | 中 | 離線批處理 | | XGBoost | 低 | 中 | 需要高精度 | | LightGBM | 低 | 低 | 大規模數據 | | CatBoost | 低 | 中 | 需要自動類別處理 | | Deep Neural Network | 高 | 高 | 非結構化資料 | ## 4.3 參數調優流程 1. **定義搜索空間**:使用 `Optuna` 或 `Ray Tune` 先建立 `suggest` 函式。 python def suggest_params(trial): n_estimators = trial.suggest_int('n_estimators', 100, 1000) max_depth = trial.suggest_int('max_depth', 3, 15) learning_rate = trial.suggest_float('learning_rate', 1e-3, 1e-1, log=True) return {'n_estimators': n_estimators, 'max_depth': max_depth, 'learning_rate': learning_rate} 2. **交叉驗證**:使用 `StratifiedKFold` 進行分層抽樣,保證每折分佈一致。 3. **評估指標**:對於分類採用 `roc_auc`,對於回歸採用 `neg_root_mean_squared_error`。若業務有多重目標,可自定義複合評分。 4. **早停與模型保存**:在 `XGBoost` 或 `LightGBM` 內部使用 `early_stopping_rounds`,並將最佳模型保存至 `mlflow`。 ## 4.4 模型評估指標深入 | 指標 | 何時使用 | 解釋 | |------|----------|------| | ROC‑AUC | 二分類 | 衡量模型分離正負的能力,對不平衡資料友好 | | PR‑AUC | 嚴重不平衡 | 聚焦召回與精度的平衡 | | F1‑Score | 需要平衡 precision/recall | 交替使用 | | Log‑Loss | 預測概率 | 衡量預測置信度 | | RMSE / MAE | 回歸 | RMSE 重視大誤差,MAE 更穩健 | | R² | 線性回歸 | 變異數解釋比例 | > **實務提示**:始終在 **測試集** 上一次性評估模型,避免「過度調優」造成的測試偏差。 ## 4.5 版本化與實驗追蹤 - **MLflow Tracking**:記錄參數、指標、模型、代碼提交 SHA,支援多實驗比較。 - **DVC 與 Git**:把特徵工程腳本、模型檔與資料一同進行版本控制,確保重現性。 - **Docker + Kubernetes**:將模型容器化,與 `Helm` chart 配合實現版本迭代。 ## 4.6 常見陷阱與對策 1. **資料泄露**:在特徵工程時避免使用「未來」時間戳或預測變量。可使用 `TimeSeriesSplit` 進行驗證。 2. **過度擬合**:監控 training vs validation 曲線;使用正則化、drop‑out 或剪枝。 3. **不恰當的評估指標**:確保選擇與業務目標一致的指標,避免「AUC for imbalanced data」的陷阱。 4. **模型漂移**:定期檢查訓練資料分佈,使用 `KS` 檢驗或 `Chi‑Squared` 監控分佈變化。 5. **部署不一致**:使用相同的庫版本,確保開發、測試、prod 的環境一致。 ## 4.7 小結 本章闡述了從模型選型、參數調優、評估到版本化的完整流程。掌握以下要點,您將能: - **快速迭代**:利用自動化搜尋與實驗追蹤,縮短從實驗到部署的週期。 - **可靠部署**:確保模型在真實環境中的穩定與可擴展性。 - **科學評估**:以統計與業務指標相結合,做出更有根據的決策。 下一章將帶您踏入模型部署與監控的實務,探討如何將「模型」變為「可持續營收驅動工具」。