第八章xgboost/lightGBM
文章目錄
- 1 xgboost
- 1.1 基本用法
- 1.1.1 通用參數
- 1.1.2 集成參數
- 1.1.3 任務參數
- 1.2 例子
- 1.3 當評價函數不在默認范圍內
- 2 lightGBM
1 xgboost
1.1 基本用法
xgboost有三類參數:通用參數、集成參數和任務參數。
1.1.1 通用參數
booster:可選值gbree、gblinear。默認值是gbree。這是指定用哪種基模型。
silent,可選值0,1。默認是0,表示有輸出。
nthread 線程數
1.1.2 集成參數
eta 學習率。默認值0.3,范圍[0,1]。
gamma [default=0, alias: min_split_loss]為了對樹的葉子節點做進一步的分割而必須設置的損失減少的最小值,該值越大,算法越保守range: [0,∞]
max_depth [default=6]用于設置樹的最大深度range: [1,∞]
min_child_weight [default=1]表示子樹觀測權重之和的最小值,如果樹的生長時的某一步所生成的葉子結點,其觀測權重之和小于min_child_weight,那么可以放棄該步生長,在線性回歸模式中,這僅僅與每個結點所需的最小觀測數相對應。該值越大,算法越保守range: [0,∞]
max_delta_step [default=0]如果該值為0,就是沒有限制;如果設為一個正數,可以使每一步更新更加保守通常情況下這一參數是不需要設置的,但是在logistic回歸的訓練集中類極端不平衡的情況下,將這一參數的設置很有用,將該參數設為1-10可以控制每一步更新range: [0,∞]
subsample [default=1]表示觀測的子樣本的比率,將其設置為0.5意味著xgboost將隨機抽取一半觀測用于數的生長,這將有助于防止過擬合現象range: (0,1]
colsample_bytree [default=1]表示用于構造每棵樹時變量的子樣本比率range: (0,1]
colsample_bylevel [default=1]用來控制樹的每一級的每一次分裂,對列數的采樣的占比。一般不太用這個參數,因為subsample參數和colsample_bytree參數可以起到相同的作用。range: (0,1]
lambda [default=1, alias: reg_lambda]L2 權重的L2正則化項
alpha [default=0, alias: reg_alpha]L1 權重的L1正則化項
1.1.3 任務參數
objective [ default=reg:linear ] 這個參數定義需要被最小化的損失函數。
base_score [ default=0.5 ]
eval_metric [ 默認是根據 損失函數/目標函數 自動選定的 ]。評估函數。
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 ## 分出變量和標簽 dataset = loadtxt('data/Pima-Indians-Diabetes.csv', delimiter=",",skiprows=1) X = dataset[:,0:8] Y = dataset[:,8] ## 分出訓練集和測試集 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) ## 開始訓練 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 當評價函數不在默認范圍內
此時需要調用xgboost的native方法進行訓練。
需要將訓練集和測試集變為xgb.DMatrix數據格式。
可以自己定義的損失函數,需要給定損失函數的一階導數和二階導數。
可以自定義評估標準
參考 鏈接
2 lightGBM
lightGBM是微軟開源的一個庫。與xgboost相似,但可以處理數據量更大、特征維度更高的數據。
lightGBM與xgboost樹的生長方式不同。
總結
以上是生活随笔為你收集整理的第八章xgboost/lightGBM的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 从小工到专家【借鉴】
- 下一篇: 洛谷P1130 红牌