Symbolic regression is a method that searches for both the structure of an equation and its numbers at the same time, instead of assuming you already know the structure. It's what lets a computer look at a random hand-drawn squiggle and figure out, with no hints, whether the closest match is a line, a circle, a spiral, or something else entirely.
If you haven't read how curve fitting works, the short version is: ordinary curve fitting takes a shape you've already picked — a line, a specific-degree polynomial, a particular wave — and tunes its numbers to match your points as closely as possible. Symbolic regression is what happens when nobody's picked the shape yet.
The one-sentence difference
Ordinary curve fitting asks: "Given this equation, what are the best numbers?" Symbolic regression asks a bigger question: "Out of every reasonable equation I could write, which one — numbers and all — fits these points best?"
| Regular curve fitting | Symbolic regression |
|---|---|
| You choose the formula first (a line, a parabola, a specific wave) | The formula itself is part of the search |
| Only the numbers inside that formula get solved for | Both the structure and the numbers get solved for |
| Fast, because the search space is small | Slower, because it's exploring far more possible shapes |
| Needs a human (or a rule) to pick the right family | Can find a family nobody specified in advance |
How do you even "search" for an equation?
You can't try every equation that's ever existed — there are infinitely many. What actually happens is closer to breeding: the engine starts with a batch of random small equations, built out of basic building blocks like +, −, ×, powers, and functions like sine. Each candidate gets scored on how well it matches your points, using the same "measure the gaps, square them, add them up" idea from ordinary curve fitting.
The best-scoring candidates get kept and recombined — a piece of one gets mixed with a piece of another, or a small random tweak gets thrown in — to produce a new batch. Repeat that scoring-and-recombining loop enough times, and the population of candidate equations gets steadily better, the same rough logic behind evolutionary algorithms in general. This particular approach — evolving populations of equations — is one of the classic ways to do symbolic regression; newer systems sometimes use other search strategies instead, but the underlying question they're all answering is the same one.
Graphiti's engine runs a version of this search on the points from your stroke, checking candidates like circles, waves, spirals, and polynomials against what you actually drew, then reporting back whichever one wins.
The part that makes it hard: two goals that fight each other
A search like this has an obvious failure mode. If all you're scoring is "how closely does this match my points," the winning equation is often a monstrously complicated one that snakes through every single point exactly — technically a perfect fit, and completely useless, because it's not describing your shape, it's just memorizing it. This is called overfitting, and it's the central problem any symbolic regression system has to fight.
So a good symbolic regression search scores candidates on two things at once: how well they fit, and how simple they are. A slightly-less-perfect circle beats a technically-more-perfect eleven-term polynomial, because the circle is actually describing something, and the polynomial is just contorting itself around noise. This is a very old idea in science dressed up in new math — the general preference for the simplest explanation that still fits the facts.
Could two totally different equations fit my drawing equally well?
Yes, sometimes — especially on a short or noisy stroke. When that happens, the engine leans on the simplicity tiebreaker above: if a plain circle and a complicated seven-term squiggle score almost identically on accuracy, the circle wins, because it's not paying for complexity it doesn't need.
A tiny, concrete example
Say you've got three points that happen to sit almost, but not quite, on a straight line. A straight line fit will miss each point by a small amount. But there's technically a more complicated curve — a wiggly higher-degree polynomial — that can be built to pass through all three points exactly, with zero error. Pure accuracy-only scoring would pick the wiggly curve every time, even though "these three points are roughly a line" is obviously the more sensible read. That's the overfitting trap above, made concrete — and it's exactly why a fit score alone was never going to be enough, on Graphiti's cards or anywhere else.
Where this shows up outside of doodles
Symbolic regression isn't a gimmick invented for this app — it's a real, established area of research. Scientists have used symbolic regression software to look at raw motion-tracking data from physical experiments and re-derive known physical relationships from scratch, without being told the underlying formula in advance, essentially letting the software rediscover a law of physics from the data alone. Graphiti is a much smaller, faster, friendlier application of the same core idea — pointed at a hand-drawn shape instead of a physics dataset.
Where to go from here
For the mechanics of the scoring step itself, back up to how curve fitting actually works. For what the final output looks like once the search is done, see what is a mathgram. And if you want the bigger timeline this all sits inside — including how it relates to graphing calculators and photo-to-math apps — read a short history of turning drawings into math. For the product itself, see how it works.