<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>

                ??一站式輕松地調用各大LLM模型接口,支持GPT4、智譜、豆包、星火、月之暗面及文生圖、文生視頻 廣告
                # 如何配置梯度提升算法 > 原文: [https://machinelearningmastery.com/configure-gradient-boosting-algorithm/](https://machinelearningmastery.com/configure-gradient-boosting-algorithm/) 梯度提升是應用機器學習最強大的技術之一,因此很快成為最受歡迎的技術之一。 但是,如何為您的問題配置梯度提升? 在這篇文章中,您將了解如何通過查看書籍,論文和競賽結果中報告的配置來配置機器學習問題的梯度提升。 閱讀這篇文章后,你會知道: * 如何根據原始來源配置梯度提升。 * 從標準實現中的默認值和建議配置算法的想法。 * 從頂級 Kaggle 競爭對手配置梯度提升和 XGBoost 的經驗法則。 讓我們開始吧。 ![How to Configure the Gradient Boosting Algorithm](https://img.kancloud.cn/77/22/7722d97d2cb7b55245c4fa10ff7675ff_640x481.jpg) 如何配置梯度提升算法 照片來自 [Chris Sorge](https://www.flickr.com/photos/stone65/7925550064/) ,保留一些權利。 ## 如何配置梯度增壓機 在 1999 年的論文“[貪婪函數逼近:梯度提升機](https://statweb.stanford.edu/~jhf/ftp/trebst.pdf)”中,Jerome Friedman 評論了樹木數量(M)和學習率(v)之間的權衡: > v-M 的權衡顯而易見;較小的 v 值會產生較大的最佳 M 值。它們還提供更高的準確度,v &lt;1 的回報遞減。 0.125。對于 M&gt; 1,錯誤分類錯誤率非常平坦。 200,因此它的最佳 M 值是不穩定的。 ......這些結果的定性性質相當普遍。 他建議首先為樹木數量設置一個較大的值,然后調整收縮參數以獲得最佳結果。本文的研究優選收縮值為 0.1,樹木的數量在 100 到 500 之間,樹木中的終端節點數在 2 到 8 之間。 在 1999 年的論文“ [Stochastic Gradient Boosting](https://statweb.stanford.edu/~jhf/ftp/stobst.pdf) ”中,弗里德曼重申了對收縮參數的偏好: > “收縮”參數 0 &lt; v&lt; 1 控制程序的學習率。根據經驗......,發現小值(v?? &lt;= 0.1)導致更好的泛化誤差。 在論文中,弗里德曼介紹并實證研究了隨機梯度提升(基于行的子采樣)。他發現幾乎所有的子采樣百分比都比所謂的確定性提升更好,或許 30%到 50%是一個很好的選擇一些問題的價值和 50%到 80%的其他問題。 > ...采樣分數的最佳值...約為 40%(f = 0.4)......然而,在每次迭代中僅采樣 30%甚至 20%的數據比沒有采樣有相當大的改進,并且具有相應的計算速度 - 因子分別為 3 和 5。 他還研究了樹木中終端節點數量的影響,發現像 3 和 6 這樣的值比 11,21 和 41 等更大的值更好。 > 在兩種情況下,平均超過 100 個目標的最佳樹大小是 L = 6.通過使用較大的樹來增加基礎學習器的容量通過“過度擬合”降低表現。 在 H2O 中題為“[梯度提升機器學習](https://www.youtube.com/watch?v=wPqtzj5VZus)”的演講中,Trevor Hastie 評論說,一般梯度提升比隨機森林表現更好,后者反過來比單個決策樹表現更好。 > 隨機森林&gt;套袋&gt;單樹 第 10 章標題為“[統計學習要素:數據挖掘,推理和預測](http://www.amazon.com/dp/0387848576?tag=inspiredalgor-20)”中的“提升和加性樹”專門用于提升。在其中,它們提供了用于配置梯度提升的啟發式方法以及一些實證研究。 他們評論說樹中的節點數(J)的值很好,約為 6,通常在 4 到 8 的范圍內有良好的值。 > 雖然在許多應用中 J = 2 是不夠的,但是 J&gt;不可能。將需要 10。到目前為止的經驗表明 4&lt; = J&lt; = 8 在增強的情況下工作良好,結果對該范圍內的特定選擇相當不敏感。 他們建議監控驗證數據集的表現,以便校準樹的數量,并在驗證數據集的表現開始降低后使用早期停止程序。 正如在弗里德曼的第一個梯度提升論文中,他們評論了樹木數量(M)和學習率(v)之間的權衡,并建議學習率的一個小值&lt; 0.1。 > 對于相同的訓練風險,較小的 v 值導致較大的 M 值,因此在它們之間存在折衷。 ......實際上,最好的策略似乎是將 v 設置得非常小(v &lt;0.1),然后通過提前停止選擇 M. 此外,正如弗里德曼的隨機梯度提升紙一樣,他們建議采用二次采樣百分比(n)而不更換值約為 50%。 > n 的典型值可以是 1/2,但是對于大的 N,n 可以基本上小于 1/2。 ## R 中梯度提升的配置 梯度提升算法在 R 中實現為 [gbm 包](https://cran.r-project.org/web/packages/gbm/index.html)。 回顧[軟件包文檔](https://cran.r-project.org/web/packages/gbm/gbm.pdf),gbm()函數指定合理的默認值: * n.trees = 100(樹木數量)。 * interaction.depth = 1(葉數)。 * n.minobsinnode = 10(樹終端節點中的最小樣本數)。 * 收縮率= 0.001(學習率)。 值得注意的是,使用較小的收縮因子并且樹樁是默認值。接下來,里奇韋解釋了小的收縮。 在 R 中使用 gbm 軟件包的標題為“ [Generalized Boosted Models:gbm 軟件包的指南](http://www.saedsayad.com/docs/gbm2.pdf)”中,Greg Ridgeway 提供了一些使用啟發式方法。他建議第一次將學習率(lambda)設置為盡可能小,然后使用交叉驗證調整樹的數量(迭代或 T)。 > 在實踐中,我將 lambda 設置為盡可能小,然后通過交叉驗證選擇 T.當 lambda 盡可能小的表現時,表現最佳,并且對于越來越小的 lambda,邊際效用越來越小。 他評論了他將默認收縮率設置為 0.001 而不是 0.1 的小值的基本原理。 > 重要的是要知道較小的收縮值(幾乎)總能提高預測表現。也就是說,設置收縮率= 0.001 幾乎肯定會導致模型具有比設置收縮率= 0.01 更好的樣本外預測表現。 ...收縮率= 0.001 的模型可能需要十倍于具有收縮率= 0.01 的模型的迭代次數 Ridgeway 還使用了大量的樹(這里稱為迭代),數千而不是數百 > 我通常瞄準 3,000 到 10,000 次迭代,收縮率在 0.01 到 0.001 之間。 ## 在 scikit-learn 中配置梯度提升 Python 庫提供了用于分類的梯度提升的實現,稱為 [GradientBoostingClassifier](http://scikit-learn.org/stable/modules/generated/sklearn.ensemble.GradientBoostingClassifier.html) 類,并且回歸稱為 [GradientBoostingRegressor](http://scikit-learn.org/stable/modules/generated/sklearn.ensemble.GradientBoostingRegressor.html) 類。 查看此庫中算法的默認配置很有用。 有許多參數,但下面是幾個關鍵的默認值。 * learning_rate = 0.1(收縮)。 * n_estimators = 100(樹的數量)。 * MAX_DEPTH = 3。 * min_samples_split = 2。 * min_samples_leaf = 1。 * 子樣本= 1.0。 有趣的是,默認收縮與 Friedman 匹配,并且樹深度未設置為 R 包之類的樹樁。樹深度為 3(如果創建的樹是對稱的)將具有 8 個葉節點,匹配 Friedman 研究中的首選終端節點數的上限(可以設置 max_leaf_nodes)。 在標題為“ [Gradient Tree Boosting](http://scikit-learn.org/stable/modules/ensemble.html#gradient-tree-boosting) ”的部分下的 scikit-learn 用戶指南中,作者評論說,設置最大葉節點與將最大深度設置為減去最大葉節點的效果類似,但結果表現更差。 > 我們發現 max_leaf_nodes = k 給出了與 max_depth = k-1 相當的結果,但是以稍高的訓練誤差為代價訓練得更快。 在一項小型研究中,證明了梯度提升的正則化方法“[梯度提升正則化](http://scikit-learn.org/stable/auto_examples/ensemble/plot_gradient_boosting_regularization.html)”,結果顯示了使用收縮和二次采樣的好處。 ## 在 XGBoost 中配置梯度提升 XGBoost 庫專用于梯度提升算法。 它也指定了值得注意的默認參數,首先是 [XGBoost 參數頁面](https://github.com/dmlc/xgboost/blob/master/doc/parameter.md): * eta = 0.3(收縮率或學習率)。 * MAX_DEPTH = 6。 * 子樣本= 1。 與大多數研究和其他圖書館相比,這顯示出更高的學習率和更大的最大深度。同樣,我們可以在 [Python API 參考](https://xgboost.readthedocs.io/en/latest/python/python_api.html)中總結 XGBoost 的默認參數。 * MAX_DEPTH = 3。 * learning_rate = 0.1。 * n_estimators = 100。 * 子樣本= 1。 這些默認值通常更符合 scikit-learn 默認值和論文推薦。 在與 TechEd Europe 的一次題為“ [xgboost:用于快速和準確梯度提升](https://www.youtube.com/watch?v=0IhraqUVJ_E)的 R 包”的談話中,當被問及如何配置 XGBoost 時,Tong He 建議調整三個最重要的參數: * 樹木數量。 * 樹深度。 * 步長(學習率)。 他還為新問題提供了簡潔的配置策略: 1. 運行默認配置(并且可能會查看學習曲線?)。 2. 如果系統過度學習,請減慢學習速度(使用收縮?)。 3. 如果系統學習不足,可以加快學習速度(使用收縮?)。 在 Owen Zhang 于 2015 年與 NYC 數據科學學院進行的題為“[獲獎數據科學競賽](https://www.youtube.com/watch?v=LgLcfZjNF44)”的談話中,他提供了一些使用 XGBoost 配置梯度提升的一般技巧。 Owen 是梯度提升的重要用戶。 > 我的懺悔:我(過)使用 GBM。如有疑問,請使用 GBM。 他提供了一些配置梯度提升的技巧: * 學習率+樹木數量:定位 500 到 1000 棵樹并調整學習率。 * 葉子中的樣本數量:獲得良好平均估計值所需的觀察數量。 * 互動深度:10+。 在同一個談話的[更新幻燈片中,他總結了他用于 XGBoost 的常見參數:](http://www.slideshare.net/ShangxuanZhang/winning-data-science-competitions-presented-by-owen-zhang) ![Owen Zhang Table of Suggestions for Hyperparameter Tuning of XGBoost](https://img.kancloud.cn/69/42/694277b7c706c8d6d710ac80e8af0eec_629x352.jpg) Owen Zhang 超級參數調整 XGBoost 的建議表 我們可以在這張表中看到一些有趣的東西。 * 將學習率與樹木數量的關系簡化為近似比例:學習率= [2-10] /樹。 * 探索隨機梯度提升的行和列采樣的值。 * 探索與弗里德曼(4-10)報道的最大深度相同的范圍。 * 調整最小葉重量,作為罕見事件數量百分比的近似比率為 3。 歐文在 2015 年波士頓 ODSC 題為“[開源工具和數據科學競賽](https://www.youtube.com/watch?v=7YnVZrabTA8)”的類似演講中,他再次總結了他使用的常用參數: ![Owen Zhang Suggestions for Tuning XGBoost](https://img.kancloud.cn/51/c3/51c3581a6c2d78816d61fd2d1a27786f_603x372.jpg) Owen Zhang 關于調整 XGBoost 的建議 我們可以看到一些可能相關的細微差別。 * 目標 100 而不是 1000 棵樹并調整學習率。 * 最小孩子體重在事件率的平方根上為 1。 * 沒有行的子采樣。 最后,Abhishek Thakur 在題為“[接近(幾乎)任何機器學習問題](https://www.linkedin.com/pulse/approaching-almost-any-machine-learning-problem-abhishek-thakur)”的帖子中提供了一個類似的表格,列出了關鍵的 XGBoost 參數和調整建議。 ![Abhishek Thakur Suggestions for Tuning XGBoost](https://img.kancloud.cn/74/ee/74ee53c0ac2d04248e322989547bc06b_724x180.jpg) Abhishek Thakur 對調整 XGBoost 的建議 點差確實涵蓋了上面建議的一般默認值以及更多。 值得注意的是,Abhishek 確實提供了一些調整 alpha 和 beta 模型懲罰術語以及行采樣的建議。 ## 摘要 在這篇文章中,您深入了解了如何為您自己的機器學習問題配置梯度提升。 特別是你學到了: * 關于樹木數量的折衷以及子采樣的收縮和良好的默認值。 * 關于限制樹大小的不同想法以及樹深度和終端節點數量的良好默認值。 * 頂級 Kaggle 比賽獲勝者使用的網格搜索策略。 您對配置梯度提升或關于此帖子有任何疑問嗎?在評論中提出您的問題。
                  <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>

                              哎呀哎呀视频在线观看