日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程资源 > 编程问答 >内容正文

编程问答

XGBOOST的基本原理以及使用

發(fā)布時(shí)間:2023/12/20 编程问答 31 豆豆
生活随笔 收集整理的這篇文章主要介紹了 XGBOOST的基本原理以及使用 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

XGBOOST的基本原理以及使用

XGBOOST的基本原理

XGBOOST的模型形式

XGBOOST是boosting方法的一種加法模型,訓(xùn)練的時(shí)候采用前向分布算法進(jìn)行貪婪學(xué)習(xí),每次迭代都學(xué)習(xí)一顆CART樹(shù)來(lái)擬合之前t-1棵樹(shù)的預(yù)測(cè)結(jié)果與訓(xùn)練樣本真實(shí)值的殘差。
XGBOOST的模型形式比較類似于GBDT算法。其基本形式為對(duì)于給定數(shù)據(jù)集

學(xué)習(xí)包括N棵樹(shù)的加法模型,其中K是子分類器的數(shù)量,f是子分類器,F是子分類器從屬的函數(shù)空間

XGBOOST的損失函數(shù)

XGBOOST的目標(biāo)函數(shù)如下所示,其中還包含了正則項(xiàng)

對(duì)于f是決策樹(shù)而不是連續(xù)函數(shù),所以沒(méi)辦法用梯度下降的辦法進(jìn)行優(yōu)化,所以我們使用貪心算法來(lái)獲得最優(yōu)解。

將上述目標(biāo)函數(shù)按照泰勒級(jí)數(shù)展開(kāi)


假設(shè)子分類器f的正則項(xiàng)有葉子節(jié)點(diǎn)的數(shù)量,以及葉子節(jié)點(diǎn)的權(quán)重的平方和兩部分組成。

則XGBOOST最終的損失函數(shù)如下所示



上述公式對(duì)w求導(dǎo)后為0,得到

XGBOOST的學(xué)習(xí)策略

上一節(jié)最后紅色的部分就是學(xué)習(xí)優(yōu)化的關(guān)鍵,要讓紅色的部分月大越好。因此XGBoost中計(jì)算增益的方法入下圖所示:

在選擇分裂點(diǎn)的過(guò)程中,如果使用精確貪心算法,對(duì)每個(gè)特征排序完之后,枚舉完所有分裂點(diǎn)之后。假設(shè)樹(shù)的深度為H,特征數(shù)為d,則復(fù)雜度為O(Hdnlogn),其中排序?yàn)镺(nlogn)。

當(dāng)數(shù)據(jù)量十分龐大,無(wú)法全部存入內(nèi)存中時(shí),精確算法很慢。所以要采用近似算法,即根據(jù)特征的分布將特征分為l個(gè)桶。按照不同的桶進(jìn)行切分。在將特征分為不同的桶的過(guò)程中,XGBOOST并沒(méi)有采取簡(jiǎn)單的分為數(shù)方法,而是以二階梯度h作為權(quán)重進(jìn)行劃分。
對(duì)特征k構(gòu)造multi-set的數(shù)據(jù)集


XGBOOST的控制處理

XGBoost能對(duì)缺失值進(jìn)行自動(dòng)處理,原理就是將缺失值分別劃分到左子樹(shù)和右子樹(shù),分別計(jì)算增益。看哪個(gè)方向的增益比較大就把缺失值放到哪個(gè)方向。

XGBOOST的工程實(shí)現(xiàn)

在建樹(shù)的過(guò)程中,最耗時(shí)的是尋找最優(yōu)切分點(diǎn),而在這個(gè)過(guò)程中,最耗時(shí)的部分是將數(shù)據(jù)排序。為了減少排序時(shí)間,XGBOOST使用了Block結(jié)構(gòu)存儲(chǔ)數(shù)據(jù)。
Block中的數(shù)據(jù)以稀疏格式CSC進(jìn)行存儲(chǔ)
Block中的特征進(jìn)行預(yù)排序,并通過(guò)索引獲得內(nèi)存中的梯度信息

使用Block結(jié)構(gòu)的缺點(diǎn)是取梯度的時(shí)候,是通過(guò)索引來(lái)獲取的,而這些梯度的獲取順序是按照特征的大小排序的。這將導(dǎo)致非連續(xù)的內(nèi)存訪問(wèn),可能使CPU Cache中緩存命中率低,從而影響算法的效率。對(duì)于精確算法中,使用緩存預(yù)取。具體來(lái)說(shuō),對(duì)于每個(gè)線程分配一個(gè)連續(xù)的buffer,讀取梯度信息并且存入Buffer中,然后再統(tǒng)計(jì)梯度信息。這種方式在大樣本的情況下非常的有用。

XGBOOST的優(yōu)缺點(diǎn)總結(jié)

