Skip to content
Tim Walter edited this page Jun 4, 2025 · 8 revisions

Welcome to the omar wiki! This space is dedicated to helping you understand, use, and contribute to omar, a Python package for discovering localised, linear structure in complex, high-dimensional datasets. It implements a modernized version of the Multivariate Adaptive Regression Splines (MARS) algorithm with improved numerical efficiency, based on modern rank-one update strategies and optional Fortran acceleration.

What is omar?

omar (Open Multivariate Adaptive Regression) is a MARS [Friedman, 1991; 1993] implementation. It approximates high-dimensional functions by an additive model of low-dimensional functions. It does so by exploiting local lower dimensional manifolds by an additive expansion in a subset of the complete tensor product of the univariate truncated power spline basis. To sample the resulting, exponentially growing function space, it employs a heuristic grow-prune strategy.

It is designed to automatically construct accurate, interpretable, and efficient piecewise-linear models of functions with many predictor and one response variable.

omar is ideal when:

  • You want to find the best possible linear approximation in high-dimensional, noisy data.
  • You prefer models with interpretable basis functions.
  • You need a fast, scalable tool for MARS modeling.

The model has the form:

$$ \hat{f}(x) = \sum_{n} a_n B_n(x) $$

where each $B_n(x) = \prod \text{max}(\pm(x-t),0)$ is a piecewise linear basis function at root $t$. A basis function therefore looks like this

Whereas the full model might fit data like

For more insights into the algorithm check out the original paper or the background page.

Computational Backends

To enable practical use on modern hardware, omar includes two compute backends:

  • Pure Python for accessibility and clarity, speedup with Numba for JIT-compiled performance on CPU.
  • Fortran via f2py with native BLAS/LAPACK routines and OpenMP parallelism.

Wiki Structure

This wiki is organized into the following pages:

How to install omar, set up the environment, and run your first model.

Explanation of the grow-prune strategy.

Detailed reference for the OMAR class and its methods.

Backend comparisons and runtime scaling data.

How to contribute to the project, report issues, or submit pull requests.


Get Started: Begin with the Getting Started page to install and run your first omar model.


Citations

Clone this wiki locally