第八章xgboost/lightGBM
文章目錄
- 1 xgboost
- 1.1 基本用法
- 1.1.1 通用參數(shù)
- 1.1.2 集成參數(shù)
- 1.1.3 任務(wù)參數(shù)
- 1.2 例子
- 1.3 當(dāng)評(píng)價(jià)函數(shù)不在默認(rèn)范圍內(nèi)
- 2 lightGBM
1 xgboost
1.1 基本用法
xgboost有三類參數(shù):通用參數(shù)、集成參數(shù)和任務(wù)參數(shù)。
1.1.1 通用參數(shù)
booster:可選值gbree、gblinear。默認(rèn)值是gbree。這是指定用哪種基模型。
silent,可選值0,1。默認(rèn)是0,表示有輸出。
nthread 線程數(shù)
1.1.2 集成參數(shù)
eta 學(xué)習(xí)率。默認(rèn)值0.3,范圍[0,1]。
gamma [default=0, alias: min_split_loss]為了對(duì)樹的葉子節(jié)點(diǎn)做進(jìn)一步的分割而必須設(shè)置的損失減少的最小值,該值越大,算法越保守range: [0,∞]
max_depth [default=6]用于設(shè)置樹的最大深度range: [1,∞]
min_child_weight [default=1]表示子樹觀測(cè)權(quán)重之和的最小值,如果樹的生長(zhǎng)時(shí)的某一步所生成的葉子結(jié)點(diǎn),其觀測(cè)權(quán)重之和小于min_child_weight,那么可以放棄該步生長(zhǎng),在線性回歸模式中,這僅僅與每個(gè)結(jié)點(diǎn)所需的最小觀測(cè)數(shù)相對(duì)應(yīng)。該值越大,算法越保守range: [0,∞]
max_delta_step [default=0]如果該值為0,就是沒(méi)有限制;如果設(shè)為一個(gè)正數(shù),可以使每一步更新更加保守通常情況下這一參數(shù)是不需要設(shè)置的,但是在logistic回歸的訓(xùn)練集中類極端不平衡的情況下,將這一參數(shù)的設(shè)置很有用,將該參數(shù)設(shè)為1-10可以控制每一步更新range: [0,∞]
subsample [default=1]表示觀測(cè)的子樣本的比率,將其設(shè)置為0.5意味著xgboost將隨機(jī)抽取一半觀測(cè)用于數(shù)的生長(zhǎng),這將有助于防止過(guò)擬合現(xiàn)象range: (0,1]
colsample_bytree [default=1]表示用于構(gòu)造每棵樹時(shí)變量的子樣本比率range: (0,1]
colsample_bylevel [default=1]用來(lái)控制樹的每一級(jí)的每一次分裂,對(duì)列數(shù)的采樣的占比。一般不太用這個(gè)參數(shù),因?yàn)閟ubsample參數(shù)和colsample_bytree參數(shù)可以起到相同的作用。range: (0,1]
lambda [default=1, alias: reg_lambda]L2 權(quán)重的L2正則化項(xiàng)
alpha [default=0, alias: reg_alpha]L1 權(quán)重的L1正則化項(xiàng)
1.1.3 任務(wù)參數(shù)
objective [ default=reg:linear ] 這個(gè)參數(shù)定義需要被最小化的損失函數(shù)。
base_score [ default=0.5 ]
eval_metric [ 默認(rèn)是根據(jù) 損失函數(shù)/目標(biāo)函數(shù) 自動(dòng)選定的 ]。評(píng)估函數(shù)。
seed [ default=0 ] random number seed.
1.2 例子
## 引入包 from numpy import loadtxt from xgboost import XGBClassifier from sklearn.model_selection import train_test_split from sklearn.metrics import accuracy_score ## 分出變量和標(biāo)簽 dataset = loadtxt('data/Pima-Indians-Diabetes.csv', delimiter=",",skiprows=1) X = dataset[:,0:8] Y = dataset[:,8] ## 分出訓(xùn)練集和測(cè)試集 seed = 7 test_size = 0.33 X_train, X_test, y_train, y_test = train_test_split(X, Y, test_size=test_size,random_state=seed) ## 開始訓(xùn)練 model = XGBClassifier() model.fit(X_train, y_train) y_pred = model.predict(X_test) predictions = [round(value) for value in y_pred] accuracy = accuracy_score(y_test, predictions) print("Accuracy: %.2f%%" % (accuracy * 100.0))1.3 當(dāng)評(píng)價(jià)函數(shù)不在默認(rèn)范圍內(nèi)
此時(shí)需要調(diào)用xgboost的native方法進(jìn)行訓(xùn)練。
需要將訓(xùn)練集和測(cè)試集變?yōu)閤gb.DMatrix數(shù)據(jù)格式。
可以自己定義的損失函數(shù),需要給定損失函數(shù)的一階導(dǎo)數(shù)和二階導(dǎo)數(shù)。
可以自定義評(píng)估標(biāo)準(zhǔn)
參考 鏈接
2 lightGBM
lightGBM是微軟開源的一個(gè)庫(kù)。與xgboost相似,但可以處理數(shù)據(jù)量更大、特征維度更高的數(shù)據(jù)。
lightGBM與xgboost樹的生長(zhǎng)方式不同。
總結(jié)
以上是生活随笔為你收集整理的第八章xgboost/lightGBM的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 从小工到专家【借鉴】
- 下一篇: 洛谷P1130 红牌