========= Changelog ========= All notable changes to PyMARS will be documented in this file. The format is based on `Keep a Changelog `_, and this project adheres to `Semantic Versioning `_. [0.1.0] - 2025-01-15 ==================== **Initial Release** Added ----- * Complete MARS implementation following Friedman (1991) * Forward pass with greedy basis expansion * Backward pass with GCV-based pruning * Basis functions with hinge products * GCV model selection with automatic penalty * Cubic spline extension (smooth=True parameter) * ANOVA decomposition by interaction order * Feature importance calculation * Knot selection with minspan/endspan constraints * Standardization support * Interaction support (max_degree parameter) * Comprehensive test suite (55+ tests) * Full documentation with Sphinx/RTD * Interactive examples and tutorials * Visualization tools for model interpretation * Cross-compatible with scikit-learn API Core Modules ~~~~~~~~~~~~ * ``pymars.mars.MARS`` - Main model class * ``pymars.basis.HingeFunction`` - Hinge basis * ``pymars.basis.BasisFunction`` - Composite basis * ``pymars.utils.calculate_minspan()`` - Knot spacing * ``pymars.utils.calculate_endspan()`` - Endpoint spacing * ``pymars.utils.solve_least_squares()`` - Stable solver * ``pymars.gcv.GCVCalculator`` - Model selection * ``pymars.model.ForwardPass`` - Basis expansion * ``pymars.model.BackwardPass`` - Pruning * ``pymars.cubic.CubicHingeFunction`` - Cubic basis * ``pymars.cubic.convert_to_cubic()`` - Conversion * ``pymars.interactions.InteractionAnalysis`` - ANOVA * ``pymars.plots.*`` - Visualization functions Features ~~~~~~~~ * Automatic variable selection * Interaction detection * Multivariate regression * Model interpretability * Generalized cross-validation * Knot optimization * Cubic continuity * ANOVA decomposition * Feature importance * Cross-validation compatible Documentation ~~~~~~~~~~~~~~ * Installation guide * User guide with examples * Complete tutorial (13 steps) * Mathematical theory (Friedman 1991) * Algorithm details (3 core algorithms) * API reference * Model selection guide (GCV) * Cubic splines documentation * Interaction analysis guide * Plotting guide * Advanced topics (numerical methods, optimization) * Developer guide * References and citations Testing ~~~~~~~ * Unit tests for all modules * Comprehensive integration tests * Friedman 1991 test functions * Cubic implementation verification * Cross-validation tests * Edge case testing * Numerical stability tests Known Limitations ~~~~~~~~~~~~~~~~~ * Single-output regression only (no multi-output) * Forward pass greedy (not globally optimal) * Cubic implementation is post-hoc (not during fitting) * No built-in parallelization * Assumes continuous features (no categorical support) * No missing value handling Future Enhancements (Planned) ============================= [0.2.0] (Planned) ----------------- * Categorical variable support * Missing value handling * Weighted observations * Multiple penalty parameters per basis * Sparse basis representations * Incremental learning * GPU acceleration for large datasets [0.3.0] (Planned) ----------------- * Multi-output regression * Classification via logistic MARS * Regularization (L1/L2) options * Adaptive penalty selection * Built-in cross-validation grid search * Parallel knot search [1.0.0] (Planned) ----------------- * Production-ready API stability * Comprehensive benchmarking suite * Performance optimizations * Extended documentation * Community examples and case studies Bug Fixes ========= [0.1.0] ------- * All 11 identified implementation bugs fixed from initial version * Numerical stability verified via QR/Cholesky/pseudoinverse fallback * GCV calculation validated against theoretical formula * Cubic implementation tested against Friedman paper examples * Minspan/Endspan formulas verified Contributors ============= **ES-SAFI ABDERRAHMAN** - Lead Developer, Implementation, Testing **LAMGHARI YASSINE** - Core Development, Model Verification **CHAIBOU SAIDOU ABDOUYE** - Testing, Documentation Acknowledgments =============== * Jerome H. Friedman for the original MARS algorithm (Friedman 1991) * Friedman & Silverman (1989) for foundational smoothing theory * scikit-learn community for ML standards * Sphinx/RTD for documentation infrastructure Citation ======== If you use PyMARS in academic work, please cite: **Original Algorithm:** .. code-block:: bibtex @article{friedman1991mars, title={Multivariate adaptive regression splines}, author={Friedman, Jerome H}, journal={The Annals of Statistics}, volume={19}, number={1}, pages={1--67}, year={1991}, publisher={JSTOR} } **This Implementation:** .. code-block:: bibtex @software{pymars2025, title={PyMARS: A Python Implementation of Multivariate Adaptive Regression Splines}, author={ES-SAFI, Abderrahman and LAMGHARI, Yassine and CHAIBOU, Saidou Abdouye}, year={2025}, url={https://github.com/abder111/pymars}, version={0.1.0} } License ======= PyMARS is released under the MIT License. See LICENSE file for details. --- For more information, see the `README `_ and `documentation `_.