EvoTrees.jl is a production-grade gradient-boosted decision tree (GBDT) library written entirely in Julia. It implements a histogram-based tree-growing algorithm with support for multiple loss functions (MSE, LogLoss, Poisson, Gamma, Tweedie, MAE, Quantile, MultiQuantile, credibility losses, Gaussian/Legistic MLE, and LambdaRank for ranking). The library provides both CPU (multi-threaded) and GPU (CUDA, ROCm, Metal via KernelAbstractions) backends, enabling efficient training and inference on diverse hardware. It is designed as a composable Julia package with a clean module structure, MLJ integration for seamless use within the Julia machine learning ecosystem, and serialization/deserialization via BSON for model persistence. At its core, the system implements a loss-type hierarchy (`src/loss.jl`) where each loss is an abstract type with inline scalar gradient/hessian functions that are shared across CPU and GPU code paths. The training algorithm binarizes features into 8-bit histograms, computes gradient statistics per bin, and finds optimal splits via gain scanning. Multi-target objectives (e.g., location/scale MLE) and monotonic constraints are supported. The library also includes SHAP value computation (Linear TreeShap), feature importance, tree plotting (Makie recipe), and a comprehensive callback system for evaluation and early stopping during training. While primarily a library for embedding in larger ML workflows, EvoTrees.jl also comes with an extensive collection of benchmarks, tutorials, and research experiments (credibility loss, multi-quantile, ranking). It is not a data-pipeline or analytics project but a well-architected software library that demonstrates advanced patterns in Julia numerics, GPU programming, and loss function abstraction. The repository is actively maintained, with regular commits, CI/CD, and comprehensive documentation built with Documenter.jl and Vitepress.
SHAP (SHapley Additive exPlanations) is a mature Python library for interpreting machine learning model predictions using Shapley values from cooperative game theory. It provides a unified API across model types: tree ensembles (XGBoost, LightGBM, CatBoost, sklearn, PySpark), deep neural networks (TensorFlow, PyTorch), linear models, and arbitrary callables. The architecture is modular: explainers (Tree, Deep, Kernel, Partition, Gradient, Linear, etc.) consume models and maskers (tabular, image, text) to produce Explanation objects, which are visualized via matplotlib or interactive JavaScript force plots. The library includes benchmarks for evaluating explanation quality, extensive test suites with serialization baselines, and C++/CUDA extensions for performance. Although primarily a library (application), it has a strong research character: it originated from academic papers, includes notebooks reproducing experiments, and contains a user study on human interpretability. The codebase is well-engineered with reusable patterns (serialization, OpChain for lazy operations, MaskedModel abstraction), but carries some technical drift from legacy API aliases, dependency version sprawl, and a large minified JavaScript bundle in the repository.