-
XGBoost pitfalls: the mistakes that quietly wreck a boosted model
A boosted-tree model can look healthy while being wrong in ways ordinary metrics do not expose. It may overfit after the useful trees were built, leak the test set into tuning, scramble columns at inf
-
XGBoost in production: GPU training, out-of-core data, model persistence, and fast inference
Productionizing gradient-boosted trees is not one decision. It is a chain of decisions about compute, memory, serialization, and request handling:
-
Learning to rank with XGBoost: pairwise and listwise objectives for search and recommendations
Ranking systems do not predict items in isolation. They choose an order inside a query, session, user slate, or recommendation list.
-
Rolling windows and lag features: time series into supervised learning without leaking the future
A time series becomes a supervised-learning table when each row represents a prediction decision:
-
XGBoost vs LightGBM vs CatBoost: an honest benchmark on the same data and the same budget
Under the same 20-second CPU tuning budget, CatBoost produced the best test AUC with its first configuration , despite taking roughly 11 times longer to fit than the winning XGBoost trial. XGBoost del
-
Categorical features and missing values in XGBoost: the native path vs one-hot
XGBoost can learn from missing numeric values and categorical columns without forcing every project through an impute-then-one-hot pipeline. The real decision is not whether native support exists; it
-
Tuning XGBoost without fooling yourself: early stopping, learning rate, and the parameters that matter
XGBoost tuning becomes dangerous when optimization and evaluation blur together. A workflow can try dozens of configurations, stop each run at its best validation round, select the lowest validation e
-
Gradient boosting from the ground up: why XGBoost and LightGBM still rule tabular data in 2026
Tabular ML has an unfashionable truth: the best model is often not the newest architecture.
-
Polars vs pandas: the DataFrame rewrite that changed the default
For years, the default choice for tabular Python was automatic: import pandas and start manipulating rows. That default has changed.
-
Dynamic batching: the single biggest throughput lever in model serving
A model server processing one request at a time pays fixed costs for every execution: