XGBoosting Home | About | Contact | Examples

XGBoost for Multi-Label Classification with "multi_strategy"

XGBoost’s native API provides powerful capabilities for handling multi-label classification tasks.

Multi-label classification involves predicting multiple non-exclusive labels for each instance, which can be challenging due to label dependencies and class imbalance.

XGBoost’s tree_method="hist" and multi_strategy="multi_output_tree" parameters enable efficient and effective multi-label classification.

# XGBoosting.com
# Fit an XGBoost Model for Multi-Label Classification using scikit-learn API
from sklearn.datasets import make_multilabel_classification
from sklearn.model_selection import train_test_split
from xgboost import XGBClassifier

# Generate a synthetic multi-label dataset
X, y = make_multilabel_classification(n_samples=1000, n_classes=5, n_labels=2, allow_unlabeled=True, random_state=42)

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

# Initialize XGBClassifier
model = XGBClassifier(
    n_estimators=10,
    objective='binary:logistic',
    tree_method='hist',
    multi_strategy='multi_output_tree',
    random_state=42
)

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

# Generate predictions
predictions = model.predict(X_test)

print(predictions[:5])

By leveraging XGBoost’s scikit-learn API and specifying the tree_method="hist" and multi_strategy="multi_output_tree" parameters, you can efficiently train a model for multi-label classification tasks.

The tree_method="hist" parameter enables the use of the fast histogram-based algorithm, while multi_strategy="multi_output_tree" allows the model to learn label dependencies by training a single tree for all labels.



See Also