聊天視窗

洞悉未來:資料科學決策師的實務指南 - 第 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 小結 - 監督式與非監督式學習各有明確用途,決策者須根據資料標記與業務需求選擇。 - 常見模型的選擇應結合資料特性、解釋性需求與部署限制。 - 評估指標與交叉驗證是確保模型泛化與公平性的關鍵。 - 實務演示提供完整從資料讀取到模型評估的程式碼範例,便於快速落地。 > **下一章**將聚焦於「模型解釋與可視化」,協助決策者將模型洞察轉化為可執行策略。