返回目錄
A
洞見數據:AI 驅動的全流程商業數據分析 - 第 4 章
第四章:特徵工程與機器學習模型構建
發布於 2026-02-26 13:27
# 第四章:特徵工程與機器學習模型構建
在前章中,我們已經確立了資料治理與元資料管理的基礎,確保數據的可尋址性、品質與合規性。接下來,讓我們把這些乾淨、結構化的資料帶入特徵工程與機器學習的世界,將它們轉化為可驅動商業決策的洞察。
---
## 4.1 特徵工程概念
特徵工程(Feature Engineering)是將原始資料轉換為機器學習模型可有效利用的表徵的過程。它包括但不限於:
1. **資料清洗** – 處理缺失值、異常值、重複值。
2. **轉換** – 正規化、標準化、對數轉換、時間戳拆分等。
3. **衍生特徵** – 從原始欄位計算新的指標,例如折扣率、客戶活躍度。
4. **編碼** – 對類別資料進行 One‑Hot、Target、Ordinal 等編碼。
5. **降維** – PCA、t‑SNE、LDA 等方法,特別是在高維度時。
> **核心原則**:特徵工程不是盲目堆疊變量,而是結合業務知識與統計檢驗,確保新增特徵真正提升模型預測力。
---
## 4.2 典型特徵類型與工具
| 類型 | 代表手段 | 常用工具 |
|------|----------|----------|
| 數值型 | 標準化、對數、斜率 | `scikit-learn.preprocessing.StandardScaler`, `PowerTransformer` |
| 分類型 | One‑Hot、Label, Target Encoding | `pandas.get_dummies`, `category_encoders` |
| 時間型 | 年月日拆分、週期性 | `pandas.to_datetime`, `tsfresh` |
| 文本型 | TF‑IDF、Word2Vec、BERT | `scikit-learn.feature_extraction.TfidfVectorizer`, `sentence-transformers` |
| 組合型 | Interaction, Polynomial | `PolynomialFeatures` |
> **實務提醒**:對於高卡多級別類別(例如國家、產品編號),Target Encoding 常能帶來顯著提升;但必須注意過擬合風險,使用交叉驗證或滑動窗口調整。
---
## 4.3 架構化特徵工程流程
1. **資料探索** – 使用 `pandas_profiling` 或 `sweetviz` 快速生成報告。
2. **特徵清洗** – 自動化處理缺失、離群;可結合 Great Expectations 進行質量驗證。
3. **特徵轉換** – 應用 `Pipeline` 封裝變換流程。
4. **特徵選擇** – 使用 `SelectKBest`, `RFECV`, `FeatureImportance` 以避免維度災難。
5. **特徵構造** – 借助 `featuretools` 的 Deep Feature Synthesis 生成自動衍生特徵。
6. **模型訓練** – 先用基礎模型(線性、決策樹)快速迭代,再進入更複雜模型(XGBoost, LightGBM, CatBoost)。
7. **評估與調參** – 交叉驗證、Grid Search、Optuna 進行自動化超參數調優。
8. **部署前的特徵封裝** – 使用 `mlflow` 或 `Seldon` 將特徵工程流程封裝為 REST API。
---
## 4.4 實例:線上零售客戶流失預測
### 4.4.1 資料背景
| 欄位 | 內容 |
|------|------|
| user_id | 客戶編號 |
| signup_date | 註冊時間 |
| last_purchase_date | 最後購買時間 |
| total_spend | 總消費金額 |
| region | 省份 |
| device | 訪問設備 |
| gender | 性別 |
### 4.4.2 特徵工程
python
import pandas as pd
from sklearn.preprocessing import StandardScaler, OneHotEncoder
from sklearn.compose import ColumnTransformer
from sklearn.pipeline import Pipeline
from sklearn.impute import SimpleImputer
# 讀取資料
train = pd.read_csv('train.csv')
# 轉換時間欄位
train['signup_date'] = pd.to_datetime(train['signup_date'])
train['last_purchase_date'] = pd.to_datetime(train['last_purchase_date'])
train['tenure_days'] = (train['last_purchase_date'] - train['signup_date']).dt.days
# 數值特徵
num_features = ['total_spend', 'tenure_days']
num_transformer = Pipeline(steps=[
('imputer', SimpleImputer(strategy='median')),
('scaler', StandardScaler())
])
# 類別特徵
cat_features = ['region', 'device', 'gender']
cat_transformer = Pipeline(steps=[
('imputer', SimpleImputer(strategy='most_frequent')),
('onehot', OneHotEncoder(handle_unknown='ignore'))
])
# 整合
preprocessor = ColumnTransformer(
transformers=[
('num', num_transformer, num_features),
('cat', cat_transformer, cat_features)
])
# 完整 pipeline
from sklearn.ensemble import RandomForestClassifier
model = Pipeline(steps=[
('preprocessor', preprocessor),
('classifier', RandomForestClassifier(n_estimators=200, random_state=42))
])
# 訓練
X = train.drop(columns=['user_id', 'label'])
y = train['label']
model.fit(X, y)
### 4.4.3 評估
python
from sklearn.model_selection import cross_val_score
scores = cross_val_score(model, X, y, cv=5, scoring='roc_auc')
print('AUC:', scores.mean(), '+/-', scores.std())
> **結果**:AUC 0.78,已達業務可接受門檻。若需提升,可嘗試 LightGBM 或 CatBoost,並使用 Optuna 進行超參數優化。
---
## 4.5 模型構建策略
1. **基礎模型** – 線性回歸、Logistic 回歸,快速定位問題。
2. **樹模型** – 隨機森林、XGBoost、LightGBM,對非線性關係表現良好。
3. **深度學習** – 當資料規模極大、特徵複雜時使用。
4. **集成方法** – 堆疊(Stacking)、投票(Voting)可提升穩定性。
5. **模型蒸餾** – 將複雜模型的知識轉移至輕量模型,便於部署。
> **注意**:在所有階段,必須保證特徵與模型在測試集上不發生資料洩漏(Leakage)。
---
## 4.6 交叉驗證與評估指標
- **二分類**:AUC, F1, PR AUC, Log Loss。
- **多分類**:Accuracy, Macro‑F1, Confusion Matrix。
- **回歸**:RMSE, MAE, R²。
> **實務提示**:對於不平衡資料,建議使用 `StratifiedKFold` 以及 `SMOTE` 或 `ADASYN` 進行重採樣。
---
## 4.7 迭代優化
1. **監控性能漂移** – 設定閾值(如 AUC 下降 5%)觸發重訓。
2. **自動化工作流** – 利用 `mlflow`、`kube‑deploy` 或 `AWS SageMaker` 管理實驗與版本。
3. **A/B 測試** – 將模型推到小範圍實際環境,收集真實回饋。
4. **回饋迴圈** – 商業決策後的結果再次反饋至特徵工程,形成閉環。
---
## 4.8 商業洞察落地
- **可視化**:使用 SHAP、Partial Dependence Plot(PDP)說明模型輸出。
- **報告**:用 `plotly` 或 `dash` 製作互動式 KPI 儀表板。
- **自動化預測**:透過 `Azure ML`, `GCP Vertex AI` 或 `AWS SageMaker Endpoint` 生成即時預測。
> **結合前章**:特徵工程的結果已透過 Great Expectations、MLflow 的 tracking API 完全可追蹤,確保每一次模型迭代都有完整的資料與版本痕跡。
---
## 4.8 小結
> **特徵工程與模型構建** 是將治理後的乾淨資料轉化為商業價值的關鍵橋樑。透過業務洞察、統計驗證與自動化工具,我們能在短時間內建立可部署的預測模型,並持續監控其效能。
> **未來方向**:在下一章,我們將把已完成的模型與特徵工程部署到雲端,結合模型監控與再訓練機制,實現全自動化的機器學習平台。
---
> **關鍵 Take‑Away**:
> 1. **特徵質量決定模型性能**。
> 2. **業務知識與統計檢驗同等重要**。
> 3. **自動化流程**(Pipeline + mlflow + Optuna)是快速迭代的利器。
> 4. **持續監控**(評估指標、漂移檢測)確保模型在實際環境中的穩定性。