XGBoost 是 處理結構化數據常用的機器學習框架之一,其中的 n_estimator 參數決定着模型的複雜度和訓練速度,這篇文章將從多個方面詳細闡述 n_estimator 參數的調節方法和效果。
一、參數簡介
XGBoost 中的 n_estimator 參數是指決策樹的數量,也就是集成方法中弱分類器的個數。增加 n_estimator 往往能夠提升模型的精度,但是也會增加模型的計算時間和內存佔用。
二、調節方法
1. 網格搜索
網格搜索是一種通過排列組合參數的方式來尋找最優超參數的方法,可以通過 Scikit-learn 中的 GridSearchCV 類進行實現:
import xgboost as xgb
from sklearn.model_selection import GridSearchCV
parameters = {'n_estimators': [100, 200, 500]}
xgb_model = xgb.XGBClassifier()
grid_search = GridSearchCV(estimator=xgb_model, param_grid=parameters, scoring='accuracy', cv=5)
grid_search.fit(X_train, y_train)
best_parameters = grid_search.best_params_
print(best_parameters)
2. 交叉驗證
交叉驗證是一種在模型選擇和超參數調節過程中常用的技術,可以有效地減小過擬合和提升模型的泛化能力。可以通過 XGBoost 中的 cv 函數進行實現:
import xgboost as xgb
params = {'n_estimators': 500, 'max_depth': 6, 'learning_rate': 0.1, 'subsample': 0.8, 'min_child_weight': 1}
cv_results = xgb.cv(dtrain=dtrain, params=params, nfold=5, num_boost_round=100, metrics="rmse", early_stopping_rounds=10, stratified=False)
cv_results.head()
3. 單個參數變化
使用單個變量來逐一嘗試不同的 n_estimator 值,可以得到一個局部最優解,但是這種方法不一定能夠找到全局最優解。下面是一個簡單的演示:
import xgboost as xgb
params = {'max_depth': 6, 'learning_rate': 0.1, 'subsample': 0.8, 'min_child_weight': 1}
eval_set = [(X_test, y_test)]
n_estimators = [50, 100, 200, 300]
for n_est in n_estimators:
xgb_model = xgb.XGBClassifier(n_estimators=n_est, **params)
xgb_model.fit(X_train, y_train, eval_metric=["error", "logloss"], eval_set=eval_set, early_stopping_rounds=10, verbose=True)
三、效果評估
在了解 n_estimator 的調節方法後,需要進行效果評估。下面是一個簡單的演示,使用分類準確率和 F1-score 評價模型效果:
import xgboost as xgb
from sklearn.metrics import accuracy_score, f1_score
params = {'n_estimators': 500, 'max_depth': 6, 'learning_rate': 0.1, 'subsample': 0.8, 'min_child_weight': 1}
xgb_model = xgb.XGBClassifier(**params)
xgb_model.fit(X_train, y_train)
y_pred = xgb_model.predict(X_test)
accuracy = accuracy_score(y_test, y_pred)
f1score = f1_score(y_test, y_pred, average='macro')
print("Accuracy:", accuracy)
print("F1-score:", f1score)
四、總結
通過對 XGBoost 中 n_estimator 參數的詳細闡述,我們可以發現選擇最優的 n_estimator 參數對於提升模型表現是非常有必要的。使用網格搜索、交叉驗證和單個參數變化這三種方式可逐一驗證不同的 n_estimator 的值,最後可以通過評價指標來選擇最優值。
原創文章,作者:OXHOP,如若轉載,請註明出處:https://www.506064.com/zh-hk/n/374917.html