聊天視窗

數據驅動決策:從原始資料到洞察的全流程 - 第 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**(如線性回歸或隨機森林)做基準,之後再逐步改進。若資源有限,請優先採用可擴展、可部署的演算法。 > **結語**:機器學習的核心在於「把數據轉化為知識」。本章提供了基礎理論與實務範例,下一章將進一步探索如何將這些模型實際應用於業務場景。