
Algorithmen zur Ausreißer-, Adversarial- und Drift-Erkennung
Alibi Detect ist eine quelloffene Python-Bibliothek, die sich auf die Erkennung von Outlier, Adversarial und Drift konzentriert. Das Paket zielt darauf ab, sowohl Online- als auch Offline-Detektoren für tabellarische Daten, Text, Bilder und Zeitreihen abzudecken. Für die Drift-Erkennung werden sowohl TensorFlow- als auch PyTorch-Backends unterstützt.
Weitere Hintergründe zur Bedeutung der Überwachung von Ausreißern und Verteilungen in einer Produktionsumgebung finden Sie in diesem Vortrag vom Challenges in Deploying and Monitoring Machine Learning Systems ICML-2020-Workshop, der auf dem Paper Monitoring and explainability of models in production basiert und auf Alibi Detect verweist.
Eine ausführliche Einführung in die Drift-Erkennung finden Sie in Protecting Your Machine Learning Against Drift: An Introduction. Der Vortrag behandelt, was Drift ist und warum es sich lohnt, ihn zu erkennen, die verschiedenen Arten von Drift, wie er auf prinzipielle Weise erkannt werden kann, und beschreibt außerdem die Anatomie eines Drift-Detektors.
Das Paket alibi-detect kann installiert werden über:
pip)conda/mamba)Prophet-Zeitreihen-Ausreißerdetektor zu verwenden: ```bash
pip install alibi-detect[prophet]
Um von conda-forge zu installieren, wird empfohlen mamba zu verwenden, welches in der base-conda-Umgebung mit folgendem Befehl installiert werden kann:```bash conda install mamba -n base -c conda-forge
Um alibi-detect zu installieren:```bash
mamba install -c conda-forge alibi-detect
Wir verwenden den VAE outlier detector, um die API zu veranschaulichen.```python from alibi_detect.od import OutlierVAE from alibi_detect.saving import save_detector, load_detector
od = OutlierVAE(threshold=0.1, encoder_net=encoder_net, decoder_net=decoder_net, latent_dim=1024) od.fit(x_train)
preds = od.predict(x_test)
filepath = './my_detector/' save_detector(od, filepath) od = load_detector(filepath)
Die Vorhersagen werden in einem Wörterbuch mit den Schlüsseln `meta` und `data` zurückgegeben. `meta` enthält die Metadaten des Detektors, während `data` selbst ein Wörterbuch mit den tatsächlichen Vorhersagen ist. Es enthält die Ausreißer-, Adversarial- oder Drift-Scores und Schwellenwerte sowie die Vorhersagen, ob Instanzen z. B. Ausreißer sind oder nicht. Die genauen Details können von Methode zu Methode leicht variieren, daher empfehlen wir dem Leser, sich mit den [unterstützten Algorithmustypen](https://docs.seldon.io/projects/alibi-detect/en/stable/overview/algorithms.html) vertraut zu machen.
## Unterstützte Algorithmen
Die folgenden Tabellen zeigen die empfohlenen Anwendungsfälle für jeden Algorithmus. Die Spalte *Feature-Ebene* gibt an, ob die Erkennung auf Feature-Ebene durchgeführt werden kann, z. B. pro Pixel für ein Bild. Weitere Informationen finden Sie in der [Algorithmus-Referenzliste](#reference-list) mit Links zur Dokumentation und zu den Originalarbeiten sowie Beispielen für jeden der Detektoren.
### Ausreißererkennung
| Detektor | Tabellendaten | Bild | Zeitreihen | Text | Kategorische Merkmale | Online | Feature-Ebene |
|:---------------------|:-------:|:-----:|:-----------:|:----:|:--------------------:|:------:|:-------------:|
| Isolation Forest | ✔ | | | | ✔ | | |
| Mahalanobis Distance | ✔ | | | | ✔ | ✔ | |
| AE | ✔ | ✔ | | | | | ✔ |
| VAE | ✔ | ✔ | | | | | ✔ |
| AEGMM | ✔ | ✔ | | | | | |
| VAEGMM | ✔ | ✔ | | | | | |
| Likelihood Ratios | ✔ | ✔ | ✔ | | ✔ | | ✔ |
| Prophet | | | ✔ | | | | |
| Spectral Residual | | | ✔ | | | ✔ | ✔ |
| Seq2Seq | | | ✔ | | | | ✔ |
### Adversarial-Erkennung
| Detektor | Tabellendaten | Bild | Zeitreihen | Text | Kategorische Merkmale | Online | Feature-Ebene |
| :--- | :---: | :---: |:-----------:|:----:|:--------------------:|:------:|:-------------:|
| Adversarial AE | ✔ | ✔ | | | | | |
| Model distillation | ✔ | ✔ | ✔ | ✔ | ✔ | | |
### Drift-Erkennung
| Detektor | Tabellendaten | Bild | Zeitreihen | Text | Kategorische Merkmale | Online | Feature-Ebene |
|:---------------------------------| :---: | :---: | :---: | :---: | :---: | :---: | :---: |
| Kolmogorov-Smirnov | ✔ | ✔ | | ✔ | ✔ | | ✔ |
| Cramér-von Mises | ✔ | ✔ | | | | ✔ | ✔ |
| Fisher's Exact Test | ✔ | | | | ✔ | ✔ | ✔ |
| Maximum Mean Discrepancy (MMD) | ✔ | ✔ | | ✔ | ✔ | ✔ | |
| Learned Kernel MMD | ✔ | ✔ | | ✔ | ✔ | | |
| Context-aware MMD | ✔ | ✔ | ✔ | ✔ | ✔ | | |
| Least-Squares Density Difference | ✔ | ✔ | | ✔ | ✔ | ✔ | |
| Chi-Squared | ✔ | | | | ✔ | | ✔ |
| Mixed-type tabular data | ✔ | | | | ✔ | | ✔ |
| Classifier | ✔ | ✔ | ✔ | ✔ | ✔ | | |
| Spot-the-diff | ✔ | ✔ | ✔ | ✔ | ✔ | | ✔ |
| Classifier Uncertainty | ✔ | ✔ | ✔ | ✔ | ✔ | | |
| Regressor Uncertainty | ✔ | ✔ | ✔ | ✔ | ✔ | | |
#### TensorFlow- und PyTorch-Unterstützung
Die Drift-Detektoren unterstützen TensorFlow-, PyTorch- und (sofern zutreffend) [KeOps](https://www.kernel-operations.io/keops/index.html)-Backends.
Alibi Detect installiert diese jedoch standardmäßig nicht. Weitere Details finden Sie unter den [Installationsoptionen](#installation-and-usage).```python
from alibi_detect.cd import MMDDrift
cd = MMDDrift(x_ref, backend='tensorflow', p_val=.05)
preds = cd.predict(x)
Der gleiche Detektor in PyTorch:```python cd = MMDDrift(x_ref, backend='pytorch', p_val=.05) preds = cd.predict(x)
Oder in KeOps:```python
cd = MMDDrift(x_ref, backend='keops', p_val=.05)
preds = cd.predict(x)
Alibi Detect bietet außerdem verschiedene Vorverarbeitungsschritte wie zufällig initialisierte Encoder, vortrainierte Text- Embeddings zur Drift-Erkennung mithilfe der transformers-Bibliothek sowie die Extraktion versteckter Schichten aus Machine-Learning-Modellen. Dies ermöglicht die Erkennung verschiedener Arten von Drift wie Kovariaten- und vorhergesagte Verteilungsverschiebung. Die Vorverarbeitungsschritte werden wiederum in TensorFlow und PyTorch unterstützt.```python from alibi_detect.cd.tensorflow import HiddenOutput, preprocess_drift
model = # TensorFlow model; tf.keras.Model or tf.keras.Sequential preprocess_fn = partial(preprocess_drift, model=HiddenOutput(model, layer=-1), batch_size=128) cd = MMDDrift(x_ref, backend='tensorflow', p_val=.05, preprocess_fn=preprocess_fn) preds = cd.predict(x)
Weitere Details findest du in den Beispiel-Notebooks (z. B. [CIFAR10](https://docs.seldon.io/projects/alibi-detect/en/stable/examples/cd_mmd_cifar10.html), [Filmkritiken](https://docs.seldon.io/projects/alibi-detect/en/stable/examples/cd_text_imdb.html)).
### Referenzliste
#### Ausreißererkennung
- [Isolation Forest](https://docs.seldon.io/projects/alibi-detect/en/stable/od/methods/iforest.html) ([FT Liu et al., 2008](https://cs.nju.edu.cn/zhouzh/zhouzh.files/publication/icdm08b.pdf))
- Beispiel: [Netzwerk-Intrusion](https://docs.seldon.io/projects/alibi-detect/en/stable/examples/od_if_kddcup.html)
- [Mahalanobis Distance](https://docs.seldon.io/projects/alibi-detect/en/stable/od/methods/mahalanobis.html) ([Mahalanobis, 1936](https://insa.nic.in/writereaddata/UpLoadedFiles/PINSA/Vol02_1936_1_Art05.pdf))
- Beispiel: [Netzwerk-Intrusion](https://docs.seldon.io/projects/alibi-detect/en/stable/examples/od_mahalanobis_kddcup.html)
- [Auto-Encoder (AE)](https://docs.seldon.io/projects/alibi-detect/en/stable/od/methods/ae.html)
- Beispiel: [CIFAR10](https://docs.seldon.io/projects/alibi-detect/en/stable/examples/od_ae_cifar10.html)
- [Variational Auto-Encoder (VAE)](https://docs.seldon.io/projects/alibi-detect/en/stable/od/methods/vae.html) ([Kingma et al., 2013](https://arxiv.org/abs/1312.6114))
- Beispiele: [Netzwerk-Intrusion](https://docs.seldon.io/projects/alibi-detect/en/stable/examples/od_vae_kddcup.html), [CIFAR10](https://docs.seldon.io/projects/alibi-detect/en/stable/examples/od_vae_cifar10.html)
- [Auto-Encoding Gaussian Mixture Model (AEGMM)](https://docs.seldon.io/projects/alibi-detect/en/stable/od/methods/aegmm.html) ([Zong et al., 2018](https://openreview.net/forum?id=BJJLHbb0-))
- Beispiel: [Netzwerk-Intrusion](https://docs.seldon.io/projects/alibi-detect/en/stable/examples/od_aegmm_kddcup.html)
- [Variational Auto-Encoding Gaussian Mixture Model (VAEGMM)](https://docs.seldon.io/projects/alibi-detect/en/stable/od/methods/vaegmm.html)
- Beispiel: [Netzwerk-Intrusion](https://docs.seldon.io/projects/alibi-detect/en/stable/examples/od_aegmm_kddcup.html)
- [Likelihood Ratios](https://docs.seldon.io/projects/alibi-detect/en/stable/od/methods/llr.html) ([Ren et al., 2019](https://arxiv.org/abs/1906.02845))
- Beispiele: [Genom](https://docs.seldon.io/projects/alibi-detect/en/stable/examples/od_llr_genome.html), [Fashion-MNIST vs. MNIST](https://docs.seldon.io/projects/alibi-detect/en/stable/examples/od_llr_mnist.html)
- [Prophet Time Series Outlier Detector](https://docs.seldon.io/projects/alibi-detect/en/stable/od/methods/prophet.html) ([Taylor et al., 2018](https://peerj.com/preprints/3190/))
- Beispiel: [Wettervorhersage](https://docs.seldon.io/projects/alibi-detect/en/stable/examples/od_prophet_weather.html)
- [Spectral Residual Time Series Outlier Detector](https://docs.seldon.io/projects/alibi-detect/en/stable/od/methods/sr.html) ([Ren et al., 2019](https://arxiv.org/abs/1906.03821))
- Beispiel: [Synthetischer Datensatz](https://docs.seldon.io/projects/alibi-detect/en/stable/examples/od_sr_synth.html)
- [Sequence-to-Sequence (Seq2Seq) Outlier Detector](https://docs.seldon.io/projects/alibi-detect/en/stable/od/methods/seq2seq.html) ([Sutskever et al., 2014](https://papers.nips.cc/paper/5346-sequence-to-sequence-learning-with-neural-networks.pdf); [Park et al., 2017](https://arxiv.org/pdf/1711.00614.pdf))
- Beispiele: [ECG](https://docs.seldon.io/projects/alibi-detect/en/stable/examples/od_seq2seq_ecg.html), [Synthetischer Datensatz](https://docs.seldon.io/projects/alibi-detect/en/stable/examples/od_seq2seq_synth.html)
#### Adversarial-Erkennung
- [Adversarial Auto-Encoder](https://docs.seldon.io/projects/alibi-detect/en/stable/ad/methods/adversarialae.html) ([Vacanti and Van Looveren, 2020](https://arxiv.org/abs/2002.09364))
- Beispiel: [CIFAR10](https://docs.seldon.io/projects/alibi-detect/en/stable/examples/ad_ae_cifar10.html)
- [Model distillation](https://docs.seldon.io/projects/alibi-detect/en/stable/ad/methods/modeldistillation.html)
- Beispiel: [CIFAR10](https://docs.seldon.io/projects/alibi-detect/en/stable/examples/cd_distillation_cifar10.html)
#### Drift-Erkennung
- [Kolmogorov-Smirnov](https://docs.seldon.io/projects/alibi-detect/en/stable/cd/methods/ksdrift.html)
- Beispiel: [CIFAR10](https://docs.seldon.io/projects/alibi-detect/en/stable/examples/cd_ks_cifar10.html), [molekulare Graphen](https://docs.seldon.io/projects/alibi-detect/en/stable/examples/cd_mol.html), [Filmkritiken](https://docs.seldon.io/projects/alibi-detect/en/stable/examples/cd_text_imdb.html)
- [Cramér-von Mises](https://docs.seldon.io/projects/alibi-detect/en/stable/cd/methods/cvmdrift.html)
- Beispiel: [Pinguine](https://docs.seldon.io/projects/alibi-detect/en/stable/examples/cd_supervised_penguins.html)
- [Fisher's Exact Test](https://docs.seldon.io/projects/alibi-detect/en/stable/cd/methods/fetdrift.html)
- Beispiel: [Pinguine](https://docs.seldon.io/projects/alibi-detect/en/stable/examples/cd_supervised_penguins.html)
- [Least-Squares Density Difference](https://docs.seldon.io/projects/alibi-detect/en/stable/cd/methods/lsdddrift.html) ([Bu et al, 2016](https://alippi.faculty.polimi.it/articoli/A%20Pdf%20free%20Change%20Detection%20Test%20Based%20on%20Density%20Difference%20Estimation.pdf))
- [Maximum Mean Discrepancy](https://docs.seldon.io/projects/alibi-detect/en/stable/cd/methods/mmddrift.html) ([Gretton et al, 2012](http://jmlr.csail.mit.edu/papers/v13/gretton12a.html))
- Beispiel: [CIFAR10](https://docs.seldon.io/projects/alibi-detect/en/stable/examples/cd_mmd_cifar10.html), [molekulare Graphen](https://docs.seldon.io/projects/alibi-detect/en/stable/examples/cd_mol.html), [Filmkritiken](https://docs.seldon.io/projects/alibi-detect/en/stable/examples/cd_text_imdb.html), [Amazon-Rezensionen](https://docs.seldon.io/projects/alibi-detect/en/stable/examples/cd_text_amazon.html)
- [Learned Kernel MMD](https://docs.seldon.io/projects/alibi-detect/en/stable/cd/methods/learnedkerneldrift.html) ([Liu et al, 2020](https://arxiv.org/abs/2002.09116))
- Beispiel: [CIFAR10](https://docs.seldon.io/projects/alibi-detect/en/stable/examples/cd_clf_cifar10.html)
- [Context-aware MMD](https://docs.seldon.io/projects/alibi-detect/en/stable/cd/methods/contextmmddrift.html) ([Cobb and Van Looveren, 2022](https://arxiv.org/abs/2203.08644))
- Beispiel: [ECG](https://docs.seldon.io/projects/alibi-detect/en/stable/examples/cd_context_ecg.html), [Nachrichtenthemen](https://docs.seldon.io/projects/alibi-detect/en/stable/examples/cd_context_20newsgroup.html)
- [Chi-Squared](https://docs.seldon.io/projects/alibi-detect/en/stable/cd/methods/chisquaredrift.html)
- Beispiel: [Einkommensvorhersage](https://docs.seldon.io/projects/alibi-detect/en/stable/examples/cd_chi2ks_adult.html)
- [Mixed-type tabular data](https://docs.seldon.io/projects/alibi-detect/en/stable/cd/methods/tabulardrift.html)
- Beispiel: [Einkommensvorhersage](https://docs.seldon.io/projects/alibi-detect/en/stable/examples/cd_chi2ks_adult.html)
- [Classifier](https://docs.seldon.io/projects/alibi-detect/en/stable/cd/methods/classifierdrift.html) ([Lopez-Paz and Oquab, 2017](https://openreview.net/forum?id=SJkXfE5xx))
- Beispiel: [CIFAR10](https://docs.seldon.io/projects/alibi-detect/en/stable/examples/cd_clf_cifar10.html), [Amazon-Rezensionen](https://docs.seldon.io/projects/alibi-detect/en/stable/examples/cd_text_amazon.html)
- [Spot-the-diff](https://docs.seldon.io/projects/alibi-detect/en/stable/cd/methods/spotthediffdrift.html) (Adaption von [Jitkrittum et al, 2016](https://arxiv.org/abs/1605.06796))
- Beispiel [MNIST und Weinqualität](https://docs.seldon.io/projects/alibi-detect/en/stable/examples/spot_the_diff_mnist_win.html)
- [Classifier and Regressor Uncertainty](https://docs.seldon.io/projects/alibi-detect/en/stable/cd/methods/modeluncdrift.html)
- Beispiel: [CIFAR10 und Wein](https://docs.seldon.io/projects/alibi-detect/en/stable/examples/cd_model_unc_cifar10_wine.html), [molekulare Graphen](https://docs.seldon.io/projects/alibi-detect/en/stable/examples/cd_mol.html)
- [Online Maximum Mean Discrepancy](https://docs.seldon.io/projects/alibi-detect/en/stable/cd/methods/onlinemmddrift.html)
- Beispiel: [Weinqualität](https://docs.seldon.io/projects/alibi-detect/en/stable/examples/cd_online_wine.html), [Camelyon medizinische Bildgebung](https://docs.seldon.io/projects/alibi-detect/en/stable/examples/cd_online_camelyon.html)
- [Online Least-Squares Density Difference](https://docs.seldon.io/projects/alibi-detect/en/stable/cd/methods/onlinemmddrift.html) ([Bu et al, 2017](https://ieeexplore.ieee.org/abstract/document/7890493))
- Beispiel: [Weinqualität](https://docs.seldon.io/projects/alibi-detect/en/stable/examples/cd_online_wine.html)
## Datensätze
Das Paket enthält außerdem Funktionen in `alibi_detect.datasets`, um einfach eine Reihe von Datensätzen für verschiedene Modalitäten zu laden. Für jeden Datensatz werden entweder die Daten und Labels oder ein *Bunch*-Objekt mit den Daten, Labels und optionalen Metadaten zurückgegeben. Beispiel:```python
from alibi_detect.datasets import fetch_ecg
(X_train, y_train), (X_test, y_test) = fetch_ecg(return_X_y=True)
Genom-Datensatz: fetch_genome
(X_train, y_train), (X_val, y_val), (X_test, y_test) = fetch_genome(return_X_y=True)
ECG 5000: fetch_ecg
NAB: fetch_nab
alibi_detect.datasets.get_list_nab() abgerufen werden.CIFAR-10-C: fetch_cifar10c
fetch_cifar10c können Sie einen beliebigen Schweregrad oder Korruptionstyp auswählen. Die Liste der verfügbaren Korruptionstypen kann mit alibi_detect.datasets.corruption_types_cifar10c() abgerufen werden. Der Datensatz kann in der Forschung zu Robustheit und Drift verwendet werden. Die Originaldaten sind hier zu finden. Beispiel: ```python
from alibi_detect.datasets import fetch_cifar10ccorruption = ['gaussian_noise', 'motion_blur', 'brightness', 'pixelate'] X, y = fetch_cifar10c(corruption=corruption, severity=5, return_X_y=True)
Adversarial CIFAR-10: fetch_attack
(X_train, y_train), (X_test, y_test) = fetch_attack('cifar10', 'resnet56', 'cw', return_X_y=True)
fetch_kdd
fetch_kdd ermöglicht es Ihnen, eine Teilmenge von Netzwerkeinbrüchen als Ziele auszuwählen oder nur bestimmte Merkmale auszuwählen. Die Originaldaten finden Sie hier.Modelle und/oder Bausteine, die außerhalb der Ausreißer-, Adversarial- oder Drift-Erkennung nützlich sein können, finden Sie unter alibi_detect.models. Wichtigste Implementierungen:
PixelCNN++: alibi_detect.models.pixelcnn.PixelCNN
Variational Autoencoder: alibi_detect.models.autoencoder.VAE
Sequence-to-Sequence-Modell: alibi_detect.models.autoencoder.Seq2Seq
ResNet: alibi_detect.models.resnet
model = fetch_tf_model('cifar10', 'resnet32')
Alibi-detect ist in die Bereitstellungsplattform für Machine-Learning-Modelle Seldon Core und das Modell-Serving-Framework KFServing integriert.
Seldon Core: Ausreißer- und Drift-Erkennung – ausgearbeitete Beispiele.
KFServing: Ausreißer- und Drift-Erkennung – Beispiele.
Wenn Sie alibi-detect in Ihrer Forschung verwenden, erwägen Sie bitte, es zu zitieren.
BibTeX-Eintrag:``` @software{alibi-detect, title = {Alibi Detect: Algorithms for outlier, adversarial and drift detection}, author = {Van Looveren, Arnaud and Klaise, Janis and Vacanti, Giovanni and Cobb, Oliver and Scillitoe, Ashley and Samoilescu, Robert and Athorne, Alex}, url = {https://github.com/SeldonIO/alibi-detect}, version = {0.13.0}, date = {2025-12-11}, year = {2019} }