本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
XGBoost 0.72 版
重要
XGBoost 0.72 已由 Amazon SageMaker AI 取代。您仍可以透過提取舊版 XGBoost 的映像 URI 來使用此舊版 XGBoost (做為內建演算法),如以下程式碼範例所示。對於 XGBoost,結尾為 :1
的映像 URI適用於舊版本。
如果你想使用較新的版本,你必須明確指定圖像 URI 標記 (請參閱支援的版本)。
此 Amazon SageMaker AI XGBoost 演算法的先前版本是以 0.72 版本為基礎。XGBoost
客戶應考慮使用新版 搭配 Amazon SageMaker AI 的 XGBoost 演算法。他們可以將其用作 SageMaker AI 內建演算法,或用作架構,以在本機環境中執行指令碼,例如,通常使用 Tensorflow 深度學習架構。新的實作具有更小的記憶體使用量、更好的記錄、已改善的超參數驗證,以及已擴展的指標集。如果客戶需要延後遷移到新版本,則 XGBoost 的先前實作仍可供客戶使用。但是,這個先前的實作仍將繫結至 0.72 版的 XGBoost。
XGBoost 0.72 版的輸入/輸出介面
梯度提升在表格式資料中操作,含有代表觀察的行、還有一個代表目標變數或標籤的欄,而剩下的欄則代表功能。
XGBoost 的 SageMaker AI 實作支援訓練和推論的 CSV 和 libsvm 格式:
-
針對 Training ContentType,有效輸入為 text/libsvm (預設值) 或 text/csv。
-
針對 Inference ContentType,有效輸入為 text/libsvm 或 text/csv (預設值)。
注意
對於 CSV 訓練,演算法假設目標變數在第一個欄,且 CSV 沒有標題記錄。對於 CSV 推論,演算法假設 CSV 輸入沒有標籤欄。
針對 libsvm 訓練,演算法假設標籤是在第一個欄中。後續的欄包含特徵的零底索引值對。因此每個資料列的格式皆為:<label> <index0>:<value0> <index1>:<value1> ... libsvm 的推論請求可能有、也可能沒有此 libsvm 格式的標籤。
這與其他 SageMaker AI 演算法不同,其使用 protobuf 訓練輸入格式,以維持與標準 XGBoost 資料格式的更一致性。
對於 CSV 訓練輸入模式,可供演算法使用的總記憶體 (在 InstanceType
中可用的執行個體計數 *) 需可保留訓練資料集。libsvm 訓練輸入模式並非必要,但建議使用。
SageMaker AI XGBoost 使用 Python pickle 模組序列化/還原序列化模型,可用於儲存/載入模型。
在開放原始碼 XGBoost 中使用使用 SageMaker AI XGBoost 訓練的模型
-
使用以下 Python 程式碼:
import pickle as pkl import tarfile import xgboost t = tarfile.open('model.tar.gz', 'r:gz') t.extractall() model = pkl.load(open(
model_file_path
, 'rb')) # prediction with test data pred = model.predict(dtest
)
若要區隔標籤資料點的重要性,請使用執行個體權重支援
-
SageMaker AI XGBoost 可讓客戶透過為每個執行個體指派權重值來區分已標記資料點的重要性。針對 text/libsvm 輸入,客戶可以將執行個體連接到標籤後面,以指派權重值給資料。例如:
label:weight idx_0:val_0 idx_1:val_1...
。針對 text/csv 輸入,客戶需要在參數中開啟csv_weights
標記,將欄中的權重值連接在標籤後面。例如:label,weight,val_0,val_1,...
)。
適用於 XGBoost 0.72 版的 EC2 執行個體建議
SageMaker AI XGBoost 目前僅使用 CPUs 進行訓練。這是一個記憶體限制型 (相對於運算限制型) 的演算法。因此,一般用途的運算執行個體 (如 M4) 相較於運算最佳化執行個體 (如 C4),是較好的選擇。此外,我們建議您在所選執行個體中需有足夠的總記憶體才可保留訓練資料。雖然支援使用磁碟空間來處理與主記憶體不符的資料 (libsvm 輸入模式可使用核心外功能),將快取檔案寫入磁碟機會讓演算法處理時間變慢。
XGBoost 0.72 版範例筆記本
如需示範如何使用最新版 SageMaker AI XGBoost 做為內建演算法來訓練和託管迴歸模型的範例筆記本,請參閱使用 Amazon SageMaker AI XGBoost 演算法進行迴歸
XGBoost 0.72 版超參數
下表包含 XGBoost 演算法的超參數。這些是由使用者設定的參數,用來協助從資料預估模型參數。首先列出的是必須設定的超參數,依字母順序排列。接著列出的是選用的超參數,也是依字母順序排列。SageMaker AI XGBoost 演算法是開放原始碼 XGBoost 套件的實作。目前SageMaker AI 支援 0.72 版。如需此版 XGBoost 之超參數組態的詳細資訊,請參閱 XGBoost 參數
參數名稱 | 描述 |
---|---|
num_class |
類別數。 若 有效值:整數 |
num_round |
執行訓練的捨入數。 必要 有效值:整數 |
alpha |
權重的 L1 正規化詞彙。增加此值可讓模型更為保守。 選用 有效值:浮點數 預設值:0 |
base_score |
所有執行個體、全域偏差的初始預測分數。 選用 有效值:浮點數 預設值:0.5 |
booster |
要使用哪些提升工具。 選用 有效值:字串。 預設值: |
colsample_bylevel |
每個層級中的每個分割之欄次取樣率。 選用 有效值:浮點數。範圍:[0,1]。 預設值:1 |
colsample_bytree |
建構每棵樹時的欄次取樣率。 選用 有效值:浮點數。範圍:[0,1]。 預設值:1 |
csv_weights |
啟用此標記時,XGBoost 會採用訓練資料的第二個欄 (標籤後面的欄) 做為執行個體權重,區隔 csv 輸入的執行個體重要性。 選用 有效值:0 或 1 預設值:0 |
early_stopping_rounds |
模型會一直訓練到驗證分數停止上升為止。驗證錯誤需至少以每 選用 有效值:整數 預設值:- |
eta |
用於更新以避免過度擬合的步驟大小收縮。在每個提升步驟後,您可以直接取得新功能的權重。 選用 有效值:浮點數。範圍:[0,1]。 預設值:0.3 |
eval_metric |
驗證資料的評估指標。預設指標是根據目標指派:
如需有效輸入清單,請參閱 XGBoost 參數 選用 有效值:字串 預設值:根據目標預設。 |
gamma |
進一步在樹上的葉片節點分區所需的最低遺失縮減量。演算法越大就越保守。 選用 有效值:浮點數。範圍:[0,∞)。 預設值:0 |
grow_policy |
控制新增節點到樹的方式。目前只有 選用 有效值:字串。 預設值: |
lambda |
權重的 L2 正規化詞彙。增加此值可讓模型更為保守。 選用 有效值:浮點數 預設值:1 |
lambda_bias |
偏差的 L2 正規化詞彙。 選用 有效值:浮點數。範圍:[0.0, 1.0]。 預設值:0 |
max_bin |
最大數量的分散式資料匣,以儲存持續功能。僅於 選用 有效值:整數 預設值:256 |
max_delta_step |
每個樹的權重估值允許使用最高差量步驟。使用正整數時,有助於讓更新更為保守。偏好選項是在邏輯回歸中使用。設定為 1-10,以協助控制更新。 選用 有效值:整數。範圍:[0,∞)。 預設值:0 |
max_depth |
最大樹深度。增加此值可讓模型更為複雜也更有可能過度擬合。0 表示無限制。當 選用 有效值:整數。範圍:[0,∞) 預設值:6 |
max_leaves |
要新增的最大節點數量。只有 選用 有效值:整數 預設值:0 |
min_child_weight |
子系中需要執行個體權重的最低總和 (hessian)。如果葉片節點中的樹狀分區步驟的執行個體權重總和少於 選用 有效值:浮點數。範圍:[0,∞)。 預設值:1 |
normalize_type |
標準化演算法類型。 選用 有效值:tree 或 forest。 預設值:tree |
nthread |
用於執行 xgboost 的平行執行緒數量。 選用 有效值:整數 預設值:最大執行緒數量。 |
objective |
指定學習任務和對應的學習目標。範例: 選用 有效值:字串 預設值: |
one_drop |
當啟用此旗標時,至少有一棵樹一律在退出時刪除。 選用 有效值:0 或 1 預設值:0 |
process_type |
要執行的提升程序類型。 選用 有效值:字串。 預設值: |
rate_drop |
退出率,指定在退出時刪除一小部分的舊樹。 選用 有效值:浮點數。範圍:[0.0, 1.0]。 預設值:0.0 |
refresh_leaf |
這是 '重新整理' 更新工具外掛程式的參數。當設定為 選用 有效值:0/1 預設值:1 |
sample_type |
取樣演算法類型。 選用 有效值: 預設值: |
scale_pos_weight |
控制正負加權的平衡。對於不平衡的分類非常實用。要考慮的典型值: 選用 有效值:浮點數 預設值:1 |
seed |
隨機數量種子。 選用 有效值:整數 預設值:0 |
silent |
0 表示列印執行中的訊息、1 表示靜音模式。 有效值:0 或 1 選用 預設值:0 |
sketch_eps |
僅適用於預估值貪婪演算法。這會轉譯為 O(1/ 選用 有效值:浮點數、範圍:[0, 1]。 預設值:0.03 |
skip_drop |
反覆提升時略過退出程序的可能性。 選用 有效值:浮點數。範圍:[0.0, 1.0]。 預設值:0.0 |
subsample |
訓練執行個體的次取樣率。將其設定為 0.5 表示 XGBoost 會隨機收集一半的資料執行個體來培養樹。這可避免過度擬合。 選用 有效值:浮點數。範圍:[0,1]。 預設值:1 |
tree_method |
XGBoost 中使用的樹建構演算法。 選用 有效值: 預設值: |
tweedie_variance_power |
控制 Tweedie 分發的方差之參數。 選用 有效值:浮點數。範圍:(1, 2)。 預設值:1.5 |
updater |
以逗號分隔的字串,用於定義要執行的樹更新工具序列。這提供模組化方式來建構和修改樹。 如需有效輸入的完整清單,請參閱 XGBoost 參數 選用 有效值:逗號分隔字串。 預設值: |
調校 XGBoost 0.72 版模型
自動模型調校,又稱為超參數調校,會透過在您的訓練和驗證資料集上,執行許多測試超參數範圍的任務,來尋找最佳版本的模型。您可以選擇三種類型的超參數:
-
學習
objective
功能,用於在模型訓練期間最佳化 -
eval_metric
,用於在驗證期間評估模型效能 -
一組超參數和一系列值,各別用於自動調校模型
您可以從演算法計算的評估指標集中,選擇評估指標。自動模型調校會搜尋所選擇的超參數,以找出產生之模型可最佳化評估指標的值組合。
如需模型調校的詳細資訊,請參閱使用 SageMaker AI 自動調校模型。
XGBoost 0.72 版演算法所計算的指標
以 0.72 版為基礎的 XGBoost 演算法會運算以下九個指標,並使用這些指標進行模型驗證。調校模型時,請選擇這些指標的其中之一來評估模型。如需有效 eval_metric
值的完整清單,請參閱 XGBoost 學習任務參數
指標名稱 | 描述 | 最佳化方向 |
---|---|---|
validation:auc |
曲線下的區域。 |
最大化 |
validation:error |
二元分類錯誤率,計算方式為 #(錯誤案例)/#(所有案例)。 |
最小化 |
validation:logloss |
不記錄的機率。 |
最小化 |
validation:mae |
絕對平均值錯誤。 |
最小化 |
validation:map |
平均值的平均精度。 |
最大化 |
validation:merror |
多類別分類錯誤率,計算方式為 #(錯誤案例)/#(所有案例)。 |
最小化 |
validation:mlogloss |
多類別分類的不記錄機率。 |
最小化 |
validation:ndcg |
正規化的折扣累計收益。 |
最大化 |
validation:rmse |
均方根錯誤。 |
最小化 |
可調校的 XGBoost 0.72 版超參數
使用下列超參數調校 XGBoost 模型。對 XGBoost 評估指標最佳化影響最大的超參數為:alpha
、min_child_weight
、subsample
、eta
和 num_round
。
參數名稱 | 參數類型 | 建議範圍 |
---|---|---|
alpha |
ContinuousParameterRanges |
MinValue:0、MaxValue:1000 |
colsample_bylevel |
ContinuousParameterRanges |
MinValue:0.1、MaxValue:1 |
colsample_bytree |
ContinuousParameterRanges |
MinValue:0.5、MaxValue:1 |
eta |
ContinuousParameterRanges |
MinValue:0.1、MaxValue:0.5 |
gamma |
ContinuousParameterRanges |
MinValue:0、MaxValue:5 |
lambda |
ContinuousParameterRanges |
MinValue:0、MaxValue:1000 |
max_delta_step |
IntegerParameterRanges |
[0, 10] |
max_depth |
IntegerParameterRanges |
[0, 10] |
min_child_weight |
ContinuousParameterRanges |
MinValue:0、MaxValue:120 |
num_round |
IntegerParameterRanges |
[1, 4000] |
subsample |
ContinuousParameterRanges |
MinValue:0.5、MaxValue:1 |