返回目錄
A
決策者的資料科學:分析基礎與實務應用 - 第 4 章
第四章:機器學習概念與演算法選擇
發布於 2026-03-06 02:42
# 第四章:機器學習概念與演算法選擇
> **實務小提醒**:在進行模型選擇前,先確認資料量、特徵結構與商業問題的關鍵指標,避免因模型複雜度過高造成資源浪費。
## 4.1 機器學習的三大類型
1. **監督式學習(Supervised Learning)**:模型以已標記的訓練資料為基礎,學習輸入與輸出之間的映射關係,常見於分類與回歸問題。
2. **非監督式學習(Unsupervised Learning)**:沒有明確標籤,透過資料內在結構發現隱藏模式,例如聚類與降維。
3. **強化學習(Reinforcement Learning)**:代理(Agent)在環境中採取行動,根據獎勵信號調整策略,適合連續決策與動態規劃。
> **思考題**:你的業務場景中,哪一類型最常遇到?請舉出一個實際問題。
## 4.2 監督式學習的典型演算法
| 目的 | 演算法 | 適用場景 | 優缺點 |
|------|--------|----------|--------|
| 分類 | Logistic Regression, SVM, Random Forest, XGBoost | 客戶流失、信貸風險 | 直觀、可解釋;但對非線性關係需特徵工程 |
| 回歸 | Linear Regression, Lasso, Ridge, Gradient Boosting | 需求預測、價格預測 | 可解釋性高,易於部署;對異常敏感 |
| 時間序列 | ARIMA, Prophet, LSTM | 銷售趨勢、股價預測 | LSTM 捕捉長期依賴,但需大量資料 |
### 代碼示範:使用 scikit‑learn 建立簡易客戶流失預測模型
```python
import pandas as pd
from sklearn.model_selection import train_test_split
from sklearn.preprocessing import StandardScaler
from sklearn.ensemble import RandomForestClassifier
from sklearn.metrics import classification_report, confusion_matrix
# 讀取資料
data = pd.read_csv('customer_churn.csv')
X = data.drop('churn', axis=1)
y = data['churn']
# 分割資料
X_train, X_test, y_train, y_test = train_test_split(
X, y, test_size=0.2, random_state=42, stratify=y)
# 特徵縮放
scaler = StandardScaler()
X_train = scaler.fit_transform(X_train)
X_test = scaler.transform(X_test)
# 建立模型
model = RandomForestClassifier(n_estimators=200, random_state=42)
model.fit(X_train, y_train)
# 預測與評估
pred = model.predict(X_test)
print(classification_report(y_test, pred))
print(confusion_matrix(y_test, pred))
```
> **技巧**:對高維特徵可使用 `SelectFromModel` 或 `PCA` 做特徵選擇,減少過擬合風險。
## 4.3 非監督式學習的工具箱
| 演算法 | 目的 | 實際案例 |
|--------|------|----------|
| K‑Means | 典型聚類 | 市場細分、客戶分群 |
| DBSCAN | 密度聚類,發現異常 | 欺詐偵測 |
| PCA | 降維與可視化 | 圖像壓縮、特徵縮減 |
| t‑SNE | 非線性降維 | 數據探索、可視化 |
```python
from sklearn.cluster import KMeans
from sklearn.preprocessing import StandardScaler
import pandas as pd
# 假設我們有客戶交易特徵
data = pd.read_csv('transactions.csv')
X = data[['amount', 'frequency', 'recency']]
# 標準化
X_std = StandardScaler().fit_transform(X)
# K‑Means
kmeans = KMeans(n_clusters=4, random_state=42)
kmeans.fit(X_std)
# 結果可視化(簡化)
import matplotlib.pyplot as plt
plt.scatter(X_std[:, 0], X_std[:, 1], c=kmeans.labels_, cmap='viridis')
plt.title('客戶分群')
plt.xlabel('amount (標準化)')
plt.ylabel('frequency (標準化)')
plt.show()
```
> **實務提醒**:聚類結果需要經營者驗證,確保分群邏輯與商業策略相符。
## 4.4 演算法選擇指導
| 決策因素 | 建議 | 例子 |
|----------|------|------|
| 資料量 | 量少→簡單模型;量大→集成或深度學習 | 小型客戶資料→Logistic Regression;大型網路流量→CNN |
| 特徵類型 | 數值 → 標準化;類別 → One‑Hot | 薪資數據→Z‑score;職位 → One‑Hot |
| 模型可解釋性 | 高解釋性需求→GLM、決策樹;低則→GBM、NN | 醫療診斷→Logistic;廣告投放→XGBoost |
| 執行速度 | 需實時 → 轻量模型;離線 → 计算密集 | 需求預測(實時)→ARIMA;長期分析 → LSTM |
> **建議流程**:
> 1. **特徵工程**:先簡單處理,再做特徵選擇。
> 2. **基線模型**:用最簡單模型快速評估。
> 3. **增量改進**:加入複雜度或其他演算法。
> 4. **交叉驗證**:確保模型泛化能力。
## 4.5 模型評估與驗證
### 4.5.1 分類指標
- **Accuracy**:整體正確率。
- **Precision / Recall**:對於不平衡資料,Precision 重要於召回率。
- **F1‑Score**:平衡 Precision 與 Recall。
- **ROC‑AUC**:整體預測分佈。
### 4.5.2 回歸指標
- **RMSE / MAE**:衡量誤差大小。
- **R²**:解釋變異比例。
### 4.5.3 模型可視化
- **Learning Curve**:了解過擬合或欠擬合。
- **Partial Dependence Plot**:解釋特徵影響。
- **SHAP / LIME**:提升模型解釋性。
```python
from sklearn.metrics import roc_auc_score, classification_report
# 假設二分類模型
pred_proba = model.predict_proba(X_test)[:, 1]
print('ROC‑AUC:', roc_auc_score(y_test, pred_proba))
```
> **實務提示**:選擇評估指標時,要與業務目標對齊,例如在欺詐偵測中,Recall 更重要。
## 4.6 風險管理與解釋性
1. **資料漂移**:模型訓練後,特徵分佈變化會降低效能。可透過 `Great Expectations` 定期檢查。
2. **模型偏見**:若訓練資料不平衡,模型可能放大偏差。使用 `SMOTE` 或重樣本策略。
3. **黑盒模型**:深度學習或高階集成模型難以解釋。採用 SHAP 讓決策者看見關鍵特徵。
> **案例**:某電商平台使用 XGBoost 預測客戶是否會購買。為確保公平性,將性別特徵從模型中剔除並利用 SHAP 確認其他特徵決定性。
## 4.7 案例研究:客戶流失預測
### 4.7.1 背景
- 目標:降低 12 個月內客戶流失率 5%。
- 資料:交易歷史、客服互動、使用行為。
### 4.7.2 流程
1. **資料探索**:發現流失率 12% 且不平衡。
2. **特徵工程**:構造 `recency`, `frequency`, `monetary`;使用 `OneHotEncoder` 處理類別。
3. **模型選擇**:基線 Logistic,提升至 XGBoost。
4. **評估**:使用 ROC‑AUC、Precision‑Recall 曲線。
5. **部署**:在 Airflow 中每月重新訓練;將結果發送至 Power BI 供行銷團隊。
### 4.7.3 成效
- 流失率下降 4.3%。
- 行銷團隊在報告中使用 SHAP 解釋模型,快速定位關鍵驅動因素。
> **學習點**:模型選擇不僅看指標,還要考慮部署成本與商業可行性。
## 4.8 從模型到洞察:向高層傳遞分析結果
1. **聚焦商業痛點**:將技術指標轉化為 ROI 或 KPI。
2. **使用視覺化**:避免堆砌數據,使用清晰圖表。
3. **簡化技術術語**:將「overfitting」說成「模型在新資料上表現下降」。
4. **提出行動建議**:模型預測只是開始,需結合策略。
5. **持續跟進**:設定 KPI 追蹤,根據反饋迭代模型。
> **實務小提醒**:決策者更在意「為什麼」與「如何執行」,而非「模型是什麼」。
## 4.9 小結
本章闡述了機器學習的基本類型、常用演算法、選擇流程以及評估方法。透過實際案例與程式碼示範,讀者可以快速掌握從資料探索到模型部署,再到商業溝通的全流程。下一章將深入討論如何在實際環境中部署模型、監控性能,以及如何在不斷變化的資料世界中維持模型效能。