Skip to main content

Information-Geometric Anomaly Detection via Fisher–Rao Scalar Curvature

Project description


IGAD - Information-Geometric Anomaly Detection

A new path for anomaly detection: treating anomalies as curvature events on a statistical manifold.

The Invention

For a century, anomaly detection has measured where data sits and how far it has moved. IGAD proposes that this is only half the picture. Distributions have shape, shape has geometry, and geometry carries information that no moment, no distance, and no density estimate can recover alone. To see the other half of the anomalies in the world, we have to learn to see the shape itself.

"Anomalies do not live only in location and distance. They live in shape."

  • Omry Damari, creator of IGAD

IGAD introduces a fundamentally different approach. It treats every fitted distribution as a point on a curved geometric surface — the statistical manifold of an exponential family — and detects anomalies by measuring how the curvature of that surface responds to new data. An anomaly, under IGAD, is not merely a numerical outlier. It is a deformation in the geometry of the distribution itself.

The mathematical core is a single, principled object. IGAD computes the Fisher information metric on the manifold, constructs the third cumulant tensor that encodes higher-order distributional structure, and contracts them into a scalar curvature signal written compactly as ‖T‖²_g. This contraction captures shape information that no individual moment — mean, variance, or skewness, raw or MLE-fitted — can recover on its own. It is, to our knowledge, the first practical anomaly detector built directly on Fisher–Rao scalar curvature with closed-form tensor support for real distributional families.

Why This Matters

Consider the hardest case in anomaly detection: two distributions that share the same mean and the same variance. A Gamma distribution and a LogNormal distribution can be tuned to match on both moments exactly. To classical detectors, these distributions are nearly invisible to one another. Mean tests fail. Variance tests fail. Even skewness tests, including the MLE-efficient version, struggle to separate them reliably.

IGAD sees the difference. Because the two distributions trace out different curvature on the statistical manifold, the geometric signal survives where moment-based signals collapse. In the regime where this matters most — moderate sample sizes between 200 and 500 observations — IGAD beats the MLE-skewness control by +0.053 AUC, using the identical underlying fit but extracting the curvature tensor that other methods discard.

This is not a marginal improvement on an existing technique. It is evidence that an entire dimension of distributional information has been ignored by the field, and that this dimension can be measured, computed, and used.

The Falsifiable Claim

IGAD makes a precise scientific claim, not a marketing claim. The contraction ‖T‖²_g extracts shape information not captured by any single moment, raw or MLE-fitted. This claim is supported in the tested regime of n = 200 to 500 observations and remains falsifiable outside that regime. The repository ships with the experiments, the controls, and the failure modes needed to test the claim independently. The Gaussian constant-curvature failure case is documented openly, because a serious geometric method must say where its geometry runs out.

Using It

The invention is mathematically deep but operationally simple.

pip install visigence-igad
import numpy as np
from igad import IGADDetector
from igad.families import GammaFamily

theta_ref = GammaFamily.to_natural(8.0, 2.0)
detector = IGADDetector(family=GammaFamily()).fit(theta_ref=theta_ref)

batch = np.random.lognormal(1.327, 0.343, size=200)
score = detector.score_batch(batch)
print(f"IGAD score: {score:.6f}")

X_train = np.random.gamma(8.0, 0.5, size=5000)
detector = IGADDetector(family=GammaFamily()).fit(X=X_train)

Closed-form tensor support is included for Gamma and Dirichlet families, with the architecture designed to extend naturally to additional exponential families.

Verification

The release is validated end-to-end. All 54 tests pass across Python 3.10, 3.11, and 3.12, with reproducible artifacts published on GitHub Actions and the package distributed through PyPI as visigence-igad. Validation commit, release commit, and run logs are linked in the verification section below for full auditability.


Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

visigence_igad-1.0.2.tar.gz (12.6 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

visigence_igad-1.0.2-py3-none-any.whl (11.4 kB view details)

Uploaded Python 3

File details

Details for the file visigence_igad-1.0.2.tar.gz.

File metadata

  • Download URL: visigence_igad-1.0.2.tar.gz
  • Upload date:
  • Size: 12.6 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for visigence_igad-1.0.2.tar.gz
Algorithm Hash digest
SHA256 fcf3af485f8a5b6523edc45eaba26d8275ad610aba822a27b4302b539816e061
MD5 a7113428700b893fdec797d9d8d4fd12
BLAKE2b-256 dbbc4133268e42824930d174dc044ce8a39df7c3fed1152bd68f6ec16a5bbc02

See more details on using hashes here.

Provenance

The following attestation bundles were made for visigence_igad-1.0.2.tar.gz:

Publisher: publish.yml on Visigence/IGAD

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file visigence_igad-1.0.2-py3-none-any.whl.

File metadata

  • Download URL: visigence_igad-1.0.2-py3-none-any.whl
  • Upload date:
  • Size: 11.4 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for visigence_igad-1.0.2-py3-none-any.whl
Algorithm Hash digest
SHA256 39544e50fe053eca148fc8179e724739d8ed4b0dd46aeb7189a350f4a1d4f6d1
MD5 110b48df644995cee5945e631b488fec
BLAKE2b-256 5bc9a3b57f9750c183d92931e7925c7d8fa870f7ae485d6dca2e266f34015b3e

See more details on using hashes here.

Provenance

The following attestation bundles were made for visigence_igad-1.0.2-py3-none-any.whl:

Publisher: publish.yml on Visigence/IGAD

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page