Spaces:
Running
Running
File size: 6,343 Bytes
cb93327 c95fa90 cb93327 c95fa90 cb93327 c95fa90 cb93327 c95fa90 cb93327 c95fa90 cb93327 c95fa90 cb93327 c95fa90 cb93327 c95fa90 cb93327 c95fa90 cb93327 c95fa90 cb93327 c95fa90 cb93327 c95fa90 cb93327 c95fa90 cb93327 c95fa90 cb93327 c95fa90 cb93327 c95fa90 cb93327 c95fa90 cb93327 c95fa90 cb93327 c95fa90 cb93327 c95fa90 cb93327 c95fa90 cb93327 c95fa90 cb93327 c95fa90 cb93327 c95fa90 cb93327 c95fa90 cb93327 c95fa90 cb93327 c95fa90 cb93327 c95fa90 cb93327 c95fa90 cb93327 c95fa90 cb93327 c95fa90 cb93327 c95fa90 cb93327 c95fa90 cb93327 c95fa90 cb93327 c95fa90 cb93327 c95fa90 cb93327 | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 | <!-- Source: https://xgboost.readthedocs.io/en/stable/tutorials/model.html, https://xgboost.readthedocs.io/en/stable/parameter.html — fetched 2026-07-01 -->
# XGBoost Reference Guide
## What XGBoost Is
XGBoost (Extreme Gradient Boosting) is a scalable, regularized gradient boosted decision tree library. It is designed for both performance (systems optimization) and accuracy (ML principles). It consistently ranks among the top performers on structured/tabular data.
---
## How the Algorithm Works
### Model Structure
Prediction is a sum over K trees:
`ŷᵢ = Σₖ fₖ(xᵢ)` where each fₖ is a CART (Classification and Regression Tree).
Trees "try to complement each other" — the ensemble is stronger than any individual tree.
### Additive Training
Trees are learned one at a time (sequentially):
`ŷᵢ⁽ᵗ⁾ = ŷᵢ⁽ᵗ⁻¹⁾ + fₜ(xᵢ)`
At each step, a new tree fₜ is added that minimizes the objective given all previously learned trees.
### Regularized Objective
`obj(θ) = L(θ) + Ω(θ)`
- **L(θ):** Training loss (any differentiable loss function)
- **Ω(θ):** Tree complexity penalty: `γT + ½λ Σⱼ wⱼ²`
- T = number of leaves, γ = leaf count penalty, λ = L2 weight regularization
This explicit regularization controls bias-variance tradeoff more formally than heuristic approaches (e.g., impurity-based splitting alone).
### Tree Learning via Taylor Expansion
Objective at step t is approximated using second-order Taylor expansion of the loss:
`obj⁽ᵗ⁾ ≈ Σᵢ [gᵢfₜ(xᵢ) + ½hᵢfₜ²(xᵢ)] + Ω(fₜ)`
- gᵢ = first derivative (gradient) of loss w.r.t. ŷᵢ⁽ᵗ⁻¹⁾
- hᵢ = second derivative (hessian)
This formulation allows optimizing **any differentiable loss** with the same tree solver.
### Structure Score and Split Gain
For a given tree structure, optimal leaf weights and minimum objective are:
`obj* = −½ Σⱼ Gⱼ²/(Hⱼ+λ) + γT`
**Split gain** (used to evaluate candidate splits):
`Gain = ½ [G_L²/(H_L+λ) + G_R²/(H_R+λ) − (G_L+G_R)²/(H_L+H_R+λ)] − γ`
If Gain < γ, the split is rejected — this is the principled basis for pruning.
### Key Design Principles
- Loss function flexibility: any differentiable loss via gradient/hessian
- Formal regularization (γ, λ, α) prevents overfitting more robustly than heuristics
- Principled optimization: tree structure and leaf weights are jointly optimized
- Second-order information (Hessian) avoids line search, enabling faster convergence
### XGBoost vs Random Forests
Both use tree ensembles. Key difference: Random Forests train trees independently (parallel); XGBoost trains sequentially, each tree correcting previous errors.
---
## Key Parameters
### General Parameters
| Parameter | Default | Description |
|-----------|---------|-------------|
| `booster` | `gbtree` | Booster type: `gbtree`, `gblinear`, `dart` |
| `device` | `cpu` | Compute device: `cpu`, `cuda`, `cuda:<n>` |
| `nthread` | max available | Parallel threads for training |
| `verbosity` | 1 | 0=silent, 1=warning, 2=info, 3=debug |
| `validate_parameters` | False | Enable input parameter validation |
### Tree Booster Parameters
| Parameter | Default | Description |
|-----------|---------|-------------|
| `eta` / `learning_rate` | 0.3 | Shrinkage step size to prevent overfitting; typical range 0.01–0.3 |
| `max_depth` | 6 | Maximum tree depth; typical range 3–10 |
| `gamma` / `min_split_loss` | 0 | Minimum loss reduction required for a split (higher = more conservative) |
| `min_child_weight` | 1 | Minimum sum of instance hessian in a child node (controls overfitting) |
| `subsample` | 1 | Fraction of training rows sampled per tree; 0.5–0.9 reduces overfitting |
| `colsample_bytree` | 1 | Fraction of columns sampled per tree |
| `colsample_bylevel` | 1 | Fraction of columns sampled per tree level |
| `colsample_bynode` | 1 | Fraction of columns sampled per split node |
| `lambda` / `reg_lambda` | 1 | L2 regularization on leaf weights |
| `alpha` / `reg_alpha` | 0 | L1 regularization on leaf weights (produces sparsity) |
| `max_delta_step` | 0 | Maximum weight update per leaf; useful for imbalanced classification |
| `tree_method` | `auto` | Algorithm: `exact`, `approx`, `hist` (hist recommended for large data) |
| `grow_policy` | `depthwise` | `depthwise` (BFS) or `lossguide` (best-first, like LightGBM) |
| `max_leaves` | 0 | Max leaves to add per tree (lossguide only; 0 = unlimited) |
| `max_bin` | 256 | Max discrete bins for continuous features (hist tree method) |
| `sampling_method` | `uniform` | `uniform` or `gradient_based` (GPU only) |
### Learning Task Parameters
| Parameter | Default | Description |
|-----------|---------|-------------|
| `objective` | `reg:squarederror` | Learning task; determines loss function |
| `eval_metric` | task-dependent | Evaluation metric(s): `rmse`, `mae`, `logloss`, `auc`, `error`, `ndcg`, etc. |
| `seed` | 0 | Random seed for reproducibility |
| `base_score` | auto | Global bias / initial prediction (auto-estimated from data) |
### Objective Options
**Regression:** `reg:squarederror`, `reg:squaredlogerror`, `reg:logistic`, `reg:pseudohubererror`, `reg:absoluteerror`, `reg:quantileerror`, `reg:gamma`, `reg:tweedie`
**Classification:** `binary:logistic` (outputs probability), `binary:logitraw` (outputs margin), `binary:hinge`, `multi:softmax` (outputs class), `multi:softprob` (outputs probability per class)
**Specialized:** `count:poisson`, `survival:cox`, `survival:aft`, `rank:ndcg`, `rank:map`, `rank:pairwise`
---
## Practical Guidance
**Starting point for tuning:**
- Set `n_estimators` high (500–1000) with early stopping
- `learning_rate`: 0.05–0.1
- `max_depth`: 4–6
- `subsample`: 0.8, `colsample_bytree`: 0.8
- `gamma`: 0.1–1.0 if overfitting
- `min_child_weight`: 3–10 for imbalanced data
**For large datasets:** Use `tree_method='hist'` — equivalent to LightGBM's histogram algorithm.
**Class imbalance:** Use `scale_pos_weight = neg_count / pos_count` with `binary:logistic`; or set `max_delta_step=1`.
**Missing values:** XGBoost handles NaN natively — learns optimal default direction per split during training.
**Regularization priority:** Start with `lambda` (L2), then add `alpha` (L1) only if sparsity is desired. `gamma` controls tree complexity directly.
|