梯度提升技術
梯度提升,亦稱作梯度增強,是一種用於迴歸和分類問題的機器學習技術。其產生的預測模型是弱預測模型的整合,如採用典型的決策樹作為弱預測模型,這時則為梯度提升樹(GBT或GBDT)。像其他提升方法一樣,它以分階段的方式構建模型,但它通過允許對任意可微分損失函數進行最佳化作為對一般提升方法的推廣。
梯度提升技術源自於Leo Breiman於1997年時將提升方法用於最佳化演算法的觀察[1]。隨後Jerome H. Friedman於1999年時提出了顯式迴歸梯度增強演算法[2][3]。Llew Mason、Jonathan Baxter、Peter Bartlett和Marcus Frean則針對梯度提升在一般的函數空間的運用進行研究,並於1999年在研討會發表之後[4],同年正式發表了論文[5]。該論文介紹了將提升演算法看作「函數空間上的梯度下降迭代」演算法的觀點。也就是將其視為通過迭代地選擇指向負梯度方向的函數(弱預測模型),來最佳化函數空間上的成本函數的演算法。這種將提升視為函數梯度的觀點,導致了提升演算法被運用於迴歸和分類之外的其他機器學習和統計領域的後續發展。
非正式介紹
編輯(本節遵循Li對梯度增強的說明[6]。)
與其他增強方法一樣,梯度增強以迭代方式將弱的「學習器」組合為一個強學習器。最簡單的解釋是在最小平方迴歸中,通過最小化均方誤差 ,「教」模型 預測實數值 。
在梯度提升的每個階段 , , 假設已經有一個不太完美的模型 (最開始時只是一個預測輸出變數 y 均值的模型)。 梯度提升演算法通過在當前模型 增加一個新的估計量 h 得到一個更好的模型: . 為了求得 , 梯度提升基於以下觀察:一個完美的 h 可以完美預測當前不完美模型 的殘差,即滿足,
或者,等效地有,
- .
因此,梯度提升通過擬合殘差 得到 h 。和其他提升方法的變體一樣, 通過糾正 的誤差變得更完美。 這個想法可以擴充到均方誤差損失之外的任意損失函數,甚至擴充到分類與排序問題,只要觀察到以下一點:模型的殘差 就是均方損失函數 關於 的負梯度。因此,梯度提升其實是一種 梯度下降演算法,可以代入除了均方損失之外的不同的損失函數,得到不同的梯度。
演算法
編輯在許多有監督學習問題中,一個輸出變數y和一個輸入變數x通過聯合概率分佈 描述 。給定訓練集 ,目的是在所有具有給定形式的函數 中找到一個 使某些指定損失函數 的期望值達到最小:
- .
梯度提升方法通過某一類 中弱學習器(或稱基學習器) 帶權重和的形式來表示對實值變數y做出估計的 :
- .
根據經驗風險最小化原理,該方法試圖找到一個近似 可以最大程度地減少訓練集上損失函數的平均值,即,最小化經驗風險。它是從一個由常數函數組成的模型 開始 ,並以貪心的方式逐步擴充:
- ,
- ,
上式 是基學習器。
不幸的是,通常在每個步驟中為任意損失函數L選擇最佳函數h是計算上不可行的最佳化問題。因此,我們將方法局限於問題的簡化版本。
這個想法是對這個最小化問題(函數梯度下降)應用梯度下降步驟。如果我們考慮連續情況,即 是上的任意微分函數的集合 ,我們將根據以下方程式更新模型
式子中,對於 是關於函數 求導, 是步長。 但是在離散情況下,即 如果是有限的,我們選擇最接近L梯度的候選函數h ,然後可以根據上述等式通過線搜尋來計算系數γ。請注意,這種方法是一種啟發式方法,因此不能給出給定問題的精確解決方案,而是一種近似方法。 在偽代碼中,通用梯度增強方法是[2][7]:
Input: training set a differentiable loss function number of iterations M.
Algorithm:
- Initialize model with a constant value:
- For m = 1 to M:
- Compute so-called pseudo-residuals:
- Fit a base learner (or weak learner, e.g. tree) to pseudo-residuals, i.e. train it using the training set .
- Compute multiplier by solving the following one-dimensional optimization problem:
- Update the model:
- Compute so-called pseudo-residuals:
- Output
梯度樹增強
編輯梯度提升通常與固定大小的決策樹 (尤其是CART樹)一起用作基礎學習者。 對於這種特殊情況,Friedman提出了對梯度增強方法的改進,以提高每個基礎學習者的適應質素。
第m步的通用梯度提升將適合決策樹 偽殘留物。 讓 是它的葉子數。 樹將輸入空間劃分為 不相交的區域 並預測每個區域的恆定值。 使用指標符號 ,輸出 輸入x可以寫為和:
這裏 是該區域中預測的值 [a]。
然後系數 乘以一些值 ,使用線搜尋進行選擇,以最大程度地減少損失函數,並按以下方式更新模型:
佛利民(Friedman)建議修改此演算法,以便選擇一個單獨的最佳值 每個樹的區域,而不是單個 為整棵樹。 他稱修改後的演算法為「 TreeBoost」。 系數 然後可以簡單地丟棄樹擬合過程中的數據,模型更新規則變為:
樹木大小
編輯(樹中終端節點的數量)是該方法的參數,可以針對手頭的數據集進行調整。 它控制模型中變數之間允許的最大互動級別。 用 ( 決策樹樁 ),不允許變數之間進行互動。 用 該模型可能包括多達兩個變數之間的相互作用的影響,依此類推。
Hastie等人評論通常 對於提升效果很好,結果對選擇 在這個範圍內 不足以用於許多應用程式,並且 不太可能是必需的[7]。
正則化
編輯過於緊密地擬合訓練集可能導致模型的泛化能力下降。 幾種所謂的正則化技術通過限制擬合過程來減少這種過度擬合的效果。
一個自然的正則化參數是梯度提升迭代的次數M(即,當基礎學習者是決策樹時,模型中的樹的數量)。M的增加會減少訓練集上的誤差,但將其設置得過高可能會導致過度擬合。 通常通過監視單獨的驗證數據集上的預測誤差來選擇M的最佳值。 除了控制M外,還使用其他幾種正則化技術。
另一個正則化參數是樹的深度。 該值越高,模型越可能適合訓練數據。
收縮率
編輯梯度增強方法的一個重要部分是通過收縮排行正則化,它包括如下修改更新規則:
哪裏參數 被稱為「學習率」。
根據經驗發現,使用較小的學習率 (例如 )在不縮小(而不縮小)的情況下,極大地提高了模型的泛化能力 )[7]。然而,這是以在訓練和查詢期間增加計算時間為代價的:較低的學習率需要更多的迭代。
隨機梯度增強
編輯引入梯度增強後不久,Friedman在Breiman的bootstrap聚合 (「裝袋」)方法的啟發下 ,對該演算法進行了較小的修改[3]。具體來說,他提出在演算法的每次迭代中,基礎學習者都應適合隨機抽取的訓練集的子樣本,而無需替換。[b]佛利民(Friedman)觀察到,通過這種修改,梯度增強的精度有了顯着提高。
子樣本大小是某個常數 訓練集的大小。 什麼時候 ,該演算法是確定性的,並且與上述演算法相同。 較小的值 將隨機性引入演算法中,並防止過度擬合 ,作為一種正則化 。 該演算法也變得更快,因為迴歸樹必須在每次迭代時都適合較小的數據集。佛利民[3]獲得了 在中小型訓練集上可獲得良好的結果。 因此, 通常將其設置為0.5,這意味着訓練集的一半用於構建每個基礎學習者。
同樣,像在裝袋中一樣,子採樣允許通過評估那些在下一個基礎學習者的構建中未使用的觀察值的預測來定義預測效能改進的袋外誤差 。 預算外的估計有助於避免需要獨立的驗證數據集,但通常會低估實際效能的提高和最佳迭代次數。 [8][9]
葉子中的觀察數
編輯梯度樹增強實現通常還通過限制樹的終端節點中的最小觀察次數來使用正則化(此參數在R gbm
軟件套件中命名為n.minobsinnode
[8])。通過忽略導致導致節點包含少於此訓練集實例數量的節點的任何拆分,在樹構建過程中使用它。
施加此限制有助於減少葉子預測的差異。
懲罰樹木的複雜性
編輯用於梯度增強樹的另一種有用的正則化技術是懲罰學習模型的模型複雜性。 [10] 模型複雜度可以定義為學習樹中葉子的比例。 損失和模型複雜性的聯合最佳化對應於後修剪演算法,該演算法可刪除未能將損失降低閾值的分支。 其他種類的正規化,例如 還可以添加對葉子值的懲罰以避免過度擬合 。
用法
編輯梯度提升可以用於學習排名 。 商業網絡搜尋引擎Yahoo [11]和Yandex [12]在其機器學習的排名引擎中使用了梯度增強的變體。
名字
編輯該方法有多種名稱。佛利民(Friedman)將他的迴歸技術稱為「梯度提升機」(GBM)。 [2] 梅森,巴克斯特等。將廣義的演算法抽象類描述為「功能梯度提升」[4][5]。佛利民(Friedman)等人。將梯度提升模型的進展描述為多重可加迴歸樹(MART)[13];Elith等。將這種方法描述為「增強迴歸樹」(BRT)[14]。
R的一種流行的開源實現將其稱為「通用提升模型」[8]。但是,使用BRT擴充這項工作的軟件套件。 [15] Salford Systems的商業實現使用名稱「 Multiple Additive Regression Trees」(MART)和TreeNet,兩者均為商標。 [ 需要參照 ]
參見
編輯註解
編輯- ^ Note: in case of usual CART trees, the trees are fitted using least-squares loss, and so the coefficient for the region is equal to just the value of output variable, averaged over all training instances in .
- ^ Note that this is different from bagging, which samples with replacement because it uses samples of the same size as the training set.
參考文獻
編輯- ^ Breiman, L. Arcing The Edge (PDF). Statistics Department, University of California, Berkeley. June 1997 [2019-11-12]. (原始內容存檔 (PDF)於2020-05-09).
- ^ 2.0 2.1 2.2 Friedman, J. H. Greedy Function Approximation: A Gradient Boosting Machine (PDF). February 1999 [2019-11-12]. (原始內容存檔 (PDF)於2019-11-01).
- ^ 3.0 3.1 3.2 Friedman, J. H. Stochastic Gradient Boosting (PDF). March 1999 [2019-11-12]. (原始內容存檔 (PDF)於2014-08-01).
- ^ 4.0 4.1 Mason, L.; Baxter, J.; Bartlett, P. L.; Frean, Marcus. Boosting Algorithms as Gradient Descent (PDF). S.A. Solla and T.K. Leen and K. Müller (編). Advances in Neural Information Processing Systems 12. MIT Press: 512–518. 1999 [2022-09-10]. (原始內容存檔 (PDF)於2019-12-22).
- ^ 5.0 5.1 Mason, L.; Baxter, J.; Bartlett, P. L.; Frean, Marcus. Boosting Algorithms as Gradient Descent in Function Space (PDF). May 1999 [2019-11-12]. (原始內容 (PDF)存檔於2018-12-22).
- ^ Cheng Li. A Gentle Introduction to Gradient Boosting (PDF). [2019-11-12]. (原始內容存檔 (PDF)於2018-10-24).
- ^ 7.0 7.1 7.2 Hastie, T.; Tibshirani, R.; Friedman, J. H. 10. Boosting and Additive Trees. The Elements of Statistical Learning: Data Mining, Inference, and Prediction. 2nd. New York: Springer. 2009: 337–384. ISBN 978-0-387-84857-0. (原始內容存檔於2009-11-10).
- ^ 8.0 8.1 8.2 Ridgeway, Greg. Generalized Boosted Models: A guide to the gbm package (PDF). 2007. (原始內容存檔 (PDF)於2020-02-10).
- ^ Learn Gradient Boosting Algorithm for better predictions (with codes in R). [2019-11-12]. (原始內容存檔於2019-08-13).
- ^ Tianqi Chen. Introduction to Boosted Trees (頁面存檔備份,存於互聯網檔案館)
- ^ Cossock, David and Zhang, Tong (2008). Statistical Analysis of Bayes Optimal Subset Ranking 互聯網檔案館的存檔,存檔日期2010-08-07., page 14.
- ^ Yandex corporate blog entry about new ranking model "Snezhinsk" (頁面存檔備份,存於互聯網檔案館) (in Russian)
- ^ Friedman, Jerome. Multiple Additive Regression Trees with Application in Epidemiology. Statistics in Medicine. 2003, 22 (9): 1365–1381. PMID 12704603. doi:10.1002/sim.1501.
- ^ Elith, Jane. A working guide to boosted regression trees. Journal of Animal Ecology. 2008, 77 (4): 802–813. PMID 18397250. doi:10.1111/j.1365-2656.2008.01390.x.
- ^ Elith, Jane. Boosted Regression Trees for ecological modeling (PDF). CRAN. CRAN. [31 August 2018]. (原始內容存檔 (PDF)於2020-07-25).