返回目錄
A
數據驅動決策:從原始資料到洞察的全流程 - 第 6 章
第 6 章:機器學習基礎
發布於 2026-02-22 14:38
# 第 6 章:機器學習基礎
本章將帶領讀者從概念層面走進機器學習的核心。除了簡介三大類型(監督式、非監督式與強化學習),還會深入說明回歸、分類、聚類等常見演算法,並以實際範例說明模型選擇與評估指標。
## 6.1 監督式、非監督式與強化學習
| 類型 | 目標 | 資料形式 | 典型應用 | 主要演算法 |
|------|------|----------|----------|------------|
| **監督式** | 預測已標記目標 | 標記資料 (X, y) | 銷售預測、影像分類 | 線性回歸、決策樹、SVM、神經網路 |
| **非監督式** | 發現資料內在結構 | 未標記資料 (X) | 客戶分群、異常偵測 | K‑means、DBSCAN、PCA |
| **強化學習** | 學習最優策略 | 環境互動 (state, action, reward) | 機器人控制、遊戲 AI | Q‑learning、Deep Q‑Network |
> **小貼士**:在實務中,多數問題先從監督式學習開始;若缺少標籤,則考慮非監督式或半監督式;強化學習則適用於有明確回饋機制的連續決策環境。
## 6.2 監督式學習
### 6.2.1 回歸問題
- **目標**:預測連續數值。
- **常見評估指標**:
- MAE(平均絕對誤差)
- MSE / RMSE(均方誤差 / 根均方誤差)
- R²(決定係數)
- **典型演算法**:
1. 線性回歸(Ordinary Least Squares)
2. Ridge / Lasso(正則化回歸)
3. 决策树回归(DecisionTreeRegressor)
4. 隨機森林回歸(RandomForestRegressor)
5. XGBoost / LightGBM
6. 神經網路回歸(MLPRegressor)
python
# 以 scikit‑learn 進行簡易線性回歸
from sklearn.datasets import make_regression
from sklearn.model_selection import train_test_split
from sklearn.linear_model import LinearRegression
from sklearn.metrics import mean_squared_error
X, y = make_regression(n_samples=200, n_features=5, noise=0.1, random_state=42)
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)
model = LinearRegression()
model.fit(X_train, y_train)
pred = model.predict(X_test)
print('RMSE:', mean_squared_error(y_test, pred, squared=False))
### 6.2.2 分類問題
- **目標**:預測離散類別。
- **常見評估指標**:
- Accuracy
- Precision / Recall / F1‑score
- ROC‑AUC
- **典型演算法**:
1. Logistic Regression
2. k‑Nearest Neighbours (k‑NN)
3. 支持向量機 (SVM)
4. 隨機森林、Gradient Boosting
5. 神經網路(如 CNN、RNN)
python
# scikit‑learn 例:SVM 二分類
from sklearn.datasets import load_iris
from sklearn.model_selection import train_test_split
from sklearn.svm import SVC
from sklearn.metrics import classification_report
X, y = load_iris(return_X_y=True)
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.3, random_state=42)
model = SVC(kernel='rbf', C=1.0, probability=True)
model.fit(X_train, y_train)
print(classification_report(y_test, model.predict(X_test)))
## 6.3 非監督式學習
### 6.3.1 聚類(Clustering)
- **目標**:將資料分成相似度高的群組。
- **常見演算法**:
1. K‑means
2. Agglomerative / Hierarchical Clustering
3. DBSCAN(密度聚類)
- **評估指標**:
- Silhouette Score
- Calinski‑Harabasz Index
- Davies‑Bouldin Index
python
# K‑means 例子
from sklearn.datasets import make_blobs
from sklearn.cluster import KMeans
from sklearn.metrics import silhouette_score
X, _ = make_blobs(n_samples=300, centers=4, cluster_std=0.60, random_state=0)
model = KMeans(n_clusters=4, random_state=42)
labels = model.fit_predict(X)
print('Silhouette:', silhouette_score(X, labels))
### 6.3.2 降維(Dimensionality Reduction)
- **目的**:降低特徵空間,保留重要資訊。
- **典型方法**:
1. PCA(主成分分析)
2. t‑SNE / UMAP(可視化降維)
- **使用情境**:
- 資料視覺化
- 提升監督式演算法的計算效率
- 檢查資料是否存在維度災難(curse of dimensionality)
python
# PCA 例子
from sklearn.decomposition import PCA
pca = PCA(n_components=2)
X_reduced = pca.fit_transform(X)
print('Explained variance ratio:', pca.explained_variance_ratio_)
## 6.4 強化學習
| 名稱 | 主要概念 | 代表演算法 |
|------|----------|------------|
| **Markov Decision Process (MDP)** | 狀態、動作、回報 | Q‑learning、SARSA |
| **Policy Gradient** | 直接優化策略函數 | REINFORCE、Actor‑Critic |
| **深度增強** | 近端策略優化 | Proximal Policy Optimization (PPO) |
> **實務提醒**:強化學習的資料來源是「環境回饋」;若環境難以仿真,建議先使用簡化模型或離線模擬(如 OpenAI Gym)進行試驗。
python
# OpenAI Gym + Q‑learning 基礎範例
import gym
import numpy as np
env = gym.make('FrozenLake-v1', is_slippery=False)
q_table = np.zeros((env.observation_space.n, env.action_space.n))
alpha = 0.8
gamma = 0.95
for episode in range(1000):
state = env.reset()
done = False
while not done:
action = np.argmax(q_table[state] + np.random.randn(1, env.action_space.n) * (1.0/(episode+1)))
next_state, reward, done, _ = env.step(action)
q_table[state, action] = (1 - alpha) * q_table[state, action] + alpha * (reward + gamma * np.max(q_table[next_state]))
state = next_state
print('訓練完成')
## 6.4 演算法分類對照表
| 演算法 | 參數 | 主要優點 | 主要缺點 | 適用資料量 |
|--------|-------|-----------|-----------|--------------|
| 線性回歸 | 無 | 速度快、可解釋性高 | 對非線性問題效果差 | 小到中等
| Ridge / Lasso | λ | 防止過擬合 | 需要選擇 λ | 中等
| Decision Tree | max_depth | 可視化、非線性 | 過擬合、易受噪聲影響 | 小到中等
| Random Forest | n_estimators | 抗噪聲、可解釋 | 計算成本高 | 大量
| XGBoost | learning_rate | 高精度、可處理缺失值 | 需要調參 | 大量
| K‑means | k | 簡單快速 | 需要預先知道 k | 大量
| DBSCAN | eps, min_samples | 能偵測任意形狀聚類 | eps 的選擇困難 | 中等
| Q‑learning | α, γ | 理論成熟 | 需要大量交互 | 依環境
## 6.5 模型選擇策略
| 步驟 | 內容 |
|------|-------|
| **1. 明確問題類型** | 確定是回歸、分類、聚類或策略學習 |
| **2. 收集資料特徵** | 檢查特徵分布、缺失值、離群點 |
| **3. 選擇基礎模型** | 先用簡單模型(線性、樹)做基準 |
| **4. 交叉驗證** | K‑fold 或 Stratified K‑fold |
| **5. 超參數優化** | Grid Search / Random Search / Bayesian Optimization |
| **6. 評估指標** | 依問題選擇適當指標 |
| **7. 可擴展性** | 考慮計算成本、部署環境 |
> **技巧**:若同一套特徵能同時用於回歸與分類,先用 **Feature Importance**(如 SHAP)來篩選關鍵特徵,減少模型複雜度。
## 6.6 典型案例:客戶行為預測
1. **資料來源**:交易紀錄、瀏覽行為、社群互動。<br>2. **目標**:預測客戶流失(二分類)。<br>3. **流程**:
- 資料前處理(缺失填補、標準化)
- 特徵工程(如時間序列累積、交互特徵)
- 建模:隨機森林、XGBoost、最後嘗試 LightGBM
- 評估:AUC‑ROC、Precision@k
4. **重點**:特徵重要性分析與模型可解釋性(使用 SHAP)。
## 6.7 小結
- **三類型概覽**:監督式學習是預測任務的「第一道門」,非監督式學習則是資料「探索」的工具,強化學習專門處理「連續互動」環境。
- **演算法多樣化**:從簡單的線性模型到複雜的深度網路,選擇往往取決於資料量、特徵維度與部署需求。
- **評估與選擇**:正確的評估指標與交叉驗證流程是避免過擬合、確保模型泛化的關鍵。
- **實務提示**:在選擇模型前,先使用 **baseline**(如線性回歸或隨機森林)做基準,之後再逐步改進。若資源有限,請優先採用可擴展、可部署的演算法。
> **結語**:機器學習的核心在於「把數據轉化為知識」。本章提供了基礎理論與實務範例,下一章將進一步探索如何將這些模型實際應用於業務場景。