集成学习

在統計學和機器學習中，**集成學習**（英語：Ensemble learning）方法使用多種學習算法來獲得比單獨使用任何單獨的學習算法更好的預測性能。不像統計力學中的系綜通常是無限的，機器學習集合僅由一組具體的有限的可替代模型組成，但通常允許在這些可替代方案中存在更靈活的結構。

## 概述

監督學習算法通常被描述為執行搜索假設空間的任務以找到合適的假設，該假設將對特定問題做出良好預測。即使假設空間包含非常適合特定問題的假設，也可能很難找到一個很好的假設。集成學習結合多個假設，形成一個（希望）更好的假設。術語集成通常保留用於使用相同基礎學習器生成多個假設的方法。多分類器系統的更廣泛術語還包括由非相同基礎學習器得到的假設的結合。這種方法和現象也被另一個術語「群智」所描述，該術語來自多個 DREAM 生物醫學數據科學挑戰。

評估集成學習的預測通常需要比評估單個模型的預測更多的計算，因此集成可以被認為是通過執行大量額外計算來補償差的學習算法的方式。諸如決策樹之類的快速算法通常用於集合方法（如隨機森林），儘管較慢的算法也可以從集成方法中受益。

通過類比，集成技術也已用於無監督學習場景中，如共識聚類或異常檢測。

## 集成理論

集成學習本身是一種監督學習算法，因為它可以被訓練然後用於進行預測。因此，訓練後的集成模型代表了一個假設，但這個假設不一定被包含在構建它的模型的假設空間內。因此，可以證明集成學習在它們可以表示的功能方面具有更大的靈活性。理論上，這種靈活性使他們能夠比單一模型更多地過擬合訓練數據，但在實踐中，一些集成算法（如 Bagging 算法）傾向於減少對訓練數據過擬合相關的問題。

根據經驗，當模型之間存在顯著差異時，集成往往會產生更好的結果。因此，許多集成方法試圖促進它們組合的模型之間的多樣性。儘管可能不是直觀的，更隨機的算法（如隨機決策樹）可用於產生比非常有意識的算法（如熵減少決策樹）更強大的集成模型。然而，使用各種強大的學習算法已被證明是比使用試圖愚弄模型以促進多樣性的技術更有效。

## 集成模型大小

雖然集成中的組成分類器的數量對預測的準確性具有很大影響，但是解決該問題的研究數量有限。先驗地確定集成模型的大小以及大數據流的體積和速度使得這對於在線集成分類器來說更加重要，其中大多數統計測試被用於確定適當數量的組件。最近，理論框架表明對於集成模型存在理想數量的分類器，具有多於或少於該數量的分類器將使精度變差，這被稱為「集成構建效果遞減規律」。理論框架表明，使用與類標籤數相同的獨立分類器可以達到最高的準確度。 

## 常見的集成類型

### 貝式最佳分類器

貝式最佳分類器是一種分類技術，它是假設空間中所有假設的集合。平均而言，沒有其他集成模型可以超越它。樸素貝式最佳分類器假定數據在類上有條件地獨立並使計算更可行，如果該假設為真，則對每個假設進行投票，該投票與從系統採樣訓練數據集的可能性成比例。為了促進有限大小的訓練數據，每個假設的投票也乘以該假設的先驗概率。貝式最佳分類器可以用以下等式表示：

　
: $y={\underset {c_{j}\in C}{\mathrm {argmax} }}\sum _{h_{i}\in H}{P(c_{j}|h_{i})P(T|h_{i})P(h_{i})}$

其中 $y$ 是預測標籤， $C$ 是所有可能類的集合， $H$ 是假設空間， $P$ 是_概率_， $T$ 是訓練數據。 作為集成，貝式最佳分類器表示不一定在 $H$ 中的假設。然而，由貝式最佳分類器表示的假設是集合空間中的最佳假設（所有可能的集合的空間僅由 $H$ 中的假設組成）。

這個公式可以用貝式定理重新表述，貝式定理表明後驗與先驗的可能性成正比：

　
: $P(h_{i}|T)\propto P(T|h_{i})P(h_{i})$

因此，

　
: $y={\underset {c_{j}\in C}{\mathrm {argmax} }}\sum _{h_{i}\in H}{P(c_{j}|h_{i})P(h_{i}|T)}$

### Bootstrap 聚合（Bagging）

Bootstrap 聚合（Bootstrap Aggregating，Bagging）使集成模型中的每個模型在投票時具有相同的權重。為了降低不穩定過程如樹的方差，Bagging 對 B 個 (比如說，B 使用與類標籤數相同的數量) bootstrap datasets 上的模型求平均，從而降低其方差並導致預測性能的改善。例如，隨機森林算法將隨機決策樹與 Bagging 相結合，以實現更高的分類準確度。

