CH4.2 常見機器學習演算法
常見機器學習演算法
迴歸演算法(線性迴歸 →Lasso/Ridge正則化迴歸 → SVR → 決策樹迴歸 → 集成迴歸:隨機森林/梯度提升/XGBoost/LightGBM)→ 分類演算法(邏輯迴歸 →SVM → 決策樹 → KNN → 樸素貝氏 → 集成分類)→ 非監督式演算法(分群:K-Means/階層式/DBSCAN;降維:PCA/t-SNE/UMAP;關聯規則:Apriori/FP-Growth;異常偵測:Isolation Forest/One-Class SVM)。核心是依資料特性、規模、解釋性需求挑選合適演算法。
1. 迴歸演算法:預測連續數值
(1) 線性迴歸
模型假設:線性關係、誤差常態分佈、變異數齊一性(Homoscedasticity)、誤差獨立性、無多重共線性。使用限制:對離群值敏感、無法捕捉非線性關係、多重共線性問題。
(2) Lasso 與 Ridge 迴歸(正則化迴歸)
| 比較項目 | Lasso 迴歸(L1) | Ridge 迴歸(L2) |
|---|---|---|
| 損失函數 | \(\sum(y_i-\hat{y}_i)^2 + \lambda\sum|\beta_j|\) | \(\sum(y_i-\hat{y}_i)^2 + \lambda\sum\beta_j^2\) |
| 對權重的效果 | 可將部分係數縮為零 → 自動特徵選擇 | 權重縮小但不會變零 |
| 適用情境 | 高維資料、需特徵選擇 | 多重共線性嚴重的情況 |
| 限制 | 高相關變數間可能只保留一個 | 無法自動簡化模型結構 |
| 全名由來 | Least Absolute Shrinkage and Selection Operator | 解沿「脊線(Ridge)」分佈,穩定 OLS 在共線性下的估計 |
(3) 支援向量迴歸(SVR)
SVR 是 SVM 的延伸,用於迴歸問題。核心概念:在誤差容忍範圍(ε-tube)內忽略誤差,只關注超出範圍的誤差:
其中 \(C\) 為懲罰參數、\(\varepsilon\) 為誤差容忍範圍;核函數(Kernel Function)可將問題延伸為非線性形式。SVR 的假設較少,不強制自變數與應變數呈線性關係,也不需誤差項服從常態分佈,對異常值有較高抵抗力,但計算成本高、參數設定複雜。
(4) 決策樹迴歸
依特徵取值不斷分割資料為子區塊,葉節點輸出該區塊樣本目標值的平均值作為預測。屬於非參數模型,不強制線性關係、常態誤差、變異數齊一或無共線性假設。缺點:容易過擬合、模型不連續(分段常數)、對資料微小變動敏感。
(5) 集成式迴歸
| 方法 | 核心概念 | 特點 |
|---|---|---|
| 隨機森林迴歸(Random Forest) | 建立多棵決策樹,各在隨機子樣本與隨機特徵子集上訓練,取平均為結果 | 抗過擬合能力強、可算特徵重要性;缺點是黑箱、記憶體需求高 |
| 梯度提升迴歸(Gradient Boosting) | 序列式集成,逐步訓練新樹修正前一棵樹的殘差 | 精確度通常高於隨機森林;訓練較慢、易過擬合、超參數多 |
| XGBoost | 二階導數(Hessian)加速分裂、Level-wise 層級式生長 | 支援稀疏資料與缺失值自動處理,內建 L1/L2 正則化 |
| LightGBM | Leaf-wise 葉子式生長、Histogram-based 計算 | 大數據下速度更快,但小資料集易因 Leaf-wise 造成過擬合 |
XGBoost 是「層級式生長(Level-wise)」,同一深度同時分裂所有葉節點;LightGBM 是「葉子式生長(Leaf-wise)」,優先分裂增益最大的葉節點,兩者生長策略方向相反,是常考的比較細節。
2. 分類演算法:預測離散類別
(1) 邏輯迴歸
雖名為「迴歸」,實際是分類演算法,尤其適合二元分類。模型假設對數勝率(Log-Odds)與特徵呈線性關係。多類別問題需擴展為 One-vs-Rest(OvR)或 Multinomial Logistic Regression。
(2) 支援向量機(SVM)
決策邊界 \(w\cdot x+b=0\),核心思想是最大化兩類別間隔(Margin)。若資料無法線性分離,可用核函數(線性核、多項式核、RBF 核、Sigmoid 核)映射到高維空間使其可分。
(3) 決策樹分類器
透過一系列「如果…那麼…」規則分割資料,常用分裂依據:
| 指標 | 說明 |
|---|---|
| 基尼不純度(Gini Impurity) | 衡量節點內混雜程度,值越小代表越集中於單一類別 |
| 資訊增益(Information Gain) | 依熵(Entropy)變化衡量分裂後不確定性降低多少 |
| 分類誤差(Classification Error) | 計算節點內樣本分錯比例 |
(4) K 最近鄰分類(KNN)
非參數、惰性學習(Lazy Learning)演算法:不建立顯式模型,訓練階段只是儲存資料,預測時計算新樣本與所有訓練樣本的距離,取 K 個最近鄰居投票決定類別。
KNN 對特徵尺度極為敏感,須先進行標準化/歸一化,否則某些特徵的影響力會被過度放大;在高維空間中會遭遇「維度詛咒」,導致「最近鄰居」概念失去意義。K 值選擇需透過交叉驗證,太小易受雜訊影響,太大則模糊類別邊界。
(5) 樸素貝氏分類(樸素貝氏)
根據貝氏定理計算樣本屬於某類別的機率,並假設特徵之間條件獨立(「樸素」的由來):
優點:計算高效、適合文本分類(垃圾郵件過濾、情感分析)、大規模資料集。限制:獨立假設在現實中很少完全成立;「零機率」問題(訓練集中未出現的特徵值會使後驗機率為零)需用拉普拉斯平滑(Laplace Smoothing)解決;不適用於迴歸問題。
(6) 集成式分類:Bagging vs Boosting
| 策略 | 核心概念 | 重點 | 代表演算法 |
|---|---|---|---|
| Bagging(Bootstrap Aggregating) | 隨機抽樣多個訓練子集,建立多個獨立模型,多數決 | 降低變異(Variance) | Random Forest |
| Boosting | 逐步建立模型,每個新模型修正前一模型錯誤,加權整合 | 降低偏差(Bias) | Gradient Boosting、XGBoost、LightGBM |
多類別策略:一對多(OvR)、一對一(OvO)、Softmax 機率輸出。
Bagging 的重點在降低變異(Variance),Boosting 的重點在降低偏差(Bias),這是集成學習策略選擇的核心邏輯,也是考試中辨別 Random Forest 與 Boosting 系列演算法本質差異的關鍵。
3. 分類/迴歸演算法快速比較表
| 演算法 | 任務類型 | 是否需特徵標準化 | 可解釋性 | 主要限制 |
|---|---|---|---|---|
| 線性/邏輯迴歸 | 迴歸/分類 | 建議 | 高 | 無法捕捉非線性關係 |
| 決策樹 | 兩者皆可 | 不需要 | 高(單棵) | 易過擬合 |
| SVM/SVR | 兩者皆可 | 需要 | 低 | 大資料計算成本高 |
| KNN | 兩者皆可 | 需要 | 中 | 維度詛咒、預測慢 |
| 樸素貝氏 | 分類 | 不需要 | 中 | 特徵獨立假設 |
| 隨機森林 | 兩者皆可 | 不需要 | 低(黑箱) | 模型體積大 |
| XGBoost/LightGBM | 兩者皆可 | 不需要 | 低(黑箱) | 超參數多,調參複雜 |
4. 非監督式演算法
(1) 分群分析
| 演算法 | 原理 | 優點 | 缺點 |
|---|---|---|---|
| K-Means | 迭代分配資料點至最近質心,更新質心直到收斂 | 簡單快速、大量資料效率高 | 需預先指定 K 值、對初始質心與離群值敏感、只能形成球形群集 |
| 階層式分群(Hierarchical) | 凝聚式(由下而上合併)或分裂式(由上而下分裂),形成樹狀圖(Dendrogram) | 無需預先指定 K 值,可呈現多層次分群結構 | 計算複雜度高、對離群值敏感、合併/分裂不可逆 |
| DBSCAN | 基於密度(Eps 鄰域半徑、MinPts 最小點數),核心點密度可達即形成群集 | 無需指定群數、可辨識任意形狀群集、能標記噪聲點 | 對參數 Eps/MinPts 高度敏感、密度不均勻資料表現不佳 |
(2) 降維技術
| 方法 | 線性/非線性 | 特點 |
|---|---|---|
| PCA | 線性 | 找最大變異方向的正交投影,數學基礎堅實,但對離群值敏感、缺乏直觀可解釋性 |
| t-SNE | 非線性 | 專為高維資料視覺化設計,用 KL 散度優化,善於保留局部結構,但計算成本高、不適合下游建模的預處理 |
| UMAP | 非線性 | 目標與 t-SNE 類似但運行更快,能處理更大資料集,同時保留局部與全局結構 |
t-SNE 主要用於視覺化,不適合作為下游機器學習任務的資料前處理,因為其映射是非線性且無法輕易應用到新資料;若需要可重複套用到新資料的降維前處理,應優先考慮 PCA。
(3) 關聯規則學習
以「購物籃分析」為典型應用,衡量標準:
Lift > 1 表示正相關;Lift < 1 表示負相關;Lift = 1 表示獨立。
| 演算法 | 原理 | 特點 |
|---|---|---|
| Apriori | 「若項集頻繁,其子集也頻繁」的性質,逐層生成候選集並剪枝 | 概念簡單,但需多次掃描資料集,高維稀疏資料效率低 |
| FP-Growth | 構建 FP 樹(Frequent Pattern Tree),無需生成候選集 | 只需兩次掃描,效率遠高於 Apriori,但大型資料集需要較多記憶體 |
(4) 異常偵測
| 演算法 | 原理 | 優點 | 缺點 |
|---|---|---|---|
| Isolation Forest | 隨機劃分特徵空間,異常點因孤立性路徑較短 | 效率高,適合高維與大規模資料,不需距離度量 | 對非常接近正常群的異常值較難偵測 |
| One-Class SVM | 只學習正常類別模式,構建包圍正常樣本的決策邊界 | 可處理非線性邊界,只需正常資料訓練 | 對參數敏感、計算成本較高 |
🔗 相關名詞卡
📝 章節考題自測(先作答,再點開解答)
Q1. 支援向量機(SVM)若用於迴歸問題,稱為什麼?
(A) Logistic Regression (B) Decision Tree Regression (C) Random Forest (D) Support Vector Regression
解答與解析
參考 Ans: (D) 當 SVM 應用於連續數值預測問題時,稱為支援向量迴歸(SVR),核心概念是在誤差容忍範圍(ε-tube)內忽略誤差,只關注超出範圍的誤差。
Q2. 在決策樹模型中,用於判斷分裂效果好壞的指標,常見的是下列哪一種?
(A) 機率密度函數 (B) 均方根誤差 (C) 基尼不純度(Gini Impurity) (D) 卷積核大小
解答與解析
參考 Ans: (C) 基尼不純度衡量節點內樣本的不純度,數值越低表示節點內樣本越集中於單一類別,是決策樹演算法常用的分裂判斷依據。
Q3. 下列關於 XGBoost 與 LightGBM 生長策略的敘述,何者正確?
(A) 兩者皆採用 Leaf-wise 生長 (B) XGBoost 為 Level-wise,LightGBM 為 Leaf-wise (C) XGBoost 為 Leaf-wise,LightGBM 為 Level-wise (D) 兩者皆採用 Level-wise
解答與解析
參考 Ans: (B) XGBoost 採用層級式生長(Level-wise),同一深度同時分裂所有葉節點;LightGBM 採用葉子式生長(Leaf-wise),優先分裂能帶來最大增益的葉節點,因此樹會垂直生長,形成更深但不均勻的樹結構。
Q4. Bagging 與 Boosting 集成策略的核心差異為何?
(A) Bagging 降低偏差、Boosting 降低變異 (B) Bagging 降低變異、Boosting 降低偏差 (C) 兩者皆降低偏差 (D) 兩者皆降低變異
解答與解析
參考 Ans: (B) Bagging(如 Random Forest)透過隨機抽樣建立多個獨立模型降低變異;Boosting(如 Gradient Boosting、XGBoost)透過逐步修正前一模型錯誤來降低偏差,兩者策略方向不同。
Q5. K-Means 聚類演算法中,K 代表什麼?
(A) 數據集中特徵的數量 (B) 數據集中樣本的數量 (C) 所需劃分的群組數量 (D) 迭代次數
解答與解析
參考 Ans: (C) K 在 K-Means 中代表希望將資料分為幾個群組,K 值選擇直接影響最終聚類結果,是重要的超參數,需預先指定。
Q6. 承上題,若不希望預先指定群集數量,且需辨識任意形狀的群集並自動標記噪聲點,較適合採用下列哪一種演算法?
(A) K-Means (B) DBSCAN (C) 線性迴歸 (D) 樸素貝氏
解答與解析
參考 Ans: (B) DBSCAN 基於密度分群,無需預先指定群集數量,能辨識任意形狀的群集並自動標記噪聲點(離群值),這是 K-Means 無法做到的。
Q7. 在關聯規則學習中,若規則 A⇒B 的 Support(A)=0.4,Support(A∪B)=0.2,請計算此規則的信賴度(Confidence)。
(A) 0.2 (B) 0.4 (C) 0.5 (D) 0.8
解答與解析
參考 Ans: (C) \(\text{Confidence}(A\Rightarrow B) = \dfrac{\text{Support}(A\cup B)}{\text{Support}(A)} = \dfrac{0.2}{0.4} = 0.5\)。信賴度衡量在包含 A 的交易中,同時也包含 B 的條件機率,數值越高代表規則可靠性越高。
Q8. 承上題,若 P(B)=0.5,此規則的提升度(Lift)為多少?此規則屬於正相關或負相關?
(A) Lift=1.0,獨立 (B) Lift=1.25,正相關 (C) Lift=0.5,負相關 (D) Lift=2.0,正相關
解答與解析
參考 Ans: (A) \(\text{Lift}(A\Rightarrow B) = \dfrac{\text{Confidence}(A\Rightarrow B)}{P(B)} = \dfrac{0.5}{0.5} = 1.0\)。Lift=1 表示 A 與 B 相互獨立,A 的出現對 B 的出現機率沒有影響。
Q9. 下列何者最適合用於高維資料的視覺化,但不適合作為下游機器學習任務的資料前處理?
(A) PCA (B) t-SNE (C) Label Encoding (D) One-hot Encoding
解答與解析
參考 Ans: (B) t-SNE 專為高維資料視覺化設計,映射是非線性的,無法輕易應用到新資料,因此不適合作為下游建模的通用降維前處理;PCA 則因為是線性且可重複套用,較適合作為前處理。
Q10. KNN 演算法在高維度資料上表現不佳的主要原因稱為?
(A) 過擬合 (B) 維度詛咒(Curse of Dimensionality) (C) 梯度消失 (D) 模式崩潰
解答與解析
參考 Ans: (B) 隨著特徵維度增加,資料點之間的距離會變得均勻(維度詛咒),導致「最近鄰居」的概念失去意義,使 KNN 的效能急劇下降,這是距離式模型在高維空間的共同挑戰。