/SymbolicRegressionPackage

Basic building blocks for brute-force and random symbolic regression methods in Mathematica

Primary LanguageMathematicaMIT LicenseMIT

SymbolicRegressionPackage

Basic building blocks for brute-force and random symbolic regression methods in Mathematica

Package will provides various implementations of typical symbolic regression functions:

  • numeric constant recognition (Prototype using RPN implemented with up to 2-argument operations)
  • random generators for mathematical expressions
  • enumerate all possible expressions composed of given basic building blocks
  • tools for testing and verification of methods
  • functions estimating Kolmogorov complexity of the given mathematical formula

Typical applications are:

  • automated generation of new test problems for students, free of ,,aunt Wikipedia and uncle Google'' solutions
  • exhaustive and random tests of Computer Alegebra Systems (CAS)
  • recreational math
  • brute-force search for special solutions of mathematical problems (ODE, PDE, integration, delayed and functional equations etc.)
  • statistical analysis of mathematical formulae (e.g. what fraction of integer coefficient quadratic equations have two distinct real solutions)

Main functions are:

RecognizeConstant[x] - search for ,,analytical'' formula given numeric value in the order of growing Kolmogorov complexity expressions. Any function or constant known to Mathematica can be used, e.g. EllipticE, Root[], Gamma etc. RandomExpression[] - generates random mathematical formula [implemented using random-walk string-rewrite approach] EnumerateExpressions[] - lists all expressions [implemented recursively; this limits search to level 4 at most due to memory-hungry functions, stack machine methodvto be implemented soon]

Some simple examples and applications are presented in SymbolicRegreessionPackage_Examples.nb notebook.

NOTE: constants are also proper functions, random generator do not care what you expect!