聊天視窗

洞見數據: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. **持續監控**(評估指標、漂移檢測)確保模型在實際環境中的穩定性。