XGBoost參數詳解(API文檔)

**

XGBoost參數

**

在運行XGBoost之前,我們必須設置三種類型的參數:常規參數,增強器參數和任務參數。

一般參數與我們用來進行增強的助推器有關,通常是樹狀模型或線性模型
增壓器參數取決於您選擇的增壓器
學習任務參數決定學習場景。例如,迴歸任務可以對排名任務使用不同的參數。
命令行參數與XGBoost的CLI版本的行爲有關。

常規參數

booster[默認= gbtree]

使用哪個助推器。可以gbtree,gblinear或者dart; gbtree並dart使用基於樹的模型,同時gblinear使用線性函數。

silent [默認值= 0] [不推薦使用]

不推薦使用。請verbosity改用。

verbosity [默認值= 1]

打印消息的詳細程度。有效值爲0(靜默),1(警告),2(信息),3(調試)。有時,XGBoost會嘗試根據啓發式來更改配置,該顯示爲警告消息。如果出現意外行爲,請嘗試增加詳細程度的值。

nthread [如果未設置,默認爲最大可用線程數]

用於運行XGBoost的並行線程數

disable_default_eval_metric [默認= 0]

標記以禁用默認指標。設置爲> 0禁用。

num_pbuffer [由XGBoost自動設置,無需由用戶設置]

預測緩衝區的大小,通常設置爲訓練實例數。緩衝區用於保存最後提升步驟的預測結果。

num_feature [由XGBoost自動設置,無需由用戶設置]

用於增強的特徵尺寸,設置爲特徵的最大尺寸

Tree Booster的參數

eta[默認= 0.3,別名:learning_rate]

更新中使用的步長收縮,以防止過度擬合。在每個增強步驟之後,我們都可以直接獲得新特徵的權重,並eta縮小特徵權重以使增強過程更加保守。
範圍:[0,1]

gamma[默認= 0,別名:min_split_loss]

在樹的葉節點上進行進一步分區所需的最小損失減少。越大gamma,算法將越保守。
範圍:[0,∞]

max_depth [默認= 6]

一棵樹的最大深度。增加此值將使模型更復雜,並且更可能過度擬合。僅lossguided當tree_method設置爲hist並且表示深度沒有限制時,纔在增長策略中接受0 。注意,訓練一棵深樹時,XGBoost會大量消耗內存。
範圍:[0,∞](僅lossguided當tree_method設置爲時,增長策略才接受0 hist)

min_child_weight [默認值= 1]

子級中實例重量的最小總和(hessian)。如果樹分區步驟導致葉節點的實例權重之和小於min_child_weight,則構建過程將放棄進一步的分區。在線性迴歸任務中,這僅對應於每個節點中需要的最少實例數。越大min_child_weight,算法將越保守。
範圍:[0,∞]

max_delta_step [默認= 0]

我們允許每個葉子輸出的最大增量步長。如果將該值設置爲0,則表示沒有約束。如果將其設置爲正值,則可以幫助使更新步驟更加保守。通常不需要此參數,但是當類極度不平衡時,它可能有助於邏輯迴歸。將其設置爲1-10的值可能有助於控制更新。
範圍:[0,∞]

subsample [默認值= 1]

訓練實例的子樣本比率。將其設置爲0.5意味着XGBoost將在樹木生長之前隨機採樣一半的訓練數據。這樣可以防止過度擬合。二次採樣將在每個增強迭代中進行一次。
範圍:(0,1]

colsample_bytree,colsample_bylevel,colsample_bynode[默認= 1]

這是用於列二次採樣的一組參數。
所有colsample_by參數的範圍爲(0,1],默認值爲1,並指定要進行二次採樣的列的分數。
colsample_bytree是構造每棵樹時列的子採樣率。對每一個構造的樹進行一次二次採樣。
colsample_bylevel是每個級別的列的子樣本比率。對於樹中達到的每個新深度級別,都會進行一次二次採樣。從爲當前樹選擇的一組列中對列進行子採​​樣。
colsample_bynode是每個節點(拆分)的列的子樣本比率。每次評估新的分割時,都會進行一次二次採樣。列是從爲當前級別選擇的一組列中進行子採樣的。
colsample_by
參數累積工作。例如,具有64個功能的組合將在每個拆分中保留8個功能供您選擇。{‘colsample_bytree’:0.5, ‘colsample_bylevel’:0.5, ‘colsample_bynode’:0.5}

lambda[默認= 1,別名:reg_lambda]

L2正則化權重項。增加此值將使模型更加保守。

alpha[默認= 0,別名:reg_alpha]