優(yōu)點(diǎn):

  • 精度更高:GBDT 只用到一階泰勒展開(kāi),而 XGBoost 對(duì)損失函數(shù)進(jìn)行了二階泰勒展開(kāi)。XGBoost 引入二階導(dǎo)一方面是為了增加精度,另一方面也是為了能夠自定義損失函數(shù),二階泰勒展開(kāi)可以近似大量損失函數(shù)
  • 靈活性更強(qiáng):GBDT 以 CART 作為基分類器,XGBoost 不僅支持 CART 還支持線性分類器,(使用線性分類器的 XGBoost 相當(dāng)于帶 L1 和 L2 正則化項(xiàng)的邏輯斯蒂回歸(分類問(wèn)題)或者線性回歸(回歸問(wèn)題))。此外,XGBoost 工具支持自定義損失函數(shù),只需函數(shù)支持一階和二階求導(dǎo)
  • 正則化:XGBoost 在目標(biāo)函數(shù)中加入了正則項(xiàng),用于控制模型的復(fù)雜度。正則項(xiàng)里包含了樹(shù)的葉子節(jié)點(diǎn)個(gè)數(shù)、葉子節(jié)點(diǎn)權(quán)重的 L2 范式。正則項(xiàng)降低了模型的方差,使學(xué)習(xí)出來(lái)的模型更加簡(jiǎn)單,有助于防止過(guò)擬合
  • 缺失值處理:XGBoost 采用的稀疏感知算法極大的加快了節(jié)點(diǎn)分裂的速度
  • 可以并行化操作:塊結(jié)構(gòu)可以很好的支持并行計(jì)算

缺點(diǎn):

  • 雖然利用預(yù)排序和近似算法可以降低尋找最佳分裂點(diǎn)的計(jì)算量,但在節(jié)點(diǎn)分裂過(guò)程中仍需要遍歷數(shù)據(jù)集
  • 預(yù)排序過(guò)程的空間復(fù)雜度過(guò)高,不僅需要存儲(chǔ)特征值,還需要存儲(chǔ)特征對(duì)應(yīng)樣本的梯度統(tǒng)計(jì)值的索引,相當(dāng)于消耗了兩倍的內(nèi)存

XGBOOST Python實(shí)用調(diào)參過(guò)程

