特徵處理:
缺失值處理:
啞變數處理:
附:需要處理啞變數的演算法有,
knn、
glmnet
、svm
、xgboost
;不需處理為啞變數的演算法有,
logistic regression
、raprt
、gbm
、randomforest
一、模型引數:
在訓練過程中主要用到兩個方法:
xgboost.train()
和xgboost.cv().
xgboost.train(params,dtrain,num_boost_round=10,evals=(),obj=none,feval=none,maximize=false,early_stopping_rounds=none, evals_result=none,verbose_eval=true,learning_rates=none,xgb_model=none)
params
這是乙個字典,裡面包含著訓練中的引數關鍵字和對應的值,形式是
params =
dtrain
訓練的資料
num_boost_round
這是指提公升迭代的個數
evals
這是乙個列表,用於對訓練過程中進行評估列表中的元素。形式是
evals = [(dtrain,』train』),(dval,』val』)]
或者是evals = [(dtrain,』train』)],
對於第一種情況,它使得我們可以在訓練過程中觀察驗證集的效果。
obj,
自定義目的函式
feval,
自定義評估函式
maximize ,
是否對評估函式進行最大化
early_stopping_rounds,
早期停止次數 ,假設為
100,驗證集的誤差迭代到一定程度在
100次內不能再繼續降低,就停止迭代。這要求
evals
裡至少有 乙個元素,如果有多個,按最後乙個去執行。返回的是最後的迭代次數(不是最好的)。如果
early_stopping_rounds
存在,則模型會生成三個屬性,
bst.best_score,bst.best_iteration,
和bst.best_ntree_limit
evals_result
字典,儲存在
watchlist
中的元素的評估結果。
verbose_eval (
可以輸入布林型或數值型
),也要求
evals
裡至少有 乙個元素。如果為
true ,
則對evals
中元素的評估結果會輸出在結果中;如果輸入數字,假設為
5,則每隔
5個迭代輸出一次。
learning_rates
每一次提公升的學習率的列表,
xgb_model ,
在訓練之前用於載入的
xgb model。
二、引數調優
初始設定引數:
params =
colsample_bytree
要依據特徵個數來判斷
objective
目標函式的選擇要根據問題確定,如果引數初步定之後劃分
20%為驗證集,準備乙個
watchlist
給train
和validation set ,
設定num_round
足夠大(比如
100000
),以至於你能發現每乙個
round
的驗證集**結果,如果在某乙個
round
後 validation set
的**誤差上公升了,你就可以停止掉正在執行的程式了。是回歸問題 ,一般是
reg:linear , reg:logistic , count:poisson
如果是分類問題,一般是
binary:logistic ,rank:pairwise
引數初步定之後劃分
20%為驗證集,準備乙個
watchlist
給train
和validation set ,
設定num_round
足夠大(比如
100000
),以至於你能發現每乙個
round
的驗證集**結果,如果在某乙個
round
後 validation set
的**誤差上公升了,你就可以停止掉正在執行的程式了。
watchlist = [(dtrain,'train'),(dval,'val')] model = xgb.train(params,dtrain,num_boost_round=100000,evals = watchlist)
逐個調優:
首先調整
max_depth,
通常max_depth
這個引數與其他引數關係不大,初始值設定為
10,找到乙個最好的誤差值,然後就可以調整引數與這個誤差值進行對比。比如調整到
8,如果此時最好的誤差變高了,那麼下次就調整到
12;如果調整到
12,誤差值比
10 的低,那麼下次可以嘗試調整到
15.
——降低模型複雜度
在找到了最優的
max_depth
之後,可以開始調整
subsample,
初始值設定為
1,然後調整到
0.8
如果誤差值變高,下次就調整到
0.9,如果還是變高,就保持為
1.0
接著開始調整
min_child_weight,
方法與上面同理
再接著調整
colsample_bytree ——以上隨機化
經過上面的調整,已經得到了一組引數,這時調整
eta到
0.05
,然後讓程式執行來得到乙個最佳的
num_round,(
在 誤差值開始上公升趨勢的時候為最佳
)
——正則化
主要思路:
機器學習演算法的建立——k層交叉檢驗(資料分折、交叉檢驗)——計算評價指標——指標深度分析(單因素方差分析、多元正態檢驗)——視覺化(rog、折線圖)
XGBoost 學習過程
最近開始入手學習python處理資料,在看 的時候發現了xgboost,並且作為第三方庫在pycharm中無法匯入,很是一籌莫展,那就從部落格上搜尋開始入手,首先了解這個庫到底是完成了什麼事情呢。下面開始據此對xgboost的原理做簡單的介紹 xgboost 1 是2014年2月誕生的專注於梯度提公...
機器學習 xgboost
xgb中引數分為三類 1.通用引數 2.整合引數 3.任務引數 1 隨機森林在ligthgbm 有很多整合演算法 中有,裡面更全。2 xgboost 裡面有gdbt是樹的串型疊加的各種包,梯度增強的方法 裡面沒有隨機森林包。xgboost是乙個支援多種資料格式的庫。libsvm資料儲存格式,xgbo...
XGBoost學習資料彙總
參考bryan大神的xgboost課程 1.自定義目標函式 2.機器學習演算法中gdbt和xgboost的區別有哪些 3.dart 4.xgboost reliable large scale tree boosting system 5.xgboost a scalable treeboostin...