### Boosting

Boosting 通過在訓練新模型實例時更注重先前模型錯誤分類的實例來增量構建集成模型。在某些情況下，Boosting 已被證明比 Bagging 可以得到更好的準確率，不過它也更傾向於對訓練數據過擬合。目前比較常見的增強實現有 AdaBoost 等算法。

### 貝式參數平均

貝式參數平均（Bayesian Parameter Averaging，BPA）是一種集成方法，它試圖通過對假設空間中的假設進行抽樣來近似貝式最佳分類器，並使用貝式定律將它們組合起來。與貝式最佳分類器不同，貝式模型平均（Bayesian Model Averaging，BMA）可以實際實現。通常使用諸如 MCMC 的蒙特卡羅方法對假設進行採樣。例如，可以使用吉布斯採樣來繪製代表分布 $P(T|H)$ 的假設。已經證明，在某些情況下，當以這種方式繪製假設並根據貝式定律求平均時，該算法具有預期誤差，該誤差被限制為貝式最佳分類器的預期誤差的兩倍。儘管這種技術理論正確，但早期工作中的實驗結果表明，與簡單的集成方法如 Bagging 相比，該方法促進了過擬合併且表現更差； however, these conclusions appear to be based on a misunderstanding of the purpose of Bayesian model averaging vs. model combination. 然而，這些結論似乎是基於對目的的誤解貝式模型平均與模型組合。此外，BMA 的理論和實踐取得了相當大的進展，最近的嚴格證明證明了 BMA 在高維設置中變量選擇和估計的準確性，並提供了實驗證據，強調了 BMA 中的稀疏執行先驗在緩解過擬合方面的作用。

### 貝式模型組合

貝式模型組合（BMC）是對貝式模型平均（BMA）的算法校正。 它不是單獨對整體中的每個模型進行採樣，而是從可能的集合空間中進行採樣（模型權重從具有均勻參數的 Dirichlet 分布中隨機抽取） 這種修改克服了 BMA 趨向於將所有權重賦予單個模型的趨勢 儘管 BMC 在計算上比 BMA 更昂貴，但它往往會產生顯著更好的結果 BMC 的結果顯示平均值優於（具有統計顯著性）BMA 和 Bagging。

使用貝式定律來計算模型權重需要計算給定每個模型的數據的概率，通常集成中的模型都不是生成訓練數據的分布，因此對於該項，它們都正確地接收到接近於零的值。如果集成足夠大以對整個模型空間進行採樣，這將很有效，但這種情況很少發生。因此，訓練數據中的每個模式將使集成權重朝向最接近訓練數據分布的集合中的模型移動，這實質上減少了用於進行模型選擇的不必要的複雜方法。

集成的可能權重可以看作是躺在單面上，在單形的每個頂點處，所有權重都被賦予集成中的單個模型。BMA 會聚到最接近訓練數據分布的頂點。相比之下，BMC 匯聚到這種分布投射到單純形態的點上。換句話說，它不是選擇最接近生成分布的一個模型，而是尋找最接近生成分布的模型的組合。

BMA 的結果通常可以通過使用交叉驗證從一系列模型中選擇最佳模型來近似。同樣地，可以通過使用交叉驗證來近似來自 BMC 的結果，以從可能的權重的隨機採樣中選擇最佳的集成組合。

### 桶模型

「桶模型」（英語：bucket of models）是一種使用模型選擇算法為每個問題選擇最佳模型的集成方法。當僅使用一個問題進行測試時，一組模型不會產生比集成中的最佳模型更好的結果，但是當針對許多問題進行評估時，它通常會產生比集成中的任何模型更好的結果。

最常見的方法用於模型的選擇是交叉驗證。它用以下偽代碼描述：

```
For each model m in the bucket:
  Do c times: (where 'c' is some constant)
    Randomly divide the training dataset into two datasets: A, and B.
    Train m with A
    Test m with B
Select the model that obtains the highest average score
```

交叉驗證選擇可以概括為：「使用訓練集嘗試所有選擇，並選擇最有效的方法」。

門控是交叉驗證選擇的一般化。它涉及訓練另一種學習模型，以確定桶中哪些模型最適合解決問題。通常，感知器被應用於門控模型。它可用於選擇「最佳」模型，或者可用於為桶中每個模型的預測提供線性權重。

當使用具有大量問題的桶模型時，可能希望避免需要花費很長時間訓練的一些模型。地標學習是一種尋求解決這一問題的元學習方法，它涉及僅訓練桶中的快速（但不精確）算法，然後使用這些算法的性能來幫助確定哪種慢（但準確）算法最有可能做得最好。

