XGBoosting Home | About | Contact | Examples

Configure XGBoost "num_parallel_tree" Parameter

The num_parallel_tree parameter in XGBoost controls the number of parallel trees constructed during each boosting iteration. Adjusting num_parallel_tree can impact the model’s training speed and performance.

from sklearn.datasets import make_regression
from sklearn.model_selection import train_test_split
from xgboost import XGBRegressor

# Generate synthetic data
X, y = make_regression(n_samples=1000, n_features=20, noise=0.1, random_state=42)

# Split the dataset into training and test sets
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)

# Initialize the XGBoost regressor with a num_parallel_tree value
model = XGBRegressor(num_parallel_tree=10, eval_metric='rmse')

# Fit the model
model.fit(X_train, y_train)

# Make predictions
predictions = model.predict(X_test)

Understanding the “num_parallel_tree” Parameter

The num_parallel_tree parameter determines the number of parallel trees constructed during each boosting iteration in XGBoost.

By default, num_parallel_tree is set to 1, which means only one tree is built at a time.

Increasing this value allows XGBoost to build multiple trees for the boosting iteration, increasing the model complexity, but potentially improving model capability. For example, a num_parallel_tree value of 10 will fit 10 parallel trees for each boosting iteration.

Setting a num_parallel_tree greater than one, allows the model to act like a boosted random forest model, e.g. a random forest model at each boosted level.

However, there are trade-offs to consider when adjusting num_parallel_tree. While increasing its value can lead to a better fit, it will also require more memory and may overfit the training data.

Furthermore, setting num_parallel_tree too high might not provide additional benefits and could even slow down the training process.

Configuring “num_parallel_tree” for Different Use Cases

When deciding how to adjust num_parallel_tree, consider the size and characteristics of your dataset. For large datasets, increasing num_parallel_tree can improve performance. On the other hand, for smaller datasets, the default value of 1 is often sufficient.

To tune num_parallel_tree, start with the default value and gradually increase it while monitoring training speed and model performance. Use cross-validation to find the optimal value that balances speed and performance. Keep in mind that num_parallel_tree works in conjunction with other parameters like num_boost_round and early_stopping_rounds. Adjusting these parameters together can help find the right balance of speed and performance for your specific use case.

Practical Tips

If model performance is a bottleneck in your XGBoost workflow, consider increasing num_parallel_tree. However, be sure to monitor resource usage (memory and CPU) when doing so, as higher values may require more computational resources.

Increasing num_parallel_tree is most beneficial for large datasets although may lead to overly complex models. Be aware that setting num_parallel_tree too high can lead to diminishing returns in performance improvement, so it’s important to find the right balance for your specific use case.

See Also