返回目錄
A
洞悉未來:資料科學決策師的實務指南 - 第 5 章
第5章:機器學習模型基礎
發布於 2026-03-01 14:36
# 第5章:機器學習模型基礎
> 本章以模型選擇、評估、驗證與部署為核心,強調「可操作性」與「可解釋性」。對於非技術決策者,重點在於:
> 1. **選擇合適的模型類型**,避免「模型即一刀切」的陷阱。
> 2. **使用合適的評估指標**,防止因資料不均衡而產生誤導。
> 3. **實行交叉驗證**,確保模型泛化能力。
> 4. **部署與監控**,確保模型長期有效,並在必要時進行迭代。
>
> 通過實務案例,我們見證了從特徵到模型、再到商業落地的完整迴圈。下一章將聚焦於「模型解釋與溝通」,協助決策者將模型洞察轉化為具體策略。
---
## 5.1 監督式與非監督式學習概念
| 類型 | 目標 | 常見任務 | 典型演算法 |
|------|------|----------|------------|
| 監督式 | 預測已標記資料的輸出 | 分類、回歸 | Logistic Regression, SVM, Random Forest, XGBoost, Neural Network |
| 非監督式 | 發掘資料內在結構 | 分群、降維、異常檢測 | K‑means, DBSCAN, PCA, t‑SNE |
**監督式學習**:當資料中已包含「正確答案」(label) 時,利用這些標記來訓練模型,使其能對未見資料做預測。
> **商業應用示例**:客戶流失預測(標記「是否流失」),信用風險評估(標記「風險/非風險」)。
**非監督式學習**:資料未標記,目的是找出資料的隱含結構或模式。
> **商業應用示例**:客戶細分(K‑means 分群)、產品組合優化(協同過濾)。
## 5.2 常見模型與適用場景
### 5.2.1 分類模型
| 演算法 | 主要優點 | 主要缺點 | 典型場景 |
|--------|----------|----------|----------|
| Logistic Regression | 可解釋性高,訓練快 | 只能處理線性關係 | 風險評估、醫學診斷 |
| Decision Tree | 易於解釋,非線性 | 容易過擬合 | 快速原型、特徵重要性分析 |
| Random Forest | 抗過擬合、特徵重要性 | 模型複雜,解釋性較差 | 大規模分類、預測精度要求高 |
| XGBoost / LightGBM | 高效、可處理缺失值 | 參數較多,需調優 | 競賽、企業風險模型 |
| SVM | 在高維空間表現好 | 訓練時間長,對資料分布敏感 | 文本分類、圖像分類 |
### 5.2.2 回歸模型
| 演算法 | 主要優點 | 主要缺點 | 典型場景 |
|--------|----------|----------|----------|
| Linear Regression | 直觀、可解釋性 | 只能捕捉線性關係 | 銷售預測、成本估算 |
| Ridge / Lasso | 進行特徵選擇、避免過擬合 | 需調整正則化參數 | 高維資料回歸 |
| Decision Tree Regressor | 可捕捉非線性 | 容易過擬合 | 土地價格預測 |
| Gradient Boosting Regressor | 高精度 | 需要調參 | 財務預測、需求預測 |
### 5.2.3 聚類模型
| 演算法 | 主要優點 | 主要缺點 | 典型場景 |
|--------|----------|----------|----------|
| K‑means | 計算簡單,擴展性好 | 需要預先指定 k 值 | 市場細分、客戶群分析 |
| Hierarchical Clustering | 可視化聚類樹 | 計算成本高 | 生物資訊、文本聚類 |
| DBSCAN | 能處理噪音、找出任意形狀 | 需要設定 eps、minPts | 异常检测、空间数据分析 |
## 5.3 模型評估指標與交叉驗證
### 5.3.1 評估指標
| 任務 | 指標 | 公式 | 解釋 |
|------|------|------|------|
| 分類 | 準確率(Accuracy) | (TP+TN)/(TP+TN+FP+FN) | 正確預測比例 |
| 分類 | 精確率(Precision) | TP/(TP+FP) | 正類中真正的比例 |
| 分類 | 召回率(Recall) | TP/(TP+FN) | 能找到的正類比例 |
| 分類 | F1 分數 | 2×Precision×Recall/(Precision+Recall) | 平衡精確率與召回率 |
| 分類 | AUC‑ROC | 面積下的 ROC 曲線 | 分類閾值不變的性能 |
| 回歸 | MSE | (1/n)∑(y‑ŷ)² | 平均平方誤差 |
| 回歸 | RMSE | √MSE | 直接誤差尺度 |
| 回歸 | MAE | (1/n)∑|y‑ŷ| | 平均絕對誤差 |
| 回歸 | R² | 1‑∑(y‑ŷ)²/∑(y‑ȳ)² | 變異數說明比例 |
> **注意**:當資料不均衡(如客戶流失率低於5%)時,Accuracy 可能會誤導。此時推薦使用 F1、AUC 或 Precision/Recall 曲線。
### 5.3.2 交叉驗證(Cross‑Validation)
| 方式 | 特色 | 優點 |
|------|------|------|
| K‑Fold CV | 資料分成 K 份,輪流作驗證集 | 節省資料、穩定估計 |
| Stratified K‑Fold | 針對分類保持類別比例 | 避免類別不均衡問題 |
| Time Series CV | 只使用過去資料作為訓練 | 避免未來資料洩漏 |
| Leave‑One‑Out (LOO) | 每次留下1筆資料 | 最佳化但計算量大 |
> **實務小技巧**:在模型選擇階段使用 5‑fold 或 10‑fold CV;在時間序列預測時採用滑動窗口 CV;若資料量極大,使用 **分層抽樣** 以減少運算負擔。
## 5.4 實務演示:客戶流失預測
python
import pandas as pd
from sklearn.model_selection import train_test_split, StratifiedKFold, cross_val_score
from sklearn.preprocessing import StandardScaler
from sklearn.pipeline import Pipeline
from sklearn.ensemble import RandomForestClassifier
from sklearn.metrics import roc_auc_score, classification_report
# 1. 讀取資料
path = 'customer_churn.csv'
df = pd.read_csv(path)
# 2. 特徵工程簡示(只保留數值特徵)
X = df.drop(columns=['customerID', 'Churn'])
y = df['Churn'].map({'Yes':1, 'No':0})
# 3. 數據分割
X_train, X_test, y_train, y_test = train_test_split(
X, y, test_size=0.2, stratify=y, random_state=42)
# 4. 建立 pipeline
pipe = Pipeline([
('scaler', StandardScaler()),
('rf', RandomForestClassifier(n_estimators=300, random_state=42))
])
# 5. 交叉驗證
skf = StratifiedKFold(n_splits=5, shuffle=True, random_state=42)
cv_auc = cross_val_score(pipe, X_train, y_train, cv=skf, scoring='roc_auc')
print('CV AUC: {:.4f} ± {:.4f}'.format(cv_auc.mean(), cv_auc.std()))
# 6. 進行最終訓練與評估
pipe.fit(X_train, y_train)
pred_prob = pipe.predict_proba(X_test)[:,1]
print('Test AUC: {:.4f}'.format(roc_auc_score(y_test, pred_prob)))
print(classification_report(y_test, pipe.predict(X_test)))
> **說明**:
> - 使用 **StratifiedKFold** 以維持類別比例。
> - `StandardScaler` 對數值特徵標準化,避免特徵範圍影響模型。
> - `RandomForestClassifier` 兼顧解釋性與預測力。
> - `roc_auc_score` 兼顧不均衡問題。
## 5.5 模型選擇策略
1. **資料量**:資料量少時,先從簡單模型(Logistic Regression)做基線;資料量大時可嘗試複雜模型。
2. **特徵維度**:高維度時,先做特徵選擇或降維,再使用較簡單模型。
3. **商業目標**:若需可解釋性,優先使用決策樹、線性模型;若追求精度,考慮 XGBoost 或 LightGBM。
4. **部署成本**:模型訓練時間、推論延遲、資源需求都須納入評估。
## 5.6 小結
- 監督式與非監督式學習各有明確用途,決策者須根據資料標記與業務需求選擇。
- 常見模型的選擇應結合資料特性、解釋性需求與部署限制。
- 評估指標與交叉驗證是確保模型泛化與公平性的關鍵。
- 實務演示提供完整從資料讀取到模型評估的程式碼範例,便於快速落地。
> **下一章**將聚焦於「模型解釋與可視化」,協助決策者將模型洞察轉化為可執行策略。