權重的L1正則化項。增加此值將使模型更加保守。

tree_method字符串[default = auto]

XGBoost中使用的樹構建算法。請參閱參考文件中的描述。
XGBoost支持hist和approx分佈式訓練和唯一支持approx外部存儲器的版本。
選擇:auto,exact,approx,hist,gpu_hist

auto:使用啓發式選擇最快的方法。

對於中小型數據集,exact將使用精確貪婪()。
對於非常大的數據集,approx將選擇近似算法()。
由於舊行爲總是在單個計算機上使用完全貪婪,因此,當選擇近似算法來通知該選擇時,用戶將收到一條消息。

exact:精確的貪婪算法。
approx:使用分位數草圖和梯度直方圖的近似貪婪算法。
hist:快速直方圖優化的近似貪婪算法。它使用了一些性能改進,例如垃圾箱緩存。
gpu_hist:GPU hist算法的實現。

sketch_eps [默認值= 0.03]

僅用於tree_method=approx。
這大致轉化爲箱數。與直接選擇垃圾箱數量相比,這具有草圖準確性的理論保證。O(1 / sketch_eps)
通常,用戶不必對此進行調整。但是,請考慮設置較低的數字,以更精確地枚舉拆分後的候選人。
範圍:(0,1)

scale_pos_weight [默認值= 1]

控制正負權重的平衡,這對於不平衡的班級很有用。需要考慮的典型值:。有關更多討論,請參見參數調整。另外,請參見Higgs Kaggle競賽演示,例如:R,py1,py2,py3。sum(negative instances) / sum(positive instances)

updater[默認= grow_colmaker,prune]

逗號分隔的字符串定義要運行的樹更新程序的順序,從而提供了一種構造和修改樹的模塊化方法。這是一個高級參數,通常會根據其他一些參數自動設置。但是,它也可以由用戶顯式設置。存在以下更新程序:

grow_colmaker:基於樹的非分佈式列結構。
distcol:具有基於列的數據拆分模式的分佈式樹結構。
grow_histmaker:基於直方圖計數全局提議的基於行的數據拆分的分佈式樹結構。
grow_local_histmaker:基於本地直方圖計數。
grow_skmaker:使用近似草圖算法。
sync:同步所有分佈式節點中的樹。
refresh:根據當前數據刷新樹的統計信息和/或葉值。注意,不對數據行進行隨機子採樣。
prune:修剪損失<min_split_loss(或gamma)的分割。

在分佈式設置中,grow_histmaker,prune默認情況下會將隱式更新程序序列值調整爲,您可以將其設置tree_method爲hist使用grow_histmaker。

refresh_leaf [默認值= 1]

這是refresh更新程序的參數。當此標誌爲1時,將更新樹葉以及樹節點的統計信息。當它爲0時,僅更新節點統計信息。

process_type[默認= default]

一種運行的加速過程。
選擇:default,update

default:創建新樹的常規增強過程。
update:從現有模型開始,僅更新其樹。在每次增強迭代中,都會從初始模型中提取一棵樹,爲該樹運行指定的更新程序序列,然後將修改後的樹添加到新模型中。新模型將具有相同或更少數量的樹,具體取決於執行的增強迭代次數。當前,以下內置更新程序可與此進程類型有意義地使用:refresh,prune。使用process_type=update,不能使用創建新樹的更新程序。

grow_policy[默認= depthwise]

控制將新節點添加到樹的方式。
當前僅在tree_method設置爲時受支持hist。
選擇:depthwise,lossguide

depthwise:在最靠近根的節點處拆分。
lossguide:在損耗變化最大的節點處拆分。

max_leaves [默認= 0]

要添加的最大節點數。僅在grow_policy=lossguide設置時相關。

max_bin,[默認值= 256]

僅在tree_method設置爲時使用hist。
用於存儲連續特徵的最大不連續回收箱數。
增加此數目可提高拆分的最佳性,但需要增加計算時間。

