astroautomata/SymbolicRegression.jl

Distributed High-Performance Symbolic Regression in Julia

What it solves

SymbolicRegression.jl allows users to discover analytic functional forms (symbolic expressions) that best fit a given dataset. Unlike standard machine learning models that act as "black boxes," this tool searches for human-readable mathematical equations that optimize a specific objective.

How it works

The library provides two primary interfaces:

  1. High-Level Interface: Uses SRRegressor to fit and predict data. It integrates with the MLJ ecosystem for pipelines and tuning. It can handle multiple outputs via MultitargetSRRegressor.
  2. Low-Level Interface: Centered around the equation_search function, which takes a 2D array of features and a 1D array of targets to model.

Under the hood, expressions are represented as Node types (via DynamicExpressions.jl). The search process identifies a "Pareto front" of equations, representing the best trade-off between accuracy (loss) and complexity.

Who it’s for

Researchers and data scientists who need interpretable mathematical models rather than black-box predictions, and those working in scientific computing who want to extract physical laws from data.

Highlights

  • Pareto Frontier: Identifies a set of dominating equations, allowing users to choose the best balance between simplicity and accuracy.
  • Flexible Operators: Supports customizable binary and unary operators (e.g., +, -, *, cos, exp).
  • Symbolic Integration: Can export discovered equations to SymbolicUtils.jl for further mathematical simplification.
  • Interoperability: Provides a Python frontend via PySR and integrates with Julia's MLJ ecosystem.

相關

  • 專案
  • 專案
  • 專案
  • 專案
  • 專案