Skip to main content

A lightweight evaluation toolkit for time-series anomaly detection

Project description

tadmetric

Lightweight evaluation metrics for time-series anomaly detection.

tadmetric helps you evaluate anomaly scores or binary predictions with a small, simple API. The primary workflow is centered on evaluator(...), where you ask for a metric result or the best threshold directly.

Installation

pip install tadmetric

Why tadmetric?

  • Minimal input: use y_true with either y_pred or y_score
  • Practical TSAD metrics in one place
  • Fast threshold search for best F1
  • Easy high-level API for benchmarking multiple metrics at once
  • Extensible metric registry for adding new custom metrics

Quick start

Discover the API quickly

import tadmetric as tm

print(tm.api_overview())
e = tm.evaluator(y_true, y_score)
pre, rec, f1 = e.point_adjusted(thr=0.3)
pre_k, rec_k, f1_k = e.point_adjusted(k=30)
print(e.best(metric="composite").threshold)
print(tm.available_metrics())
print([spec.asdict() for spec in tm.describe_metrics()])

Evaluate with a reusable evaluator

from tadmetric import evaluator

e = evaluator(y_true, y_score)

point_pre, point_rec, point_f1 = e.point_wise(thr=0.5)
pa_pre, pa_rec, pa_f1 = e.point_adjusted(thr=0.3)
pa_default_pre, pa_default_rec, pa_default_f1 = e.point_adjusted()
comp_pre, comp_rec, comp_f1 = e.composite()
best = e.best(metric="composite")

print(best.threshold)
print(best.f1)
print(best.evaluation["composite"].asdict())
print((pa_pre, pa_rec, pa_f1))

e.reevaluate(other_y_true, other_y_score)

Public evaluator metrics are:

  • point_wise
  • point_adjusted with k=100 by default
  • composite

Included metrics

Core precision / recall / F1

  • Point-wise: point_precision, point_recall, point_f1
  • Point-adjusted: point_adjusted_precision, point_adjusted_recall, point_adjusted_f1
  • Point-adjusted %K: point_adjusted_k_precision, point_adjusted_k_recall, point_adjusted_k_f1
  • Composite: composite_precision, composite_recall, composite_f1
  • Event-wise: event_precision, event_recall, event_f1

Delay-aware metrics

  • time_to_detect
  • mean_time_to_detect
  • median_time_to_detect
  • missed_detection_rate

Thresholding and utilities

  • threshold_by_quantile
  • threshold_by_topk
  • threshold_by_best_f1
  • search_best_f1_threshold
  • apply_hysteresis
  • binary_to_intervals
  • intervals_to_binary
  • merge_intervals
  • scores_to_binary

Curve-based metrics

  • precision_recall_curve
  • roc_curve
  • auc_pr
  • auc_roc

High-level API

For most workflows, these are the main entry points:

  • evaluator
  • e.point_wise(thr=...)
  • e.point_adjusted(thr=..., k=100)
  • e.composite(thr=...)
  • e.best(metric=...)
  • evaluate
  • evaluate_scores
  • available_metrics
  • describe_metrics
  • api_overview
  • register_metric

Metric semantics

  • Point-wise metrics treat each timestamp independently.
  • Event-wise metrics treat each contiguous anomaly region as one event.
  • Point-adjusted metrics credit an event if it is detected at least once.
  • Point-adjusted %K metrics credit an event when at least K% of the event is detected.
  • Composite metrics use time-wise precision and event-based recall.
  • Interval semantics are half-open: [start, end).
  • Event matching defaults to overlap > 0.
  • Zero division returns 0.0 by default.

Development

pip install -e .[dev]
pytest

Build

python -m build --no-isolation
python -m twine check dist/*

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

tadmetric-0.1.4.tar.gz (14.9 kB view details)

Uploaded Source

Built Distribution

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

tadmetric-0.1.4-py3-none-any.whl (16.3 kB view details)

Uploaded Python 3

File details

Details for the file tadmetric-0.1.4.tar.gz.

File metadata

  • Download URL: tadmetric-0.1.4.tar.gz
  • Upload date:
  • Size: 14.9 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.10.19

File hashes

Hashes for tadmetric-0.1.4.tar.gz
Algorithm Hash digest
SHA256 df324f40ab73fd7d448f6a6673b8ecf29e69cad56f183241ff706bbf3a528d8f
MD5 4c15fe9f03ba166f0e58a18d4ebd18b6
BLAKE2b-256 55aecd417c746a325b73f6de1ebc666019f6046737073b79b2fc26b7e4b8c0bf

See more details on using hashes here.

File details

Details for the file tadmetric-0.1.4-py3-none-any.whl.

File metadata

  • Download URL: tadmetric-0.1.4-py3-none-any.whl
  • Upload date:
  • Size: 16.3 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.10.19

File hashes

Hashes for tadmetric-0.1.4-py3-none-any.whl
Algorithm Hash digest
SHA256 c2a7a355e67b8537b13782fd72f521325b5b307f6b6eb91bf4b1a92b5dfe3102
MD5 2a51e59eac52c7328dff1c358773cb7f
BLAKE2b-256 c00b9c72db059b720400a0954310f8890cfb4becb7363836713ab1d98750a3af

See more details on using hashes here.

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