<kbd id="afajh"><form id="afajh"></form></kbd>
<strong id="afajh"><dl id="afajh"></dl></strong>
    <del id="afajh"><form id="afajh"></form></del>
        1. <th id="afajh"><progress id="afajh"></progress></th>
          <b id="afajh"><abbr id="afajh"></abbr></b>
          <th id="afajh"><progress id="afajh"></progress></th>

          深入理解GBDT回歸算法

          共 5971字,需瀏覽 12分鐘

           ·

          2022-05-20 14:04

          點擊上方小白學(xué)視覺”,選擇加"星標"或“置頂

          重磅干貨,第一時間送達

          來源:公眾號?Microstrong?授權(quán)轉(zhuǎn)載

          目錄:

          1. GBDT簡介

          2. GBDT回歸算法

          ? ? 2.1 GBDT回歸算法推導(dǎo)

          ? ? 2.2 GBDT回歸算法實例?

          3. 手撕GBDT回歸算法 ? ?

          ? ? 3.1 用Python3實現(xiàn)GBDT回歸算法 ??

          ? ? 3.2 用sklearn實現(xiàn)GBDT回歸算法?

          4. GBDT回歸任務(wù)常見的損失函數(shù)?

          5. GBDT的正則化?

          6. 關(guān)于GBDT若干問題的思考

          7. 總結(jié)?

          8. Reference


          本文的主要內(nèi)容概覽:


          1. GBDT簡介


          Boosting、Bagging和Stacking是集成學(xué)習(xí)(Ensemble Learning)的三種主要方法。Boosting是一族可將弱學(xué)習(xí)器提升為強學(xué)習(xí)器的算法,不同于Bagging、Stacking方法,Boosting訓(xùn)練過程為串聯(lián)方式,弱學(xué)習(xí)器的訓(xùn)練是有順序的,每個弱學(xué)習(xí)器都會在前一個學(xué)習(xí)器的基礎(chǔ)上進行學(xué)習(xí),最終綜合所有學(xué)習(xí)器的預(yù)測值產(chǎn)生最終的預(yù)測結(jié)果。


          梯度提升(Gradient Boosting)算法是一種用于回歸、分類和排序任務(wù)的機器學(xué)習(xí)技術(shù),屬于Boosting算法族的一部分。之前我們介紹過Gradient Boosting算法在迭代的每一步構(gòu)建一個能夠沿著梯度最陡的方向降低損失的學(xué)習(xí)器來彌補已有模型的不足。經(jīng)典的AdaBoost算法只能處理采用指數(shù)損失函數(shù)的二分類學(xué)習(xí)任務(wù),而梯度提升方法通過設(shè)置不同的可微損失函數(shù)可以處理各類學(xué)習(xí)任務(wù)(多分類、回歸、Ranking等),應(yīng)用范圍大大擴展。梯度提升算法利用損失函數(shù)的負梯度作為殘差擬合的方式,如果其中的基函數(shù)采用決策樹的話,就得到了梯度提升決策樹 (Gradient Boosting Decision Tree, GBDT)。


          基于梯度提升算法的學(xué)習(xí)器叫做GBM(Gradient Boosting Machine)。理論上,GBM可以選擇各種不同的學(xué)習(xí)算法作為基學(xué)習(xí)器。現(xiàn)實中,用得最多的基學(xué)習(xí)器是決策樹。


          決策樹有以下優(yōu)點:

          • 決策樹可以認為是if-then規(guī)則的集合,易于理解,可解釋性強,預(yù)測速度快。

          • 決策樹算法相比于其他的算法需要更少的特征工程,比如可以不用做特征標準化。

          • 決策樹可以很好的處理字段缺失的數(shù)據(jù)。

          • 決策樹能夠自動組合多個特征,也有特征選擇的作用。

          • 對異常點魯棒

          • 可擴展性強,容易并行。


          決策樹有以下缺點:

          • 缺乏平滑性(回歸預(yù)測時輸出值只能輸出有限的若干種數(shù)值)。

          • 不適合處理高維稀疏數(shù)據(jù)。

          • 單獨使用決策樹算法時容易過擬合。


          我們可以通過抑制決策樹的復(fù)雜性,降低單棵決策樹的擬合能力,再通過梯度提升的方法集成多個決策樹,最終能夠很好的解決過擬合的問題。由此可見,梯度提升方法和決策樹學(xué)習(xí)算法可以互相取長補短,是一對完美的搭檔。


          2. GBDT回歸算法


          2.1 GBDT回歸算法推導(dǎo)


          當(dāng)我們采用的基學(xué)習(xí)器是決策樹時,那么梯度提升算法就具體到了梯度提升決策樹。GBDT算法又叫MART(Multiple Additive Regression),是一種迭代的決策樹算法。GBDT算法可以看成是棵樹組成的加法模型,其對應(yīng)的公式如下:



          其中,為輸入樣本;為模型參數(shù);為分類回歸樹;為每棵樹的權(quán)重。GBDT算法的實現(xiàn)過程如下:


          給定訓(xùn)練數(shù)據(jù)集:?其中,?為輸入空間,為輸出空間,損失函數(shù)為,我們的目標是得到最終的回歸樹


          (1)初始化第一個弱學(xué)習(xí)器



          (2)對于建立M棵分類回歸樹


          a)對?,計算第棵樹對應(yīng)的響應(yīng)值(損失函數(shù)的負梯度,即偽殘差):



          b)對于,利用CART回歸樹擬合數(shù)據(jù),得到第棵回歸樹,其對應(yīng)的葉子節(jié)點區(qū)域為,其中,且?為第棵回歸樹葉子節(jié)點的個數(shù)。

          c)對于個葉子節(jié)點區(qū)域?,計算出最佳擬合值:



          d)更新強學(xué)習(xí)器



          (3)得到強學(xué)習(xí)器的表達式:



          2.2 GBDT回歸算法實例


          (1)數(shù)據(jù)集介紹


          訓(xùn)練集如下表所示,一組數(shù)據(jù)的特征有年齡和體重,身高為標簽值,共有4組數(shù)據(jù)。



          測試數(shù)據(jù)如下表所示,只有一組數(shù)據(jù),年齡為25、體重為65,我們用在訓(xùn)練集上訓(xùn)練好的GBDT模型預(yù)測該組數(shù)據(jù)的身高值為多少。



          (2)模型訓(xùn)練階段


          參數(shù)設(shè)置:

          • 學(xué)習(xí)率:learning_rate = 0.1

          • 迭代次數(shù):n_trees = 5

          • 樹的深度:max_depth = 3


          1)初始化弱學(xué)習(xí)器:



          損失函數(shù)為平方損失,因為平方損失函數(shù)是一個凸函數(shù),可以直接求導(dǎo),令導(dǎo)數(shù)等于零,得到?



          令導(dǎo)數(shù)等于0:



          所以初始化時,取值為所有訓(xùn)練樣本標簽值的均值。,此時得到的初始化學(xué)習(xí)器為


          2)對于建立M棵分類回歸樹


          由于我們設(shè)置了迭代次數(shù):n_trees=5,這就是設(shè)置了M=5。


          首先計算負梯度,根據(jù)上文損失函數(shù)為平方損失時,負梯度就是殘差,也就是與上一輪得到的學(xué)習(xí)器的差值:



          現(xiàn)將殘差的計算結(jié)果列表如下:



          此時將殘差作為樣本的真實值來訓(xùn)練弱學(xué)習(xí)器,即下表數(shù)據(jù):



          接著尋找回歸樹的最佳劃分節(jié)點,遍歷每個特征的每個可能取值。從年齡特征值為5開始,到體重特征為70結(jié)束,分別計算分裂后兩組數(shù)據(jù)的平方損失(Square Error),?為左節(jié)點的平方損失,?為右節(jié)點的平方損失,找到使平方損失和?最小的那個劃分節(jié)點,即為最佳劃分節(jié)點。


          例如:以年齡7為劃分節(jié)點,將小于7的樣本劃分為左節(jié)點,大于等于7的樣本劃分為右節(jié)點。左節(jié)點包括,右節(jié)點包括樣本,則,所有可能的劃分情況如下表所示:



          以上劃分點的總平方損失最小為0.025有兩個劃分點:年齡21和體重60,所以隨機選一個作為劃分點,這里我們選年齡21。現(xiàn)在我們的第一棵樹長這個樣子:



          我們設(shè)置的參數(shù)中樹的深度max_depth=3,現(xiàn)在樹的深度只有2,需要再進行一次劃分,這次劃分要對左右兩個節(jié)點分別進行劃分:


          對于左節(jié)點,只含有0,1兩個樣本,根據(jù)下表結(jié)果我們選擇年齡7為劃分點(也可以選體重30)。



          對于右節(jié)點,只含有2,3兩個樣本,根據(jù)下表結(jié)果我們選擇年齡30為劃分點(也可以選體重70)。



          現(xiàn)在我們的第一棵回歸樹長下面這個樣子:



          此時我們的樹深度滿足了設(shè)置,還需要做一件事情,給這每個葉子節(jié)點分別賦一個參數(shù),來擬合殘差。



          這里其實和上面初始化弱學(xué)習(xí)器是一樣的,對平方損失函數(shù)求導(dǎo),令導(dǎo)數(shù)等于零,化簡之后得到每個葉子節(jié)點的參數(shù),其實就是標簽值的均值。這個地方的標簽值不是原始的,而是本輪要擬合的標殘差


          根據(jù)上述劃分結(jié)果,為了方便表示,規(guī)定從左到右為第1,2,3,4個葉子結(jié)點,其計算值過程如下:



          此時的樹長這下面這個樣子:



          此時可更新強學(xué)習(xí)器,需要用到參數(shù)學(xué)習(xí)率:learning_rate=0.1,用表示。更新公式為:



          為什么要用學(xué)習(xí)率呢?這是Shrinkage的思想,如果每次都全部加上擬合值?,即學(xué)習(xí)率為1,很容易一步學(xué)到位導(dǎo)致GBDT過擬合。


          重復(fù)此步驟,直到??結(jié)束,最后生成5棵樹。


          下面將展示每棵樹最終的結(jié)構(gòu),這些圖都是我GitHub上用Python3實現(xiàn)GBDT代碼生成的,感興趣的同學(xué)可以去運行一下代碼。地址:https://github.com/Microstrong0305/WeChat-zhihu-csdnblog-code/tree/master/Ensemble%20Learning/GBDT_Regression


          第一棵樹:



          第二棵樹:



          第三棵樹:



          第四棵樹:



          第五棵樹:



          3)得到最后的強學(xué)習(xí)器:



          (3)模型預(yù)測階段


          • 中,測試樣本的年齡為25,大于劃分節(jié)點21歲,又小于30歲,所以被預(yù)測為0.2250

          • ?中,測試樣本的年齡為25,大于劃分節(jié)點21歲,又小于30歲,所以被預(yù)測為0.2025

          • 在?中,測試樣本的年齡為25,大于劃分節(jié)點21歲,又小于30歲,所以被預(yù)測為0.1823

          • 中,測試樣本的年齡為25,大于劃分節(jié)點21歲,又小于30歲,所以被預(yù)測為0.1640

          • 中,測試樣本的年齡為25,大于劃分節(jié)點21歲,又小于30歲,所以被預(yù)測為0.1476


          最終預(yù)測結(jié)果為:



          3. 手撕GBDT回歸算法


          本篇文章所有數(shù)據(jù)集和代碼均在我的GitHub中,地址:https://github.com/Microstrong0305/WeChat-zhihu-csdnblog-code/tree/master/Ensemble%20Learning


          3.1 用Python3實現(xiàn)GBDT回歸算法


          需要的Python庫:

          pandas、PIL、pydotplus、matplotlib
          其中pydotplus庫會自動調(diào)用Graphviz,所以需要去Graphviz官網(wǎng)下載graphviz-2.38.msi安裝,再將安裝目錄下的bin添加到系統(tǒng)環(huán)境變量,最后重啟計算機。


          由于用Python3實現(xiàn)GBDT回歸算法代碼量比較多,我這里就不列出詳細代碼了,感興趣的同學(xué)可以去我的GitHub中看一下,地址:https://github.com/Microstrong0305/WeChat-zhihu-csdnblog-code/tree/master/Ensemble%20Learning/GBDT_Regression


          3.2 用sklearn實現(xiàn)GBDT回歸算法

          ?

          import numpy as npfrom sklearn.ensemble import GradientBoostingRegressor
          gbdt = GradientBoostingRegressor(loss='ls', learning_rate=0.1, n_estimators=5, subsample=1 , min_samples_split=2, min_samples_leaf=1, max_depth=3 , init=None, random_state=None, max_features=None , alpha=0.9, verbose=0, max_leaf_nodes=None , warm_start=False )train_feat = np.array([[1, 5, 20], [2, 7, 30], [3, 21, 70], [4, 30, 60], ])train_id = np.array([[1.1], [1.3], [1.7], [1.8]]).ravel()test_feat = np.array([[5, 25, 65]])test_id = np.array([[1.6]])print(train_feat.shape, train_id.shape, test_feat.shape, test_id.shape)gbdt.fit(train_feat, train_id)pred = gbdt.predict(test_feat)total_err = 0for i in range(pred.shape[0]): print(pred[i], test_id[i]) err = (pred[i] - test_id[i]) / test_id[i] total_err += err * errprint(total_err / pred.shape[0])
          用sklearn中的GBDT庫實現(xiàn)GBDT回歸算法的難點在于如何更好的調(diào)節(jié)下列參數(shù):



          用sklearn實現(xiàn)GBDT回歸算法的GitHub地址:https://github.com/Microstrong0305/WeChat-zhihu-csdnblog-code/tree/master/Ensemble%20Learning/GBDT_Regression_sklearn


          4. GBDT回歸任務(wù)常見的損失函數(shù)


          對于GBDT回歸模型,sklearn中實現(xiàn)了四種損失函數(shù),有均方差'ls', 絕對損失'lad', Huber損失'huber'和分位數(shù)損失'quantile'。默認是均方差'ls'。一般來說,如果數(shù)據(jù)的噪音點不多,用默認的均方差'ls'比較好。如果是噪音點較多,則推薦用抗噪音的損失函數(shù)'huber'。而如果我們需要對訓(xùn)練集進行分段預(yù)測的時候,則采用'quantile'。下面我們具體來了解一下這四種損失函數(shù)。


          (1)均方差,這個是最常見的回歸損失函數(shù)了,公式如下:



          對應(yīng)的負梯度誤差為:



          (2)絕對損失,這個損失函數(shù)也很常見,公式如下:



          對應(yīng)的負梯度誤差為:



          (3)Huber損失,它是均方差和絕對損失的折衷產(chǎn)物,對于遠離中心的異常點,采用絕對損失,而中心附近的點采用均方差。這個界限一般用分位數(shù)點度量。損失函數(shù)如下:



          對應(yīng)的負梯度誤差為:



          (4)分位數(shù)損失,它對應(yīng)的是分位數(shù)回歸的損失函數(shù),表達式為:



          其中,為分位數(shù),需要我們在回歸前指定。對應(yīng)的負梯度誤差為:



          對于Huber損失和分位數(shù)損失,主要用于健壯回歸,也就是減少異常點對損失函數(shù)的影響。


          5. GBDT的正則化


          為了防止過擬合,GBDT主要有五種正則化的方式。


          (1)“Shrinkage”:這是一種正則化(regularization)方法,為了防止過擬合,在每次對殘差估計進行迭代時,不直接加上當(dāng)前步所擬合的殘差,而是乘以一個系數(shù)。系數(shù)也被稱為學(xué)習(xí)率(learning rate),因為它可以對梯度提升的步長進行調(diào)整,也就是它可以影響我們設(shè)置的回歸樹個數(shù)。對于前面的弱學(xué)習(xí)器的迭代:



          如果我們加上了正則化項,則有:



          的取值范圍為?。對于同樣的訓(xùn)練集學(xué)習(xí)效果,較小的?意味著我們需要更多的弱學(xué)習(xí)器的迭代次數(shù)。通常我們用學(xué)習(xí)率和迭代最大次數(shù)一起來決定算法的擬合效果。即參數(shù)learning_rate會強烈影響到參數(shù)n_estimators(即弱學(xué)習(xí)器個數(shù))。learning_rate的值越小,就需要越多的弱學(xué)習(xí)器數(shù)來維持一個恒定的訓(xùn)練誤差(training error)常量。經(jīng)驗上,推薦小一點的learning_rate會對測試誤差(test error)更好。在實際調(diào)參中推薦將learning_rate設(shè)置為一個小的常數(shù)(e.g. learning_rate <= 0.1),并通過early stopping機制來選n_estimators。


          (2)“Subsample”:第二種正則化的方式是通過子采樣比例(subsample),取值為 (0,1]。注意這里的子采樣和隨機森林不一樣,隨機森林使用的是放回抽樣,而這里是不放回抽樣。如果取值為1,則全部樣本都使用,等于沒有使用子采樣。如果取值小于1,則只有一部分樣本會去做GBDT的決策樹擬合。選擇小于1的比例可以減少方差,即防止過擬合,但會增加樣本擬合的偏差,因此取值不能太低。推薦在 [0.5, 0.8]之間。


          使用了子采樣的GBDT有時也稱作隨機梯度提升樹 (Stochastic Gradient Boosting Tree, SGBT)。由于使用了子采樣,程序可以通過采樣分發(fā)到不同的任務(wù)去做Boosting的迭代過程,最后形成新樹,從而減少弱學(xué)習(xí)器難以并行學(xué)習(xí)的弱點。


          (3)對于弱學(xué)習(xí)器即CART回歸樹進行正則化剪枝。這一部分在學(xué)習(xí)決策樹原理時應(yīng)該掌握的,這里就不重復(fù)了。


          (4)“Early Stopping”:Early Stopping是機器學(xué)習(xí)迭代式訓(xùn)練模型中很常見的防止過擬合技巧,具體的做法是選擇一部分樣本作為驗證集,在迭代擬合訓(xùn)練集的過程中,如果模型在驗證集里錯誤率不再下降,就停止訓(xùn)練,也就是說控制迭代的輪數(shù)(樹的個數(shù))。在sklearn的GBDT中可以設(shè)置參數(shù)n_iter_no_change實現(xiàn)early stopping。


          (5)“Dropout”:Dropout是deep learning里很常用的正則化技巧,很自然的我們會想能不能把Dropout用到GBDT模型上呢?AISTATS2015有篇文章《DART: Dropouts meet Multiple Additive Regression Trees》進行了一些嘗試。文中提到GBDT里會出現(xiàn)over-specialization的問題:前面迭代的樹對預(yù)測值的貢獻比較大,后面的樹會集中預(yù)測一小部分樣本的偏差。Shrinkage可以減輕over-specialization的問題,但不是很好。作者想通過Dropout來平衡所有樹對預(yù)測的貢獻。


          具體的做法是:每次新加一棵樹,這棵樹要擬合的并不是之前全部樹ensemble后的殘差,而是隨機抽取的一些樹ensemble;同時新加的樹結(jié)果要規(guī)范化一下。對這一部分感興趣的同學(xué)可以閱讀一下原論文。


          6. 關(guān)于GBDT若干問題的思考


          (1)GBDT與AdaBoost的區(qū)別與聯(lián)系?


          AdaBoost和GBDT都是重復(fù)選擇一個表現(xiàn)一般的模型并且每次基于先前模型的表現(xiàn)進行調(diào)整。不同的是,AdaBoost是通過調(diào)整錯分數(shù)據(jù)點的權(quán)重來改進模型,GBDT是通過計算負梯度來改進模型。因此,相比AdaBoost, GBDT可以使用更多種類的目標函數(shù),而當(dāng)目標函數(shù)是均方誤差時,計算損失函數(shù)的負梯度值在當(dāng)前模型的值即為殘差。


          (2)GBDT與隨機森林(Random Forest,RF)的區(qū)別與聯(lián)系?


          相同點:都是由多棵樹組成,最終的結(jié)果都是由多棵樹一起決定。


          不同點:1)集成的方式:隨機森林屬于Bagging思想,而GBDT是Boosting思想。2)偏差-方差權(quán)衡:RF不斷的降低模型的方差,而GBDT不斷的降低模型的偏差。3)訓(xùn)練樣本方式:RF每次迭代的樣本是從全部訓(xùn)練集中有放回抽樣形成的,而GBDT每次使用全部樣本。4)并行性:RF的樹可以并行生成,而GBDT只能順序生成(需要等上一棵樹完全生成)。5)最終結(jié)果:RF最終是多棵樹進行多數(shù)表決(回歸問題是取平均),而GBDT是加權(quán)融合。6)數(shù)據(jù)敏感性:RF對異常值不敏感,而GBDT對異常值比較敏感。7)泛化能力:RF不易過擬合,而GBDT容易過擬合。


          (3)我們知道殘差=真實值-預(yù)測值,明明可以很方便的計算出來,為什么GBDT的殘差要用負梯度來代替?為什么要引入麻煩的梯度?有什么用呢?


          回答第一小問:在GBDT中,無論損失函數(shù)是什么形式,每個決策樹擬合的都是負梯度。準確的說,不是用負梯度代替殘差,而是當(dāng)損失函數(shù)是均方損失時,負梯度剛好是殘差,殘差只是特例。


          回答二、三小問:GBDT的求解過程就是梯度下降在函數(shù)空間中的優(yōu)化過程。在函數(shù)空間中優(yōu)化,每次得到增量函數(shù),這個函數(shù)就是GBDT中一個個決策樹,負梯度會擬合這個函數(shù)。要得到最終的GBDT模型,只需要把初始值或者初始的函數(shù)加上每次的增量即可。我這里高度概括的回答了這個問題,詳細推理過程可以參考:梯度提升(Gradient Boosting)算法,地址:https://mp.weixin.qq.com/s/Ods1PHhYyjkRA8bS16OfCg?


          7. 總結(jié)


          在本文中,我們首先引出回歸樹與梯度提升算法結(jié)合的優(yōu)勢;然后詳細推導(dǎo)了GBDT回歸算法的原理,并用實際案例解釋GBDT回歸算法;其次不僅用Python3實現(xiàn)GBDT回歸算法,還用sklearn實現(xiàn)GBDT回歸算法;最后,介紹了GBDT回歸任務(wù)常見的損失函數(shù)、GBDT的正則化和我對GBDT回歸算法若干問題的思考。GBDT中的樹是回歸樹(不是分類樹),GBDT可以用來做回歸預(yù)測,這也是我們本文講的GBDT回歸算法,但是GBDT調(diào)整后也可以用于分類任務(wù)。讓我們期待一下GBDT分類算法,在分類任務(wù)中的表現(xiàn)吧!


          8. Reference


          由于參考的文獻較多,我把每一部分都重點參考了哪些文章詳細標注一下。


          GBDT簡介與GBDT回歸算法:


          【1】Friedman J H . Greedy Function Approximation: A Gradient Boosting Machine[J]. The Annals of Statistics, 2001, 29(5):1189-1232.

          【2】Friedman, Jerome & Hastie, Trevor & Tibshirani, Robert. (2000). Additive Logistic Regression: A Statistical View of Boosting. The Annals of Statistics. 28. 337-407. 10.1214/aos/1016218223.

          【3】機器學(xué)習(xí)-一文理解GBDT的原理-20171001 - 謀殺電視機的文章 - 知乎 https://zhuanlan.zhihu.com/p/29765582

          【4】GBDT算法原理深入解析,地址:https://www.zybuluo.com/yxd/note/611571

          【5】GBDT的原理和應(yīng)用 - 文西的文章 - 知乎 https://zhuanlan.zhihu.com/p/30339807

          【6】ID3、C4.5、CART、隨機森林、bagging、boosting、Adaboost、GBDT、xgboost算法總結(jié) - yuyuqi的文章 - 知乎 https://zhuanlan.zhihu.com/p/34534004

          【7】GBDT:梯度提升決策樹,地址:https://www.jianshu.com/p/005a4e6ac775

          【8】機器學(xué)習(xí)算法中 GBDT 和 XGBOOST 的區(qū)別有哪些?- wepon的回答 - 知乎 https://www.zhihu.com/question/41354392/answer/98658997

          【9】http://wepon.me/files/gbdt.pdf

          【10】GBDT詳細講解&常考面試題要點,地址:https://mp.weixin.qq.com/s/M2PwsrAnI1S9SxSB1guHdg

          【11】Gradient Boosting Decision Tree,地址:http://gitlinux.net/2019-06-11-gbdt-gradient-boosting-decision-tree/

          【12】《推薦系統(tǒng)開發(fā)實戰(zhàn)》之基于點擊率預(yù)估的推薦算法介紹和案例開發(fā)實戰(zhàn),地址:https://mp.weixin.qq.com/s/2VATflDlelfxhOQkcXHSqw

          【13】GBDT算法原理以及實例理解,地址:https://blog.csdn.net/zpalyq110/article/details/79527653


          手撕GBDT回歸算法:


          【14】GBDT_Simple_Tutorial(梯度提升樹簡易教程),GitHub地址:https://github.com/Freemanzxp/GBDT_Simple_Tutorial

          【15】SCIKIT-LEARN與GBDT使用案例,地址:https://blog.csdn.net/superzrx/article/details/47073847

          【16】手寫原始gbdt,地址:https://zhuanlan.zhihu.com/p/82406112?utm_source=wechat_session&utm_medium=social&utm_oi=743812915018104832


          GBDT回歸任務(wù)常見的損失函數(shù)與正則化:


          【17】Regularization on GBDT,地址:http://chuan92.com/2016/04/11/regularization-on-gbdt

          【18】Early stopping of Gradient Boosting,地址:https://scikit-learn.org/stable/auto_examples/ensemble/plot_gradient_boosting_early_stopping.html

          【19】Rashmi K V, Gilad-Bachrach R. DART: Dropouts meet Multiple Additive Regression Trees[C]//AISTATS. 2015: 489-497.?


          關(guān)于GBDT若干問題的思考:


          【20】關(guān)于adaboost、GBDT、xgboost之間的區(qū)別與聯(lián)系,地址:https://blog.csdn.net/HHTNAN/article/details/80894247

          【21】[校招-基礎(chǔ)算法]GBDT/XGBoost常見問題 - Jack Stark的文章 - 知乎 https://zhuanlan.zhihu.com/p/81368182

          【22】gbdt的殘差為什么用負梯度代替?- 知乎 https://www.zhihu.com/question/63560633

          【23】gbdt的殘差為什么用負梯度代替?- 奧奧奧奧噢利的回答 - 知乎 https://www.zhihu.com/question/63560633/answer/581670747

          下載1:OpenCV-Contrib擴展模塊中文版教程
          在「小白學(xué)視覺」公眾號后臺回復(fù):擴展模塊中文教程即可下載全網(wǎng)第一份OpenCV擴展模塊教程中文版,涵蓋擴展模塊安裝、SFM算法、立體視覺、目標跟蹤、生物視覺、超分辨率處理等二十多章內(nèi)容。

          下載2:Python視覺實戰(zhàn)項目52講
          小白學(xué)視覺公眾號后臺回復(fù):Python視覺實戰(zhàn)項目即可下載包括圖像分割、口罩檢測、車道線檢測、車輛計數(shù)、添加眼線、車牌識別、字符識別、情緒檢測、文本內(nèi)容提取、面部識別等31個視覺實戰(zhàn)項目,助力快速學(xué)校計算機視覺。

          下載3:OpenCV實戰(zhàn)項目20講
          小白學(xué)視覺公眾號后臺回復(fù):OpenCV實戰(zhàn)項目20講即可下載含有20個基于OpenCV實現(xiàn)20個實戰(zhàn)項目,實現(xiàn)OpenCV學(xué)習(xí)進階。

          交流群


          歡迎加入公眾號讀者群一起和同行交流,目前有SLAM、三維視覺、傳感器自動駕駛、計算攝影、檢測、分割、識別、醫(yī)學(xué)影像、GAN算法競賽等微信群(以后會逐漸細分),請掃描下面微信號加群,備注:”昵稱+學(xué)校/公司+研究方向“,例如:”張三?+?上海交大?+?視覺SLAM“。請按照格式備注,否則不予通過。添加成功后會根據(jù)研究方向邀請進入相關(guān)微信群。請勿在群內(nèi)發(fā)送廣告,否則會請出群,謝謝理解~


          瀏覽 51
          點贊
          評論
          收藏
          分享

          手機掃一掃分享

          分享
          舉報
          評論
          圖片
          表情
          推薦
          點贊
          評論
          收藏
          分享

          手機掃一掃分享

          分享
          舉報
          <kbd id="afajh"><form id="afajh"></form></kbd>
          <strong id="afajh"><dl id="afajh"></dl></strong>
            <del id="afajh"><form id="afajh"></form></del>
                1. <th id="afajh"><progress id="afajh"></progress></th>
                  <b id="afajh"><abbr id="afajh"></abbr></b>
                  <th id="afajh"><progress id="afajh"></progress></th>
                  亚洲欧洲AⅤ | 色四虎 | 日本大乳高潮视频在线观看 | 综合网第一页 | 一级日韩在线观看 |