XGBOOST的參數(shù)一般分為三類:

  • 通用參數(shù):控制宏觀函數(shù)的調(diào)用
  • Booster參數(shù):控制每一個(gè)booster生成的參數(shù)。booster參數(shù)一般可以調(diào)控模型的效果和計(jì)算代價(jià)。所以我們說(shuō)的調(diào)參,很大程度上就是調(diào)整booster參數(shù)
  • 學(xué)習(xí)目標(biāo)參數(shù):控制訓(xùn)練目標(biāo)的表現(xiàn)。我們對(duì)于問(wèn)題的劃分主要體現(xiàn)在學(xué)習(xí)目標(biāo)參數(shù)上。比如我們要做回歸還是分類,主要體現(xiàn)在目標(biāo)函數(shù)上面。
  • 通用參數(shù):
    booster:可全gbtree,和gblinear。gbtree采用樹(shù)的結(jié)構(gòu),gblinear采用線性的方式
    nthread:使用的線程數(shù),一般選擇-1就是使用所有線程進(jìn)行計(jì)算

    booster參數(shù):
    n_estimators:迭代次數(shù)
    learning_rate:shrink的速率,默認(rèn)是0.3
    gamma:默認(rèn)是0。分裂后造成
    subsample:每個(gè)booster采用率,默認(rèn)是1,一般選擇0.5-0.8
    colsample_bytree:樹(shù)層面的列抽樣
    colsample_bylevel:每一次分裂的列抽樣,默認(rèn)是1
    max_depth:樹(shù)的最大深度
    max_delta_step:限制了每棵樹(shù)權(quán)重該表的最大步長(zhǎng)。默認(rèn)是0就是沒(méi)有約束。通常不需要設(shè)置,但是在部分樣本不平衡的情況下,由于存在二階導(dǎo),所以可以防止權(quán)重異常的增加。
    lambda:L2正則項(xiàng),默認(rèn)0
    alpha:L1正則項(xiàng),默認(rèn)0
    scale_pos_weight:默認(rèn)1,用來(lái)平衡樣本的數(shù)量
    學(xué)習(xí)目標(biāo)參數(shù)
    objective:默認(rèn)reg:linear

    • reg:linear :線性回歸
    • reg:logistic :邏輯回歸
    • binary:logistic :二分類邏輯回歸
    • binary:logitraw :二分類邏輯回歸,輸出為wTx
    • count:poisson :計(jì)數(shù)問(wèn)題poisson回歸
    • multi:softmax :設(shè)置XGBOOST使用softmax目標(biāo)函數(shù)做多分類,需要設(shè)置參數(shù)num_class
    • multi:softprob :如同softmax,但輸出結(jié)果為ndata*nclass的向量,其中的值是每個(gè)數(shù)據(jù)分為每個(gè)類的概率
      eval_metric: 默認(rèn)是使用objective相同的參數(shù)
    • rmse:均方根誤差
    • mae:絕對(duì)值誤差
    • logloss:最大似然取負(fù)
    • error:二分類錯(cuò)誤率
    • merror: 多分類錯(cuò)誤率
    • mlogloss:多分類log損失
    • auc: auc曲線下面的面積
    • ndcg:Normalized Discounted Cumulative Gain
    • map: 平均正確率

    我們先查看一下調(diào)整scale_pos_weight對(duì)輸出產(chǎn)生的影響
    class_weight=1,mean Y result=0.064
    class_weight=2,mean Y result=0.100
    class_weight=10,mean Y result=0.256
    class_weight=20,mean Y result=0.354
    我們可以看出,基本上scale_pos_weight越大,概率輸出也越大。如果對(duì)概率的正確性有要求,一般不用調(diào)scale_pos_weight

    調(diào)整n_estimators,和learning_rate

    我們發(fā)現(xiàn)n_estimators越大效果越好,然而learning_rate則不一定,選取0.1的時(shí)候是最優(yōu)的

    我隨后嘗試調(diào)整一下樣本抽樣subsample和列抽樣colsample_bytree,看看是否對(duì)準(zhǔn)去率有一定的影響

    可以看出,這兩個(gè)值越大,auc值越多,但是colsample_bytree超過(guò)0.8之后邊際效益就出來(lái)了,所以最終選擇subsample=0.5,colsample_bytree=0.8

    調(diào)整max_depth和gamma,看看剪枝是否可以提升模型的效果

    我們發(fā)現(xiàn)max_depth=10的時(shí)候效果最好,gamma沒(méi)有明顯影響

    我們?cè)噲D加入L2正則項(xiàng)Lambda,看看正則化對(duì)模型效果是否有影響

    最后發(fā)現(xiàn)正則化對(duì)模型最終區(qū)分能力AUC沒(méi)有太大的影響,但會(huì)減小模型的方差。這里選取lambda=0.1即可

    總結(jié)

    以上是生活随笔為你收集整理的XGBOOST的基本原理以及使用的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

    如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。

    主站蜘蛛池模板: 高清成人免费视频 | 欧美人妖xxxx | 影音先锋亚洲精品 | 亚洲高清免费 | 蜜桃精品成人影片 | 天堂va欧美ⅴa亚洲va一国产 | 亚洲精品久久久久久无码色欲四季 | 加勒比一区在线 | 制服丝袜av在线 | 国产第一页屁屁影院 | 69中国xxxxxxxxx69 国产又爽又色 | 亚洲精品一区二区三区蜜臀 | 成人区人妻精品一区 | 国产精品女同一区二区 | 黄频视频在线观看 | 国产剧情久久久 | 少妇精品久久久一区二区三区 | 久久国产乱子伦免费精品 | 我和我的太阳泰剧在线观看泰剧 | 综合在线观看 | 日韩亚洲欧美综合 | 日韩综合在线 | av网站在线观看不卡 | 亚洲性图第一页 | 狠狠做深爱婷婷久久综合一区 | 欧美美女性高潮 | 一区二区三区在线免费播放 | 国产亚洲欧美精品久久久www | 探花视频在线免费观看 | 国产真实乱在线更新 | 欧美特一级片 | 亚洲精品一区二三区不卡 | 一本色道久久hezyo加勒比 | 国产欧美一区二区三区国产幕精品 | 婷婷一区二区三区四区 | 欧美xxxxx高潮喷水麻豆 | 一区二区三区在线观 | 亚洲国产福利视频 | 黑白配在线观看免费观看 | 精品国产不卡 | 99热国内精品 | 婷婷五月在线视频 | av爱爱爱 | 欧美性爱视频久久 | 欧美一区网站 | www,日韩| 白丝av | 久久精品韩国 | 国精产品一二三区精华液 | 国产精品普通话 | 97久久国产亚洲精品超碰热 | sm在线观看| 7777av| 国产精品久久久久久久av福利 | 亚洲区一区二区 | 亚洲第一视频 | 亚洲一区二区电影 | 欧美在线免费 | 成人爽爽视频 | 啪啪免费小视频 | 国产二区自拍 | 伊人国产在线观看 | 中文天堂| 国精品人妻无码一区二区三区喝尿 | 91在线影院 | 涩涩涩在线观看 | 熟妇人妻系列aⅴ无码专区友真希 | 中文视频在线 | 欧美网站在线 | 久久久久久久久久久久电影 | 影音先锋久久 | 国产一区二区三区精品愉拍 | 亚洲无吗视频 | 亚洲精品乱码久久久久久日本蜜臀 | 91tv在线观看 | 蜜桃视频在线观看一区二区 | 97久久国产精品 | a级片在线观看 | 久久网页 | 台湾佬美性中文 | 亚洲欧美网址 | 国产永久毛片 | 精品少妇人妻av免费久久久 | 性猛交xxxx乱大交3 | 青青草国产在线播放 | 欧美肉大捧一进一出免费视频 | 国产成人av一区 | 日本免费不卡一区二区 | 男女三级视频 | 国产无遮挡呻吟娇喘视频 | 日韩色黄大片 | 亚洲国产亚洲 | 国产v亚洲v天堂无码 | 国产无套精品一区二区三区 | 69视频污| 亚洲天堂一 | 波多野结衣中文字幕一区二区 | 成人小说亚洲一区二区三区 | 婷婷在线免费观看 |