### Stacking

堆疊（英語：Stacking）（有時稱為堆疊泛化）涉及訓練學習算法以組合其他幾種學習算法的預測。首先，使用可用數據訓練所有其他算法，然後訓練組合器算法以使用其他算法的所有預測作為附加輸入進行最終預測。如果使用任意組合器算法，那麼堆疊理論上可以表示本文中描述的任何集合技術，但實際上，通常用邏輯回歸模型作為組合器。

Stacking 通常比任何一個經過訓練的模型都能產生更好的性能，它已成功用於監督學習任務（如回歸、 分類和距離學習 ）和無監督學習（如密度估計）。 Stacking 也被用於評估 Bagging 的錯誤率。 據報導，它的表現超過了貝式模型的平均值。在 Netflix 競賽中兩個表現最好的人使用混合方法（英語：Blending），這可以被認為是一種 Stacking 形式。

## 實現庫

* R：至少有三個軟體包提供貝式模型平均工具，包括 BMS（貝式模型選擇）包、BAS（貝式自適應採樣的首字母縮寫）包、和 BMA 包。H2O 包提供了許多機器學習模型，包括一個集成模型，也可以使用 Spark 進行訓練。
* Python：Scikit-learn，一個用於 Python 機器學習的軟體包，提供用於集成學習的軟體包，包括用於 Bagging 和平均方法的軟體包。
* MATLAB：分類集成在統計和機器學習工具箱中實現。

## 集成學習應用

近年來，由於計算能力不斷提高，允許在合理的時間範圍內訓練大型集成模型，其應用數量也越來越多。集成分類器的一些應用包括：

### 遙測

#### 土地覆蓋測繪

土地覆蓋測繪是地球觀測衛星傳感器的主要應用之一，利用遙測和地理空間數據識別位於目標區域表面的材料和物體。一般來說，目標材料的類別包括道路、建築物、河流、湖泊和植被。基於人工神經網絡、核主成分分析（KPCA）、Boosting 決策樹、隨機森林和自動設計多分類器系統等不同的集成學習方法可以有效識別土地覆蓋物。

#### 變化的檢測

變化檢測是一種圖像分析問題，識別土地覆蓋隨時間變化的地方。變化檢測廣泛應用於城市發展、森林和植被動態、土地利用和災害監測等領域。集成分類器在變化檢測中的最早應用是通過多數投票、貝式平均和最大後驗概率設計的。

### 計算機安全

#### 分布式拒絕服務

分布式拒絕服務攻擊是網際網路服務提供商可能遭受的最具威脅性的網絡攻擊之一。通過組合單個分類器的輸出，集成分類器減少了檢測和區分此類攻擊與 Slashdot 效應的總誤差。

#### 惡意軟體檢測

使用機器學習技術對計算機病毒、計算機蠕蟲、特洛伊木馬、勒索軟體和間諜軟體等惡意軟體代碼進行分類，其靈感來自文本分類問題。 集成學習系統在這方面已經顯示出適當的功效。

#### 入侵檢測

入侵檢測系統監控計算機網絡或計算機系統，以識別入侵者代碼，如異常檢測過程。集成學習成功地幫助這種監控系統減少了它們的總誤差。

### 人臉識別

人臉識別最近已經成為最受歡迎的模式識別研究領域之一，它通過他 / 她的數字圖像來處理人的識別或驗證。

基於 Gabor Fisher 分類器和獨立分量分析預處理技術的分層集成是該領域中最早使用的一些集成方法。

### 情感識別

語音識別主要基於深度學習，因為谷歌、微軟和 IBM 這一領域的大多數業內人士都表示，他們的語音識別的核心技術是基於這種方法。基於語音與集成學習的情感識別也可以有令人滿意的表現。

它也被成功用於面部情緒識別。

### 欺詐檢測

欺詐檢測涉及銀行欺詐的識別，例如洗錢、信用卡欺詐和電信欺詐，它們具有廣泛的機器學習研究和應用領域。由於集成學習提高了正常行為建模的穩健性，因此有人提出將其作為檢測銀行和信用卡系統中此類欺詐案件和活動的有效技術。

### 金融決策

預測業務失敗的準確性是財務決策中非常關鍵的問題。因此，不同的集成分類器被提出用於預測金融危機和財務困境。此外，在基於交易的操縱問題中，交易者試圖通過買賣活動來操縱股票價格，集成分類器需要分析股票市場數據的變化並檢測股票價格操縱的可疑症狀。

=== 醫學生
集成分類器已成功應用於腦 - 機接口、蛋白質組學和醫學診斷，例如基於 MRI 數據集的神經認知障礙（即阿茲海默症或肌強直性營養不良）檢測。

 

## 參考文獻