提昇機器學習技術:提高準確性並減少錯誤
已發表: 2025-01-16Boosting 是機器學習 (ML) 中一種強大的整合學習技術,可透過減少錯誤來提高模型準確性。透過訓練序列模型來解決先前的缺點,Boosting 創建了強大的預測系統。本指南介紹了 boosting 的工作原理;其優點、挑戰和應用;以及它與 bagging 的比較。
目錄
- 什麼是提升?
- 偏差與方差
- Boosting 與 bagging
- 提昇如何運作
- 增強演算法的類型
- 升壓的應用
- 升壓的優點
- boosting 的挑戰與局限性
什麼是提升?
Boosting 是一種整合學習技術,可訓練新的順序模型來修正整合中先前模型的錯誤。整合學習技術是使用多個相似模型來提高效能和準確性的方法。在提升過程中,新模型僅根據整合的先前錯誤進行訓練。然後,新模型加入整合中,幫助其給出更準確的預測。任何新輸入都會透過模型進行聚合,以減少所有模型的錯誤。
準確度是一個廣泛的概念。 Boosting 透過減少模型偏差(以及較小程度的變異數)來專門提高模型效能。變異數和偏差是我們將在下一節中介紹的兩個重要的 ML 概念。
偏差與方差
偏差和變異數是整個機器學習的兩個基本屬性。任何機器學習演算法的目標都是減少模型的變異數和偏差。鑑於它們的重要性,我們將詳細解釋它們以及為什麼它們通常彼此不一致。
為了解釋每個概念,我們以給定有關房屋特徵的資料(例如,平方英尺、臥室數量等)來預測房屋的銷售價格為例。
偏見
偏差是衡量模型平均錯誤程度的指標。如果一棟房子的實際售價為 40 萬美元,而模型預測為 30 萬美元,則該數據點的偏差為 -10 萬美元。將整個訓練資料集的偏差進行平均,就得到了模型的偏差。
偏差通常是由於模型太簡單而無法理解特徵和輸出之間的複雜關係所造成的。過於簡單的模型可能會只專注於平方英尺,並且即使在訓練資料上也會始終出錯。用機器學習的術語來說,這稱為欠擬合。
變異數
方差衡量在給定相似輸入的情況下模型輸出的差異程度。在大多數情況下,位於相似社區、面積、臥室數量和浴室數量相似的房屋應該有相似的價格。但具有高方差的模型可能會給出截然不同的價格。為什麼?
該模型可能從訓練資料中學到了虛假關係(例如,認為房屋號碼影響價格)。這些虛假關係可能會淹沒數據中有用的關係。一般來說,複雜的模型會利用這些不相關的關係,稱為過度擬合。
偏差-方差權衡
理想情況下,您需要一個低偏差、低方差的 ML 模型,該模型能夠識別資料中的真實關係,但僅此而已。然而,這在實踐中很難做到。
提高模型的複雜性可以透過賦予模型在資料中發現更深層模式的能力來減少其偏差。然而,同樣的能力也可以幫助它找到不相關的模式,反之亦然,使得這種偏差與變異數的權衡難以解決。
提升可以改善偏差和方差
Boosting 是一種非常流行的整合學習技術,因為它可以減少偏差和變異數(儘管方差減少並不常見)。
透過修正先前的錯誤,提升可以降低平均錯誤率和模型集合的大小,從而降低偏差。
透過使用多個模型,可以消除各個模型的錯誤,從而可能導致變異數降低。
Boosting 與 bagging
在整合學習中,兩種最常見的技術是 boosting 和 bagging。 Bagging 取得訓練資料集,產生其隨機子集,並在每個子集上訓練不同的模型。然後結合使用這些模型來進行預測。這導致 bagging 和 boosting 之間存在相當多的差異,我們將在下面詳細介紹。
套袋 | 提升 | |
模型訓練 | 模型在不同的資料子集上並行訓練。 | 模型按順序進行訓練,每個模型都專注於前一個模型的錯誤。 |
減少錯誤焦點 | 減少方差 | 減少偏差 |
常用演算法 | 隨機森林、袋裝決策樹 | AdaBoost、坡度提升、XGBoost |
過擬合風險 | 隨機抽樣降低了過度擬合的風險 | 過度擬合的風險較高 |
計算複雜度 | 降低 | 更高 |
這兩種技術都很常見,但提升是更流行的選擇,因為它可以減少偏差和變異數。
提昇如何運作
讓我們了解一下 boosting 是如何運作的。本質上,提升包括在先前模型出錯的資料點上訓練每個新模型。共有三個部分:
- 按誤差對訓練資料進行加權
- 在此加權誤差資料集上訓練新模型
- 將新模型加入整合中
首先,假設我們已經訓練了初始模型(一個模型的集合)。
按誤差對訓練資料進行加權
我們透過現有的整合運行訓練數據,並注意整合對哪些輸入給出了錯誤的預測。然後,我們建立訓練資料集的修改版本,其中那些麻煩的輸入更具代表性或更重要。
訓練新模型
我們使用創建的修改資料集來訓練新模型,該模型與整合中的其他模型類型相同。然而,這個新模型更著重於訓練資料中的困難範例,因此它可能會在這些範例上表現得更好。這種錯誤性能的改進是減少偏差的重要組成部分。
融入新模式
新訓練的模型被添加到整合中,並且其預測根據其準確性進行加權。同時,新的輸入被傳遞到整合中的每個模型,並且每個模型的最終輸出被加權以獲得整合的輸出。
對於分類任務(通常在提升問題中在兩個標籤之間進行選擇),加權投票總和最高的類別被選為整合的預測。
對於迴歸任務,整合的預測是每個模型預測的加權平均值。
增強演算法的類型
增強演算法有多種變體,它們之間存在一些巨大差異。最受歡迎的是自適應增強 (AdaBoost)、梯度增強、極限梯度增強 (XGBoost) 和貓增強。我們將依序介紹每個內容。
阿達助推器
AdaBoost 與我們先前提出的 boosting 演算法非常相似:在訓練下一個模型時,對早期整合帶來問題的訓練資料會被賦予更多的權重。 AdaBoost 是最初的 boosting 演算法之一,以其簡單性而聞名。
與其他增強演算法相比,AdaBoost 不太容易出現過度擬合,因為新模型會看到訓練資料集的不同變化(硬資料點更為常見)。但是,與其他增強技術相比,它對異常資料更敏感,並且不會減少太多偏差。
梯度提升
梯度提升是一種獨特的提升方法。與自適應增強相比,新模型不會獲得訓練資料集的誤差加權版本。他們獲得原始數據集。然而,他們不是嘗試預測資料集中輸入的輸出,而是嘗試預測每個輸入上的前一個集合的負梯度。
負梯度本質上是整合模型權重和預測需要移動以減少誤差的方向,以更接近正確的答案。將負梯度添加到先前整合的輸出預測中(應用加權因子),以使其更接近正確。
梯度提升的效能遠高於 AdaBoosting,尤其是在複雜資料上。還有更多的超參數需要調整,這給了人們更多的控制權,但也增加了實驗的需要。
XGBoost
XGBoost(或極限梯度提升)是梯度提升的高度最佳化版本。 XGBoost 讓梯度提升訓練和推理更加並行。 XGBoost 還增加了正規化(即複雜性懲罰)以防止過度擬合並更好地處理遺失資料。最後,XGBoost 對於大型資料集或工作負載來說更具可擴展性。
XGBoost 的效能甚至比梯度提升還要高,是 2010 年代最受歡迎的 ML 演算法之一。但它也更難解釋並且運行起來計算成本更高。
貓助推器
CatBoost 是一種梯度增強形式,旨在處理分類資料。分類資料是指值可以屬於少數幾個有限組的資料。以下是一些範例:
- 是 - 沒有數據(例如,房子有車庫嗎?)
- 顏色類別(例如紅色、藍色、綠色)
- 產品類別(例如電子產品、服飾、家具)
梯度增強模型通常不能很好地處理分類數據,而 CatBoost 可以。 CatBoost 還可以處理連續數據,使其成為另一個流行的 boost 選擇。與其他梯度增強模型一樣,CatBoost 也存在計算複雜度和過度擬合的問題。
升壓的應用
Boosting 幾乎可以應用於任何機器學習問題,因為錯誤和偏差通常比我們想要的要高。分類和迴歸是機器學習的兩個重要分支,Boosting 對這兩個分支都適用。內容推薦和詐欺偵測是公司面臨的機器學習問題的兩個例子,boosting 也可以提供協助。
分類和回歸
分類和迴歸是機器學習的兩個核心任務。使用者可能想要預測圖像是否包含狗或貓(分類),或者他們可能想要預測房屋的售價(回歸)。 Boosting 對於這兩個任務都很有效,特別是當底層模型較弱或不複雜時。
內容推薦
Boosting 透過迭代提高使用者偏好的預測準確度來增強內容推薦(例如,Netflix 為您推薦的電影)。當建議模型無法捕捉某些觀看模式(例如季節性偏好或上下文相關的選擇)時,提升會建立專門關注這些錯過的模式的額外模型。序列中的每個新模型都會對先前預測不佳的使用者偏好給予額外的權重,從而降低錯誤率。
詐欺偵測
在詐欺檢測(金融公司的常見用例)中,透過逐步從錯誤分類的交易中學習來提高表現。如果初始模型錯過了複雜的詐欺模式,則更新的增強模型專門針對這些麻煩的情況。該技術特別適合不斷變化的詐欺策略,為最近的錯誤分類賦予更高的權重,使系統能夠維持高偵測率。
升壓的優點
Boosting 非常適合減少模型偏差,並在較小程度上減少變異數。與其他整合技術相比,它需要更少的數據,並且可以讓人們更好地控製過度擬合。
減少偏差和方差
高偏差意味著模型經常是錯誤的。 Boosting 是一種減少模型偏差的好技術。由於每個模型都專注於糾正先前模型的錯誤,因此整體上降低了錯誤率。
減少變異數也會產生副作用:較新的模型可能具有不同的訓練資料混合,從而允許不同模型中的誤差相互抵消。
需要更少的數據
與其他整合技術不同,Boosting 不需要龐大的資料集即可正常運作。由於每個新模型主要關注舊模型的錯誤,因此它的目標很窄,並且不需要大量資料。新模型可以使用現有的訓練資料並針對錯誤進行重複訓練。
更好地控製過度擬合
Boosting 有一些超參數,用於控制每個新模型對整合預測的貢獻程度。透過修改這些超參數,使用者可以減輕新模型的影響。這會增加偏差,但可能會降低方差,讓使用者可以控制他們想要在偏差與方差之間進行權衡的位置。
boosting 的挑戰與局限性
不過,Boosting 也有其註意事項。它需要更多的時間來訓練和使用,對異常資料敏感,並且需要更多的超參數調整。
訓練時間更長
在提升過程中,每個新模型都取決於先前的整合錯誤。這意味著必須一次訓練一個模型,導致訓練時間較長。另一個缺點是,順序訓練意味著你可能不知道提升是否有效,直到你訓練了十幾個模型。
異常值敏感度
在提升過程中,新模型僅關注先前模型的錯誤。訓練集中一些本應被忽略的離群資料可能反而成為後續模型的唯一焦點。這會降低整合的整體效能並浪費訓練時間。可能需要仔細的數據處理來抵消異常值的影響。
更多超參數調整
讓使用者更好地控製過度擬合的優勢也意味著使用者需要調整更多的超參數以在偏差和方差之間找到良好的平衡。通常需要進行多次增強實驗,這使得順序訓練變得更加繁瑣。 Boosting 需要大量的運算資源。