Skip to main content

SAFE-AI metrics for accuracy, robustness, and explainability evaluation

Project description

SAFE-AI Metrics

SAFE-AI Metrics is a Python package for evaluating machine learning models with accuracy-, robustness-, and explainability-oriented Rank Graduation metrics.

The package provides a unified public API for:

  • RGA — Rank Graduation Accuracy
  • RGR — Rank Graduation Robustness
  • RGE — Rank Graduation Explainability

Installation

Install from PyPI:

pip install safe-ai-metrics

Documentation

Full documentation is available on ReadTheDocs:

https://safeai.readthedocs.io/

If your ReadTheDocs project slug is different, replace the link above with the URL shown by your ReadTheDocs project.

Quickstart

from safeai.rga import rga_score, aurga_score, rga_curve, compare_rga
from safeai.rgr import rgr_score, aurgr_score, rgr_curve, compare_rgr
from safeai.rge import rge_score, aurge_score, rge_curve, compare_rge

Use *_score(...) for one scalar value, aur*_score(...) for only the area under a curve, *_curve(...) for the full curve result, and compare_*(...) for comparing several models.

Basic usage

Rank Graduation Accuracy

Compute a single RGA value:

from safeai.rga import rga_score

score = rga_score(
    y_true,
    y_score
)

print(score)

Compute only AURGA:

from safeai.rga import aurga_score

aurga = aurga_score(
    y_true,
    y_score,
    n_segments=10,
    curve_method='auto'
)

print(aurga)

Get the full RGA curve result:

from safeai.rga import rga_curve

result = rga_curve(
    y_true,
    y_score,
    n_segments=10,
    curve_method='auto'
)

print(result['rga'])
print(result['aurga'])
print(result['curve'])

Compare several models or probability arrays:

from safeai.rga import compare_rga

results = compare_rga(
    {
        'Model A': y_score_a,
        'Model B': y_score_b
    },
    y_true,
    n_segments=10
)

Rank Graduation Robustness

Compute a single RGR value between original and perturbed predictions:

from safeai.rgr import rgr_score

score = rgr_score(
    pred_original,
    pred_perturbed,
    class_order=[0, 1]
)

print(score)

Compute only AURGR for a robustness curve:

from safeai.rgr import aurgr_score

aurgr = aurgr_score(
    model,
    x_data,
    strengths=[0.0, 0.05, 0.10],
    method='noise',
    prob_original=prob_original,
    model_class_order=model.classes_,
    class_order=[0, 1]
)

print(aurgr)

Get the full RGR curve result:

from safeai.rgr import rgr_curve

result = rgr_curve(
    model,
    x_data,
    strengths=[0.0, 0.05, 0.10],
    method='noise',
    prob_original=prob_original,
    model_class_order=model.classes_,
    class_order=[0, 1]
)

print(result['aurgr'])
print(result['rgr_scores'])

Compare several models:

from safeai.rgr import compare_rgr

results = compare_rgr(
    {
        'Model A': (model_a, x_data, prob_a, model_a.classes_, 'sklearn', None),
        'Model B': (model_b, x_data, prob_b, model_b.classes_, 'sklearn', None),
    },
    strengths=[0.0, 0.05, 0.10],
    class_order=[0, 1],
    method='noise'
)

Rank Graduation Explainability

Compute a single RGE value between full and reduced predictions:

from safeai.rge import rge_score

score = rge_score(
    pred_full,
    pred_reduced,
    class_order=[0, 1]
)

print(score)

Compute only AURGE for a feature-removal curve:

from safeai.rge import aurge_score

aurge = aurge_score(
    model,
    x_data,
    method='tabular',
    feature_names=feature_names,
    model_class_order=model.classes_,
    class_order=[0, 1],
    n_steps=10
)

print(aurge)

Get the full RGE curve result:

from safeai.rge import rge_curve

result = rge_curve(
    model,
    x_data,
    method='tabular',
    feature_names=feature_names,
    model_class_order=model.classes_,
    class_order=[0, 1],
    n_steps=10
)

print(result['aurge'])
print(result['rge_scores'])

Compare several models:

from safeai.rge import compare_rge

results = compare_rge(
    {
        'Model A': (model_a, x_data, feature_names, prob_a, model_a.classes_, 'sklearn', None),
        'Model B': (model_b, x_data, feature_names, prob_b, model_b.classes_, 'sklearn', None),
    },
    class_order=[0, 1],
    method='tabular',
    n_steps=10
)

Main API

The main public functions are:

RGA

  • rga_score
  • rga_curve
  • aurga_score
  • compare_rga
  • plot_rga

RGR

  • rgr_score
  • rgr_curve
  • aurgr_score
  • compare_rgr
  • plot_rgr

RGE

  • rge_score
  • rge_curve
  • aurge_score
  • compare_rge
  • plot_rge

Package structure

The main modules are:

  • safeai.rga — Rank Graduation Accuracy
  • safeai.rgr — Rank Graduation Robustness
  • safeai.rge — Rank Graduation Explainability
  • safeai.cramer — Lorenz/concordance Cramer-von Mises utilities
  • safeai.utils — shared utility functions

Acknowledgements

The development of this package builds on the safeaipackage project by Golnoosh Babaei.

The original safeaipackage repository is available at:

https://github.com/GolnooshBabaei/safeaipackage

This repository is currently maintained as a separate implementation for development and packaging purposes, but it is expected to be merged or aligned with the original SAFE-AI package in the future.

If you use this package in academic work, please consider citing the related SAFE-AI and RGB paper referenced in the original project.

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

safe_ai_metrics-0.2.0.tar.gz (37.0 kB view details)

Uploaded Source

Built Distribution

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

safe_ai_metrics-0.2.0-py3-none-any.whl (39.9 kB view details)

Uploaded Python 3

File details

Details for the file safe_ai_metrics-0.2.0.tar.gz.

File metadata

  • Download URL: safe_ai_metrics-0.2.0.tar.gz
  • Upload date:
  • Size: 37.0 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.12.7

File hashes

Hashes for safe_ai_metrics-0.2.0.tar.gz
Algorithm Hash digest
SHA256 176da367bf02639d6c0b8a31ea8b7fe4d4a21fe670bf476cde8b8bc99c41dc10
MD5 a1128fb3b729135c52f3561540a652f1
BLAKE2b-256 16e793a50405464eece6628223952df48a36bd43fec51fd2fdd002b99af70ceb

See more details on using hashes here.

File details

Details for the file safe_ai_metrics-0.2.0-py3-none-any.whl.

File metadata

File hashes

Hashes for safe_ai_metrics-0.2.0-py3-none-any.whl
Algorithm Hash digest
SHA256 454d724b448a941345b94016d90e048b7d7c15fda0f18feb48434832ac9e6303
MD5 f1137063e481b49cacef8e6e6c18c4cf
BLAKE2b-256 eec6e8a8c66e788f3388a840b979682ce297c6a072579e044ada7c38696caec3

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