dmlc / dmlc/xgboost

[Roadmap] Multiple outputs.

Open
#9,043 21 comments 13 reactions 0 assignees View on GitHub
type: roadmap
Dominant language
C++
Stars
28.8k
Forks
8.9k
Avg merge
1d 12h
Merged PRs (30d)
54

Description

# Updates

In v3.4.0, the `hist` tree method is considered feature complete for the vector leaf.

# Context

Since XGBoost 1.6, we have been working on having multi-output support for the tree model. In 2.0, we implemented the initial version of the vector-leaf-based multi-output model. This issue serves as a tracker for future development and related discussion. The original feature request is here: https://github.com/dmlc/xgboost/issues/2087 . The related features are for vector-leaf, not for general multi-output.

Feel free to share your suggestions or make related feature requests in the comments.

## Implementation Optimization
- [ ] Use f-order for the gradient. Currently, the gradient has one column for each target but is written in C-order. The transformation takes about one-fifth of the training time. (#9508)
- [x] Use f-order for the custom objective. (#9089)
- [x] Improve array type dispatching by moving the dispatch logic from per-element to per-array. This enables us to have a more efficient custom objective interface. (#9090)

## Algorithmic Optimization
We are still looking for potential algorithmic optimization for vector-leaf and here's the pool of candidates. We need to survey all available options. Feel free to share if you have ideas or paper recommendations.
- [x] [Sketch boost](https://openreview.net/forum?id=WSxarC8t-T). (#11798, #11922)
- [x] https://arxiv.org/abs/2201.06239 (#11798, #11922)
- [ ] Extra tree.

(#11798)

## GPU Implementation
- [x] Evaluation (#11781, #11883)
- [x] Histogram (#11781, #11855)
- [x] Prediction (#11752)
- [x] Prediction cache. (#11862)
- [x] Model (#11277)
- [x] Partition. (#11789)
- [x] Gradient sampling.

## Documentation
- [ ] Derive the approximated Hessian in the context of boosting trees.

## Multi-task
- [ ] Multi-task xgboost. This is not yet decided. I think it's wise to at least do some exploration before forging the rest of the implementation since we will have a very different interface if we need to consider multi-task. Related: https://github.com/dmlc/xgboost/issues/7693 .

## Features
- [x] Tree SHAP
- [x] Plotting (#10093)
- [x] Model text dump (JSON, txt, graphviz) (#10093, #11747)
- [x] Tree data frame. (#12293)
- [x] Categorical feature. (#12072, #12276, #12299, #12305)
- [x] Interaction constraints (#12294)
- [x] Monotonic constraints (#12341)
- [x] Subsample.
- [x] Column sampling.
- [ ] Approx tree method
- [ ] Exact tree method
- [ ] Loss weight
- [x] Feature importance (be careful with tree index) (#10700)
- [x] Intercept. (#11656)
- [x] dart (#12340)

## Learning to rank
We can have a ranking model to consider multiple criteria. This might require multi-task to be supported.

## Quantile regression
- [x] l1 https://github.com/dmlc/xgboost/pull/11917
- [x] quantile https://github.com/dmlc/xgboost/pull/11917

## Distributed
- [x] Dask (#12292)
- [ ] PySpark
- [ ] Spark
- [ ] Flink?
- [ ] Federated (https://github.com/dmlc/xgboost/pull/9171)

# Binding
- [ ] R (https://github.com/dmlc/xgboost/pull/9526)
- [ ] Scala
- [x] Python
- [ ] Java
- [ ] C

# HPO
- [ ] Check compatibility with major HPO frameworks.

# Other extensions
- [ ] Sparse label. (multi-label classification optimization)
- [ ] Missing label.
- [ ] Early stopping for each target?

## Applications
- https://arxiv.org/abs/2210.06831
- [ ] FIL

## Benchmarks
- [ ] Collection of datasets for future comparison.

Contributor guide

No contributing guide indexed for this repository

Assessment

This issue has not been assessed yet.

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.