XGBoosting Home | About | Contact | Examples

XGBoost Configure "error" Eval Metric

When training an XGBoost model for binary or multi-class classification tasks, the classification error rate is a straightforward and intuitive evaluation metric.

The “error” metric in XGBoost measures the proportion of incorrectly classified instances.

By setting eval_metric='error', you can monitor your model’s performance during training and enable early stopping to prevent overfitting. This metric is particularly useful when you want to minimize the overall misclassification rate.

Here’s an example of how to use the “error” metric with XGBoost and scikit-learn:

from sklearn.datasets import make_classification
from sklearn.model_selection import train_test_split
from xgboost import XGBClassifier
import matplotlib.pyplot as plt

# Generate a synthetic binary classification dataset
X, y = make_classification(n_samples=1000, n_classes=2, n_features=10, random_state=42)
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)

# Create an XGBClassifier with "error" as the evaluation metric
model = XGBClassifier(n_estimators=100, eval_metric='error', early_stopping_rounds=10, random_state=42)

# Train the model with early stopping
model.fit(X_train, y_train, eval_set=[(X_test, y_test)])

# Retrieve the error rate values from the training process
results = model.evals_result()
epochs = len(results['validation_0']['error'])
x_axis = range(0, epochs)

# Plot the error rate values
plt.figure()
plt.plot(x_axis, results['validation_0']['error'], label='Test')
plt.legend()
plt.xlabel('Number of Boosting Rounds')
plt.ylabel('Error Rate')
plt.title('XGBoost Classification Error Performance')
plt.show()

In this example, we generate a synthetic binary classification dataset using scikit-learn’s make_classification function. We then split the data into training and testing sets.

We create an instance of XGBClassifier and set eval_metric='error' to specify the classification error rate as the evaluation metric. We also set early_stopping_rounds=10 to enable early stopping if the error rate doesn’t improve for 10 consecutive rounds.

During training, we pass the testing set as the eval_set to monitor the model’s performance on unseen data. After training, we retrieve the error rate values using the evals_result() method.

Finally, we plot the error rate values against the number of boosting rounds to visualize the model’s performance during training. This plot helps us assess whether the model is overfitting or underfitting and determines the optimal number of boosting rounds.

By using the “error” metric, we can easily monitor the model’s classification performance, prevent overfitting through early stopping, and select the best model based on the lowest error rate.



See Also