/** * SLOPPINESS — the rarest lens: how many knobs do you REALLY have? Borrowed from "sloppy models" in systems * biology and physics (Sethna, Transtrum), an idea almost no optimizer ships. You think you're tuning five * variables; the response often cares about only two or three COMBINATIONS of them, and is nearly flat along * the rest. Those flat ("sloppy") directions are freedom: you can set them however is cheapest, fastest, or * safest without hurting the result. The steep ("stiff") directions are the ones you must hold precisely. * * SLOPPINESS fits the response curvature (the Hessian) around your data, eigen-decomposes it, and reads off * the spectrum: each eigenvector is a combination of your variables, each eigenvalue is how sharply the * result changes along it. A spectrum spanning orders of magnitude = a sloppy system: a few stiff * directions matter, the rest are free. The headline is the EFFECTIVE DIMENSIONALITY — "you have 5 knobs * but only 2 combinations truly move the needle." * * Honest by construction (DIAKRISIS): this is a LOCAL quadratic (Hessian) picture, valid where your data * concentrates; eigenvectors are reported as the literal variable loadings, stiffness as the eigenvalue * ratio to the stiffest. It abstains when there isn't enough data to fit a curvature. */ import { type Space } from "./space.js"; import { type Observation, type Goal } from "./engine.js"; export interface SloppyDirection { stiffness: number; kind: "stiff" | "sloppy"; loadings: Array<{ name: string; weight: number; }>; } export interface SloppinessReport { effectiveDims: number; totalDims: number; directions: SloppyDirection[]; note: string; } /** Analyse how many independent combinations of variables actually matter (stiff) vs are free (sloppy). */ export declare function analyzeSloppiness(obs: ReadonlyArray, space: Space, goal?: Goal): SloppinessReport; export declare function sloppinessGauntlet(): { score: 0 | 100; checks: Array<{ name: string; pass: boolean; detail: string; }>; }; //# sourceMappingURL=sloppiness.d.ts.map