predictor,[default =’'cpu_predictor``]

要使用的預測器算法的類型。提供相同的結果,但允許使用GPU或CPU。

cpu_predictor:多核CPU預測算法。
gpu_predictor:使用GPU進行預測。默認tree_method值爲gpu_hist。

num_parallel_tree,[default = 1]-
每次迭代期間構造的並行樹的數量。此選項用於支持增強型隨機森林。

Dart Booster的其他參數(booster=dart)

注意

使用predict()與DART助推器

如果booster對象是DART類型,predict()將執行刪除操作,即,僅對某些樹進行評估。如果data不是訓練數據,將會產生不正確的結果。爲了獲得正確的測試結果,請設置ntree_limit爲非零值,例如

preds = bst.predict(dtest, ntree_limit=num_round)

sample_type[默認= uniform]

採樣算法的類型。

uniform:統一選擇掉落的樹木。
weighted:按重量選擇掉落的樹木。

normalize_type[默認= tree]

歸一化算法的類型。

tree:新樹的重量與每棵掉落的樹相同。

新樹的重量是。1 / (k + learning_rate)
掉落的樹木的縮放比例爲。k / (k + learning_rate)

forest:新樹的權重等於被丟棄樹(森林)的總和。

新樹的重量是。1 / (1 + learning_rate)
掉落的樹木的縮放比例爲。1 / (1 + learning_rate)

rate_drop [默認值= 0.0]

退出率(在退出過程中要丟棄的先前樹的一部分)。
範圍:[0.0,1.0]

one_drop [默認= 0]

啓用此標誌後,在刪除過程中始終至少要丟棄一棵樹(允許從原始DART紙張進行二項式加一或epsilon刪除)。

skip_drop [默認值= 0.0]

在增強迭代過程中跳過退出過程的可能性。

如果跳過了退出,則以與相同的方式添加新樹gbtree。
請注意,非零的skip_drop優先級高於rate_drop或one_drop。

範圍:[0.0,1.0]

Linear Booster的參數(booster=gblinear)

lambda[默認= 0,別名:reg_lambda]

L2正則化權重項。增加此值將使模型更加保守。歸一化爲訓練示例數。

alpha[默認= 0,別名:reg_alpha]

權重的L1正則化項。增加此值將使模型更加保守。歸一化爲訓練示例數。

updater[默認= shotgun]

選擇適合線性模型的算法

shotgun:基於shot彈槍算法的平行座標下降算法。使用“ hogwild”並行性,因此每次運行都產生不確定的解決方案。
coord_descent:普通座標下降算法。同樣是多線程的,但仍會產生確定性的解決方案。

feature_selector[默認= cyclic]

特徵選擇和排序方法

cyclic:通過一次循環瀏覽功能來進行確定性選擇。
shuffle:類似於,cyclic但在每次更新前都會隨機進行改組。
random:隨機(帶替換)座標選擇器。
greedy:選擇梯度最大的座標。它具有O(num_feature^2)複雜性。這是完全確定的。top_k通過設置top_k參數,它可以將選擇限制爲每組具有最大單變量權重變化的特徵。這樣做將降低複雜度O(num_feature*top_k)。
thrifty:節儉的近似貪婪的特徵選擇器。在循環更新之前,對特徵的重排序以其單變量權重變化的降序進行。此操作是多線程的,是二次貪婪選擇的線性複雜度近似值。top_k通過設置top_k參數,它可以將選擇限制爲每組具有最大單變量權重變化的特徵。

top_k [默認= 0]

要選擇的最重要特徵數greedy和thrifty特徵選擇器。值0表示使用所有功能。

Tweedie迴歸參數

(objective=reg:tweedie)

tweedie_variance_power [默認值= 1.5]

控制Tweedie分佈方差的參數 var(y) ~ E(y)^tweedie_variance_power
範圍:(1,2)
設置爲接近2即可轉向伽瑪分佈
設置爲接近1即可轉變爲泊松分佈。

學習任務參數

指定學習任務和相應的學習目標。目標選項如下:

objective [default = reg:squarederror]

reg:squarederror:損失平方迴歸。
reg:squaredlogerror:對數損失平方迴歸 12[log(pred+1)−log(label+1)]212[log(pred+1)−log(label+1)]2。所有輸入標籤都必須大於-1。另外,請參閱指標rmsle以瞭解此目標可能存在的問題。
reg:logistic:邏輯迴歸
binary:logistic:二元分類的邏輯迴歸,輸出概率
binary:logitraw:用於二進制分類的邏輯迴歸,邏輯轉換之前的輸出得分
binary:hinge:二進制分類的鉸鏈損失。這使預測爲0或1,而不是產生概率。
count:poisson –計數數據的泊松迴歸,泊松分佈的輸出平均值

max_delta_step
在泊松迴歸中默認設置爲0.7(用於維護優化)

survival:cox:針對正確的生存時間數據進行Cox迴歸(負值被視爲正確的生存時間)。請注意,預測是按危險比等級返回的(即,比例危險函數中的HR = exp(marginal_prediction))。h(t) = h0(t) * HR
multi:softmax:設置XGBoost以使用softmax目標進行多類分類,還需要設置num_class(類數)
multi:softprob:與softmax相同,但輸出向量,可以進一步重整爲矩陣。結果包含屬於每個類別的每個數據點的預測概率。ndata * nclassndata * nclass
rank:pairwise:使用LambdaMART進行成對排名,從而使成對損失最小化
rank:ndcg:使用LambdaMART進行列表式排名,使標準化折讓累積收益(NDCG)最大化
rank:map:使用LambdaMART進行列表平均排名,使平均平均精度(MAP)最大化
reg:gamma:使用對數鏈接進行伽馬迴歸。輸出是伽馬分佈的平均值。例如,對於建模保險索賠嚴重性或對可能是伽馬分佈的任何結果,它可能很有用。
reg:tweedie:使用對數鏈接進行Tweedie迴歸。它可能有用,例如,用於建模保險的總損失,或用於可能是Tweedie-distributed的任何結果。

base_score [默認值= 0.5]

所有實例的初始預測得分,整體偏差
對於足夠的迭代次數,更改此值不會有太大影響。

eval_metric [根據目標默認]

驗證數據的評估指標,將根據目標分配默認指標(迴歸均方根,分類誤差,排名的平均平均精度)
用戶可以添加多個評估指標。Python用戶:記住將指標作爲參數對的列表而不是映射進行傳遞,以使後者eval_metric不會覆蓋前一個
下面列出了這些選擇:

rmse:均方根誤差
rmsle:均方根對數誤差: 1N[log(pred+1)−log(label+1)]2−−−−−−−−−−−−−−−−−−−−−−−−−−√1N[log(pred+1)−log(label+1)]2。reg:squaredlogerror目標的默認指標。此指標可減少數據集中異常值所產生的錯誤。但是由於log採用功能,rmsle可能nan在預測值小於-1時輸出。有關reg:squaredlogerror其他要求,請參見。
mae:平均絕對誤差
logloss:負對數似然
error:二進制分類錯誤率。計算公式爲。對於預測,評估會將預測值大於0.5的實例視爲肯定實例,而將其他實例視爲否定實例。#(wrong cases)/#(all cases)
error@t:可以通過提供’t’的數值來指定不同於0.5的二進制分類閾值。
merror:多類分類錯誤率。計算公式爲。#(wrong cases)/#(all cases)
mlogloss:多類logloss。
auc:曲線下面積
aucpr:PR曲線下的面積
ndcg:歸一化累計折扣
map:平均平均精度
ndcg@n,map@n:'n’可以被指定爲整數,以切斷列表中的最高位置以進行評估。
ndcg-,map-,ndcg@n-,map@n-:在XGBoost,NDCG和MAP將評估清單的比分沒有任何陽性樣品爲1加入-在評價指標XGBoost將評估這些得分爲0,是在一定條件下一致“”。
poisson-nloglik:泊松迴歸的負對數似然
gamma-nloglik:伽馬迴歸的對數似然比爲負
cox-nloglik:Cox比例風險迴歸的負對數似然率
gamma-deviance:伽馬迴歸的殘餘偏差
tweedie-nloglik:Tweedie迴歸的負對數似然(在tweedie_variance_power參數的指定值處)

seed [默認= 0]

隨機數種子。

命令行參數

以下參數僅在XGBoost的控制檯版本中使用

num_round

提升輪數

data

訓練數據的路徑

test:data

測試數據進行預測的路徑

save_period [默認= 0]

保存模型的時間段。設置save_period=10意味着XGBoost每10輪將保存一個模型。將其設置爲0意味着在訓練期間不保存任何模型。

task[默認= train]選項:train,pred,eval,dump

train:使用數據進行訓練
pred:預測測試:數據
eval:用於評估指定的統計信息 eval[name]=filename
dump:用於將學習到的模型轉儲爲文本格式

model_in [默認值= NULL]

路徑輸入模型,需要的test,eval,dump任務。如果在訓練中指定了XGBoost,它將從輸入模型繼續訓練。

model_out [默認值= NULL]

訓練完成後輸出模型的路徑。如果未指定,則XGBoost將輸出名稱爲0003.modelwhere 0003of boosting rounds的文件。

model_dir[默認= models/]

訓練期間保存的模型的輸出目錄

fmap

特徵圖,用於轉儲模型

dump_format[default = text]選項:text,json

模型轉儲文件的格式

name_dump[默認= dump.txt]

模型轉儲文件的名稱

name_pred[默認= pred.txt]

預測文件的名稱,在pred模式下使用

pred_margin [默認= 0]

預測利潤率而不是轉換概率

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章