<ruby id="bdb3f"></ruby>

    <p id="bdb3f"><cite id="bdb3f"></cite></p>

      <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
        <p id="bdb3f"><cite id="bdb3f"></cite></p>

          <pre id="bdb3f"></pre>
          <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

          <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
          <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

          <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                <ruby id="bdb3f"></ruby>

                合規國際互聯網加速 OSASE為企業客戶提供高速穩定SD-WAN國際加速解決方案。 廣告
                # 淺談機器學習的梯度提升算法 > 原文: [https://machinelearningmastery.com/gentle-introduction-gradient-boosting-algorithm-machine-learning/](https://machinelearningmastery.com/gentle-introduction-gradient-boosting-algorithm-machine-learning/) 梯度提升是構建預測模型的最強大技術之一。 在這篇文章中,您將發現梯度提升機器學習算法,并輕松介紹它的來源和工作原理。 閱讀這篇文章后,你會知道: * 從學習理論和 AdaBoost 推動的起源。 * 梯度提升的工作原理包括損失函數,弱學習器和加法模型。 * 如何通過各種正則化方案提高基本算法的表現 讓我們開始吧。 ![A Gentle Introduction to the Gradient Boosting Algorithm for Machine Learning](https://img.kancloud.cn/06/3a/063a05a3fbe761a3726dd4051aa8f14a_640x439.jpg) 機器學習梯度提升算法的溫和介紹 [brando.n](https://www.flickr.com/photos/bpprice/12298787813/) 的照片,保留一些權利。 ## 提升的起源 提升的想法來自于弱學習器是否可以被修改為變得更好的想法。 Michael Kearns 將目標闡述為“_ 假設推進問題 _”從實際角度闡述了目標: > ...一種將相對較差的假設轉換為非常好的假設的有效算法 - [關于假設提升的思考](https://www.cis.upenn.edu/~mkearns/papers/boostnote.pdf) [PDF],1988 弱假設或弱學習器被定義為其表現至少略好于隨機機會的假設。 這些想法建立在 Leslie Valiant 關于免費分發或[概率近似正確](https://en.wikipedia.org/wiki/Probably_approximately_correct_learning)(PAC)學習的工作之上,這是一個研究機器學習問題復雜性的框架。 假設提升是過濾觀察的想法,留下弱學習器可以處理的觀察,并專注于開發新的弱學習以處理剩余的困難觀察。 > 我們的想法是多次使用弱學習方法來得到一系列假設,每一個假設都重新聚焦于前面發現的困難和錯誤分類的例子。 ...但是,請注意,如何做到這一點并不明顯 - [大概正確:大自然在復雜世界中學習和繁榮的算法](http://www.amazon.com/dp/0465060722?tag=inspiredalgor-20),第 152 頁,2013 ### AdaBoost 第一個提升算法 在應用中取得巨大成功的第一個實現提升的是 [Adaptive Boosting 或 AdaBoost](http://machinelearningmastery.com/boosting-and-adaboost-for-machine-learning/) 。 > 提升是指通過組合粗略和中度不準確的經驗法則來產生非常準確的預測規則的一般問題。 - [在線學習的決策理論推廣及其應用](http://www.face-rec.org/algorithms/Boosting-Ensemble/decision-theoretic_generalization.pdf) [PDF],1995 AdaBoost 中的弱學習器是決策樹,只有一個分裂,稱為決策樹樁的短缺。 AdaBoost 通過對觀察結果進行加權,更加重視難以分類的實例,而不是那些已經處理好的實例。新的弱學習器按順序添加,將他們的訓練集中在更難的模式上。 > 這意味著難以分類的樣本會獲得越來越大的權重,直到算法識別出正確分類這些樣本的模型 - [Applied Predictive Modeling](http://www.amazon.com/dp/1461468485?tag=inspiredalgor-20) ,2013 通過對弱學習器預測的多數投票進行預測,并根據他們的個人準確性進行加權。 AdaBoost 算法最成功的形式是二進制分類問題,稱為 AdaBoost.M1。 您可以在帖子中了解有關 AdaBoost 算法的更多信息: * [Boosting 和 AdaBoost 機器學習](http://machinelearningmastery.com/boosting-and-adaboost-for-machine-learning/)。 ### AdaBoost 作為梯度提升的推廣 AdaBoost 和相關算法首先由 Breiman 稱之為 ARCing 算法的統計框架重鑄。 > Arcing 是 Adaptive Reweighting and Combining 的首字母縮寫。電弧放電算法中的每個步驟都包括加權最小化,然后重新計算[分類器]和[加權輸入]。 - [預測游戲和拱形算法](https://www.stat.berkeley.edu/~breiman/games.pdf) [PDF],1997 這個框架由 Friedman 進一步開發,稱為 Gradient Boosting Machines。后來稱為梯度提升或梯度樹增強。 統計框架將推進作為一個數值優化問題,其目標是通過使用梯度下降類似過程添加弱學習器來最小化模型的損失。 這類算法被描述為階段性加法模型。這是因為一次添加一個新的弱學習器,并且模型中現有的弱學習器被凍結并保持不變。 > 請注意,此階段策略與逐步方法不同,后者在添加新的時重新調整先前輸入的術語。 - [貪婪函數逼近:梯度增壓機](https://statweb.stanford.edu/~jhf/ftp/trebst.pdf) [PDF],1999 泛化允許使用任意可微分損失函數,將技術擴展到二元分類問題之外,以支持回歸,多類分類等。 ## 梯度提升的工作原理 梯度提升涉及三個要素: 1. 要優化的損失函數。 2. 做出預測的弱學習器。 3. 添加模型,添加弱學習器以最小化損失函數。 ### 1.損失功能 使用的損失函數取決于要解決的問題類型。 它必須是可區分的,但支持許多標準丟失函數,您可以定義自己的函數。 例如,回歸可能使用平方誤差,分類可能使用對數損失。 梯度提升框架的一個好處是不必為可能想要使用的每個損失函數導出新的增強算法,相反,它是足夠通用的框架,可以使用任何可微分損失函數。 ### 2.弱小的學習器 決策樹被用作梯度提升中的弱學習器。 特別是使用回歸樹,其輸出分裂的實際值并且其輸出可以被加在一起,允許添加后續模型輸出并“校正”預測中的殘差。 樹木以貪婪的方式構建,根據基尼等純度分數選擇最佳分割點,或盡量減少損失。 最初,例如在 AdaBoost 的情況下,使用非常短的決策樹,其僅具有單個分割,稱為決策殘余。較大的樹木通常可以使用 4 到 8 級。 通常以特定方式約束弱學習器,例如最大層數,節點,分裂或葉節點。 這是為了確保學習器保持弱勢,但仍然可以貪婪地構建。 ### 3.添加劑模型 樹一次添加一個樹,模型中的現有樹不會更改。 梯度下降程序用于最小化添加樹木時的損失。 傳統上,梯度下降用于最小化一組參數,例如回歸方程中的系數或神經網絡中的權重。在計算錯誤或丟失之后,更新權重以最小化該錯誤。 我們有弱學習器子模型或更具體的決策樹,而不是參數。在計算損失之后,為了執行梯度下降過程,我們必須向模型添加樹以減少損失(即遵循梯度)。我們通過參數化樹來完成此操作,然后修改樹的參數并向右移動(減少剩余損失。 通常,這種方法稱為功能梯度下降或具有功能的梯度下降。 > 產生優化[成本]的分類器的加權組合的一種方法是通過函數空間中的梯度下降 - [在函數空間中提升算法作為梯度下降](http://papers.nips.cc/paper/1766-boosting-algorithms-as-gradient-descent.pdf) [PDF],1999 然后將新樹的輸出添加到現有樹序列的輸出中,以便糾正或改進模型的最終輸出。 一旦損失達到可接受的水平或在外部驗證數據集上不再改進,則添加固定數量的樹或訓練停止。 ## 基本梯度提升的改進 梯度提升是一種貪婪算法,可以快速過度訓練數據集。 它可以受益于懲罰算法的各個部分的正則化方法,并且通常通過減少過度擬合來改善算法的表現。 在本節中,我們將介紹基本梯度提升的 4 個增強功能: 1. 樹約束 2. 收縮 3. 隨機抽樣 4. 懲罰學習 ### 1.樹約束 重要的是弱勢學習器有技巧但仍然很弱。 樹可以通過多種方式進行約束。 一個好的通用啟發式方法是,樹的創建越多,模型中需要的樹就越多,反之,在不受約束的單個樹中,所需的樹就越少。 以下是可以對決策樹構造施加的一些約束: * **樹木數量**,通常會為模型添加更多樹木,過度擬合可能會非常緩慢。建議繼續添加樹木,直至觀察不到進一步的改善。 * **樹深**,更深的樹木更復雜的樹木和更短的樹木是首選。通常,4-8 級可以看到更好的結果。 * **節點數或葉數**,如深度,這可以約束樹的大小,但如果使用其他約束,則不限于對稱結構。 * **每次分割的觀察次數**對訓練節點的訓練數據量施加最小約束,然后才能考慮分割 * **最小化損失**是對添加到樹中的任何拆分的改進的約束。 ### 2.加權更新 每棵樹的預測按順序加在一起。 可以對每個樹對該總和的貢獻進行加權以減慢算法的學習。這種加權稱為收縮或學習率。 > 每個更新只是通過“學習速率參數 v”的值進行縮放 — [Greedy Function Approximation: A Gradient Boosting Machine](https://statweb.stanford.edu/~jhf/ftp/trebst.pdf)?[PDF], 1999 結果是學習速度變慢,反過來需要將更多樹木添加到模型中,反過來需要更長的時間來訓練,提供樹木數量和學習率之間的配置權衡。 > 減小 v [學習率]的值會增加 M [樹的數量]的最佳值。 — [Greedy Function Approximation: A Gradient Boosting Machine](https://statweb.stanford.edu/~jhf/ftp/trebst.pdf)?[PDF], 1999 通常具有 0.1 至 0.3 范圍內的小值,以及小于 0.1 的值。 > 與隨機優化中的學習速率類似,收縮減少了每棵樹的影響,并為將來的樹木留出了空間來改進模型。 - [隨機梯度提升](https://statweb.stanford.edu/~jhf/ftp/stobst.pdf) [PDF],1999 ### 3.隨機梯度提升 對裝袋合奏和隨機森林的深入了解允許從訓練數據集的子樣本中貪婪地創建樹。 可以使用相同的益處來減少梯度提升模型中序列中的樹之間的相關性。 這種增強的變化稱為隨機梯度提升。 > 在每次迭代中,從完整訓練數據集中隨機(無替換)繪制訓練數據的子樣本。然后使用隨機選擇的子樣本而不是完整樣本來適合基礎學習器。 — [Stochastic Gradient Boosting](https://statweb.stanford.edu/~jhf/ftp/stobst.pdf)?[PDF], 1999 可以使用的一些隨機增壓變體: * 在創建每個樹之前的子樣本行。 * 創建每個樹之前的子樣本列 * 在考慮每個拆分之前的子采樣列。 通常,積極的子采樣(例如僅選擇 50%的數據)已被證明是有益的。 > 根據用戶反饋,使用列子采樣可以比傳統的行子采樣更加防止過度擬合 - [XGBoost:可擴展的樹升壓系統](https://arxiv.org/abs/1603.02754),2016 ### 4\. Penalized Gradient Boosting 除了它們的結構之外,還可以對參數化樹施加附加約束。 像 CART 這樣的經典決策樹不被用作弱學習器,而是使用稱為回歸樹的修改形式,其在葉節點(也稱為終端節點)中具有數值。在一些文獻中,樹葉中的值可以稱為權重。 因此,可以使用流行的正則化函數來規范樹的葉權值,例如: * L1 權重的正則化。 * 權重的 L2 正則化。 > 額外的正則化項有助于平滑最終學習的權重以避免過度擬合。直觀地,正則化目標將傾向于選擇采用簡單和預測函數的模型。 — [XGBoost: A Scalable Tree Boosting System](https://arxiv.org/abs/1603.02754), 2016 ## 梯度提升資源 梯度提升是一種迷人的算法,我相信你想要更深入。 本節列出了可用于了解梯度提升算法的更多信息。 ### 梯度提升視頻 * [Gradient Boosting Machine Learning](https://www.youtube.com/watch?v=wPqtzj5VZus) ,Trevor Hastie,2014 * [Gradient Boosting](https://www.youtube.com/watch?v=sRktKszFmSk) ,Alexander Ihler,2012 * [GBM](https://www.youtube.com/watch?v=WZvPUGNJg18) ,John Mount,2015 年 * [學習:提升](https://www.youtube.com/watch?v=UHBmv7qCey4),麻省理工學院 6.034 人工智能,2010 * [xgboost:用于快速準確梯度提升的 R 包](https://www.youtube.com/watch?v=0IhraqUVJ_E),2016 * [XGBoost:可擴展的樹木升壓系統](https://www.youtube.com/watch?v=Vly8xGnNiWs),陳天琪,2016 ### 教科書中的梯度提升 * 第 8.2.3 節 Boosting,第 321 頁,[統計學習簡介:在 R](http://www.amazon.com/dp/1461471370?tag=inspiredalgor-20) 中的應用。 * 第 8.6 節 Boosting,第 203 頁,[應用預測建模](http://www.amazon.com/dp/1461468485?tag=inspiredalgor-20)。 * 第 14.5 節“隨機梯度提升”,第 390 頁,[應用預測建模](http://www.amazon.com/dp/1461468485?tag=inspiredalgor-20)。 * 第 16.4 節 Boosting,第 556 頁,[機器學習:概率視角](http://www.amazon.com/dp/0262018020?tag=inspiredalgor-20) * 第 10 章 Boosting 和 Additive 樹,第 337 頁,[統計學習的要素:數據挖掘,推理和預測](http://www.amazon.com/dp/0387848576?tag=inspiredalgor-20) ### Gradient Boosting Papers * [關于假設提升的思考](http://www.cis.upenn.edu/~mkearns/papers/boostnote.pdf) [PDF],Michael Kearns,1988 * [在線學習的決策理論推廣及其應用](http://cns.bu.edu/~gsc/CN710/FreundSc95.pdf) [PDF],1995 * [弧形邊緣](http://statistics.berkeley.edu/sites/default/files/tech-reports/486.pdf) [PDF],1998 * [隨機梯度提升](https://statweb.stanford.edu/~jhf/ftp/stobst.pdf) [PDF],1999 * [在函數空間中提升算法作為梯度下降](http://maths.dur.ac.uk/~dma6kp/pdf/face_recognition/Boosting/Mason99AnyboostLong.pdf) [PDF],1999 ### 梯度提升幻燈片 * [Boosted Trees 簡介](http://homes.cs.washington.edu/~tqchen/pdf/BoostedTree.pdf),2014 * [一個溫和的梯度提升介紹](http://www.chengli.io/tutorials/gradient_boosting.pdf),程力 ### 梯度提升網頁 * [提升(機器學習)](https://en.wikipedia.org/wiki/Boosting_(machine_learning)) * [梯度提升](https://en.wikipedia.org/wiki/Gradient_boosting) * [在 scikit-learn](http://scikit-learn.org/stable/modules/ensemble.html#gradient-tree-boosting) 中提升梯度樹 ## 摘要 在這篇文章中,您發現了用于機器學習中預測建模的梯度提升算法。 具體來說,你學到了: * 提升學習理論和 AdaBoost 的歷史。 * 梯度提升算法如何與損失函數,弱學習器和附加模型一起工作。 * 如何通過正則化提高梯度提升的表現。 您對梯度提升算法或此帖有任何疑問嗎?在評論中提出您的問題,我會盡力回答。
                  <ruby id="bdb3f"></ruby>

                  <p id="bdb3f"><cite id="bdb3f"></cite></p>

                    <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
                      <p id="bdb3f"><cite id="bdb3f"></cite></p>

                        <pre id="bdb3f"></pre>
                        <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

                        <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
                        <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

                        <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                              <ruby id="bdb3f"></ruby>

                              哎呀哎呀视频在线观看