(JMLR'19) A Python Toolbox for Scalable Outlier Detection (Anomaly Detection)

Overview

Python Outlier Detection (PyOD)

Deployment & Documentation & Stats

PyPI version Anaconda version Documentation status Binder GitHub stars GitHub forks Downloads Downloads

Build Status & Coverage & Maintainability & License

Build status Build Status Circle CI Coverage Status Maintainability License

PyOD is a comprehensive and scalable Python toolkit for detecting outlying objects in multivariate data. This exciting yet challenging field is commonly referred as Outlier Detection or Anomaly Detection.

PyOD includes more than 30 detection algorithms, from classical LOF (SIGMOD 2000) to the latest COPOD (ICDM 2020). Since 2017, PyOD has been successfully used in numerous academic researches and commercial products [9] [18] [29] [31]. It is also well acknowledged by the machine learning community with various dedicated posts/tutorials, including Analytics Vidhya, KDnuggets, Towards Data Science, Computer Vision News, and awesome-machine-learning.

PyOD is featured for:

  • Unified APIs, detailed documentation, and interactive examples across various algorithms.
  • Advanced models, including classical ones from scikit-learn, latest deep learning methods, and emerging algorithms like COPOD.
  • Optimized performance with JIT and parallelization when possible, using numba and joblib.
  • Compatible with both Python 2 & 3.

API Demo:

# train the COPOD detector
from pyod.models.copod import COPOD
clf = COPOD()
clf.fit(X_train)

# get outlier scores
y_train_scores = clf.decision_scores_  # raw outlier scores
y_test_scores = clf.decision_function(X_test)  # outlier scores

Citing PyOD:

PyOD paper is published in JMLR (machine learning open-source software track). If you use PyOD in a scientific publication, we would appreciate citations to the following paper:

@article{zhao2019pyod,
  author  = {Zhao, Yue and Nasrullah, Zain and Li, Zheng},
  title   = {PyOD: A Python Toolbox for Scalable Outlier Detection},
  journal = {Journal of Machine Learning Research},
  year    = {2019},
  volume  = {20},
  number  = {96},
  pages   = {1-7},
  url     = {http://jmlr.org/papers/v20/19-011.html}
}

or:

Zhao, Y., Nasrullah, Z. and Li, Z., 2019. PyOD: A Python Toolbox for Scalable Outlier Detection. Journal of machine learning research (JMLR), 20(96), pp.1-7.

Key Links and Resources:

Table of Contents:


Installation

It is recommended to use pip for installation. Please make sure the latest version is installed, as PyOD is updated frequently:

pip install pyod            # normal install
pip install --upgrade pyod  # or update if needed
pip install --pre pyod      # or include pre-release version for new features

Alternatively, you could clone and run setup.py file:

git clone https://github.com/yzhao062/pyod.git
cd pyod
pip install .

Note on Python 2.7: The maintenance of Python 2.7 will be stopped by January 1, 2020 (see official announcement) To be consistent with the Python change and PyOD's dependent libraries, e.g., scikit-learn, we will stop supporting Python 2.7 in the near future (dates are still to be decided). We encourage you to use Python 3.5 or newer for the latest functions and bug fixes. More information can be found at Moving to require Python 3.

Required Dependencies:

  • Python 2.7, 3.5, 3.6, or 3.7
  • combo>=0.0.8
  • joblib
  • numpy>=1.13
  • numba>=0.35
  • pandas>=0.25
  • scipy>=0.19.1
  • scikit_learn>=0.19.1
  • statsmodels

Optional Dependencies (see details below):

  • keras (optional, required for AutoEncoder)
  • matplotlib (optional, required for running examples)
  • pandas (optional, required for running benchmark)
  • tensorflow (optional, required for AutoEncoder, other backend works)
  • xgboost (optional, required for XGBOD)

Warning 1: PyOD has multiple neural network based models, e.g., AutoEncoders, which are implemented in Keras. However, PyOD does NOT install keras and/or tensorflow for you. This reduces the risk of interfering with your local copies. If you want to use neural-net based models, please make sure Keras and a backend library, e.g., TensorFlow, are installed. Instructions are provided: neural-net FAQ. Similarly, models depending on xgboost, e.g., XGBOD, would NOT enforce xgboost installation by default.

Warning 2: Running examples needs matplotlib, which may throw errors in conda virtual environment on mac OS. See reasons and solutions mac_matplotlib.

Warning 3: PyOD contains multiple models that also exist in scikit-learn. However, these two libraries' API is not exactly the same--it is recommended to use only one of them for consistency but not mix the results. Refer Differences between sckit-learn and PyOD for more information.


API Cheatsheet & Reference

Full API Reference: (https://pyod.readthedocs.io/en/latest/pyod.html). API cheatsheet for all detectors:

  • fit(X): Fit detector.
  • decision_function(X): Predict raw anomaly score of X using the fitted detector.
  • predict(X): Predict if a particular sample is an outlier or not using the fitted detector.
  • predict_proba(X): Predict the probability of a sample being outlier using the fitted detector.

Key Attributes of a fitted model:

  • decision_scores_: The outlier scores of the training data. The higher, the more abnormal. Outliers tend to have higher scores.
  • labels_: The binary labels of the training data. 0 stands for inliers and 1 for outliers/anomalies.

Note : fit_predict() and fit_predict_score() are deprecated in V0.6.9 due to consistency issue and will be removed in V0.8.0. To get the binary labels of the training data X_train, one should call clf.fit(X_train) and use clf.labels_, instead of calling clf.predict(X_train).


Model Save & Load

PyOD takes a similar approach of sklearn regarding model persistence. See model persistence for clarification.

In short, we recommend to use joblib or pickle for saving and loading PyOD models. See "examples/save_load_model_example.py" for an example. In short, it is simple as below:

from joblib import dump, load

# save the model
dump(clf, 'clf.joblib')
# load the model
clf = load('clf.joblib')

Implemented Algorithms

PyOD toolkit consists of three major functional groups:

(i) Individual Detection Algorithms :

Type Abbr Algorithm Year Ref
Linear Model PCA Principal Component Analysis (the sum of weighted projected distances to the eigenvector hyperplanes) 2003 [27]
Linear Model MCD Minimum Covariance Determinant (use the mahalanobis distances as the outlier scores) 1999 [10] [25]
Linear Model OCSVM One-Class Support Vector Machines 2001 [26]
Linear Model LMDD Deviation-based Outlier Detection (LMDD) 1996 [5]
Proximity-Based LOF Local Outlier Factor 2000 [6]
Proximity-Based COF Connectivity-Based Outlier Factor 2002 [28]
Proximity-Based CBLOF Clustering-Based Local Outlier Factor 2003 [11]
Proximity-Based LOCI LOCI: Fast outlier detection using the local correlation integral 2003 [22]
Proximity-Based HBOS Histogram-based Outlier Score 2012 [8]
Proximity-Based kNN k Nearest Neighbors (use the distance to the kth nearest neighbor as the outlier score) 2000 [24]
Proximity-Based AvgKNN Average kNN (use the average distance to k nearest neighbors as the outlier score) 2002 [4]
Proximity-Based MedKNN Median kNN (use the median distance to k nearest neighbors as the outlier score) 2002 [4]
Proximity-Based SOD Subspace Outlier Detection 2009 [16]
Probabilistic ABOD Angle-Based Outlier Detection 2008 [15]
Probabilistic COPOD COPOD: Copula-Based Outlier Detection 2020 [19]
Probabilistic FastABOD Fast Angle-Based Outlier Detection using approximation 2008 [15]
Probabilistic MAD Median Absolute Deviation (MAD) 1993 [12]
Probabilistic SOS Stochastic Outlier Selection 2012 [13]
Outlier Ensembles IForest Isolation Forest 2008 [20]
Outlier Ensembles   Feature Bagging 2005 [17]
Outlier Ensembles LSCP LSCP: Locally Selective Combination of Parallel Outlier Ensembles 2019 [31]
Outlier Ensembles XGBOD Extreme Boosting Based Outlier Detection (Supervised) 2018 [30]
Outlier Ensembles LODA Lightweight On-line Detector of Anomalies 2016 [23]
Neural Networks AutoEncoder Fully connected AutoEncoder (use reconstruction error as the outlier score)   [1] [Ch.3]
Neural Networks VAE Variational AutoEncoder (use reconstruction error as the outlier score) 2013 [14]
Neural Networks Beta-VAE Variational AutoEncoder (all customized loss term by varying gamma and capacity) 2018 [7]
Neural Networks SO_GAAL Single-Objective Generative Adversarial Active Learning 2019 [21]
Neural Networks MO_GAAL Multiple-Objective Generative Adversarial Active Learning 2019 [21]

(ii) Outlier Ensembles & Outlier Detector Combination Frameworks:

Type Abbr Algorithm Year Ref
Outlier Ensembles   Feature Bagging 2005 [17]
Outlier Ensembles LSCP LSCP: Locally Selective Combination of Parallel Outlier Ensembles 2019 [31]
Outlier Ensembles XGBOD Extreme Boosting Based Outlier Detection (Supervised) 2018 [30]
Outlier Ensembles LODA Lightweight On-line Detector of Anomalies 2016 [23]
Combination Average Simple combination by averaging the scores 2015 [2]
Combination Weighted Average Simple combination by averaging the scores with detector weights 2015 [2]
Combination Maximization Simple combination by taking the maximum scores 2015 [2]
Combination AOM Average of Maximum 2015 [2]
Combination MOA Maximization of Average 2015 [2]
Combination Median Simple combination by taking the median of the scores 2015 [2]
Combination majority Vote Simple combination by taking the majority vote of the labels (weights can be used) 2015 [2]

(iii) Utility Functions:

Type Name Function Documentation
Data generate_data Synthesized data generation; normal data is generated by a multivariate Gaussian and outliers are generated by a uniform distribution generate_data
Data generate_data_clusters Synthesized data generation in clusters; more complex data patterns can be created with multiple clusters generate_data_clusters
Stat wpearsonr Calculate the weighted Pearson correlation of two samples wpearsonr
Utility get_label_n Turn raw outlier scores into binary labels by assign 1 to top n outlier scores get_label_n
Utility precision_n_scores calculate precision @ rank n precision_n_scores

Algorithm Benchmark

The comparison among of implemented models is made available below (Figure, compare_all_models.py, Interactive Jupyter Notebooks). For Jupyter Notebooks, please navigate to "/notebooks/Compare All Models.ipynb".

Comparision_of_All

A benchmark is supplied for select algorithms to provide an overview of the implemented models. In total, 17 benchmark datasets are used for comparison, which can be downloaded at ODDS.

For each dataset, it is first split into 60% for training and 40% for testing. All experiments are repeated 10 times independently with random splits. The mean of 10 trials is regarded as the final result. Three evaluation metrics are provided:

  • The area under receiver operating characteristic (ROC) curve
  • Precision @ rank n (P@N)
  • Execution time

Check the latest benchmark. You could replicate this process by running benchmark.py.


Quick Start for Outlier Detection

PyOD has been well acknowledged by the machine learning community with a few featured posts and tutorials.

Analytics Vidhya: An Awesome Tutorial to Learn Outlier Detection in Python using PyOD Library

KDnuggets: Intuitive Visualization of Outlier Detection Methods, An Overview of Outlier Detection Methods from PyOD

Towards Data Science: Anomaly Detection for Dummies

Computer Vision News (March 2019): Python Open Source Toolbox for Outlier Detection

"examples/knn_example.py" demonstrates the basic API of using kNN detector. It is noted that the API across all other algorithms are consistent/similar.

More detailed instructions for running examples can be found in examples directory.

  1. Initialize a kNN detector, fit the model, and make the prediction.

    from pyod.models.knn import KNN   # kNN detector
    
    # train kNN detector
    clf_name = 'KNN'
    clf = KNN()
    clf.fit(X_train)
    
    # get the prediction label and outlier scores of the training data
    y_train_pred = clf.labels_  # binary labels (0: inliers, 1: outliers)
    y_train_scores = clf.decision_scores_  # raw outlier scores
    
    # get the prediction on the test data
    y_test_pred = clf.predict(X_test)  # outlier labels (0 or 1)
    y_test_scores = clf.decision_function(X_test)  # outlier scores
  2. Evaluate the prediction by ROC and Precision @ Rank n (p@n).

    from pyod.utils.data import evaluate_print
    
    # evaluate and print the results
    print("\nOn Training Data:")
    evaluate_print(clf_name, y_train, y_train_scores)
    print("\nOn Test Data:")
    evaluate_print(clf_name, y_test, y_test_scores)
  3. See a sample output & visualization.

    On Training Data:
    KNN ROC:1.0, precision @ rank n:1.0
    
    On Test Data:
    KNN ROC:0.9989, precision @ rank n:0.9
    visualize(clf_name, X_train, y_train, X_test, y_test, y_train_pred,
        y_test_pred, show_figure=True, save_figure=False)

Visualization (knn_figure):

kNN example figure

Quick Start for Combining Outlier Scores from Various Base Detectors

Outlier detection often suffers from model instability due to its unsupervised nature. Thus, it is recommended to combine various detector outputs, e.g., by averaging, to improve its robustness. Detector combination is a subfield of outlier ensembles; refer [3] for more information.

Four score combination mechanisms are shown in this demo:

  1. Average: average scores of all detectors.
  2. maximization: maximum score across all detectors.
  3. Average of Maximum (AOM): divide base detectors into subgroups and take the maximum score for each subgroup. The final score is the average of all subgroup scores.
  4. Maximum of Average (MOA): divide base detectors into subgroups and take the average score for each subgroup. The final score is the maximum of all subgroup scores.

"examples/comb_example.py" illustrates the API for combining the output of multiple base detectors (comb_example.py, Jupyter Notebooks). For Jupyter Notebooks, please navigate to "/notebooks/Model Combination.ipynb"

  1. Import models and generate sample data.

    from pyod.models.knn import KNN
    from pyod.models.combination import aom, moa, average, maximization
    from pyod.utils.data import generate_data
    
    X, y = generate_data(train_only=True)  # load data
  2. First initialize 20 kNN outlier detectors with different k (10 to 200), and get the outlier scores.

    # initialize 20 base detectors for combination
    k_list = [10, 20, 30, 40, 50, 60, 70, 80, 90, 100, 110, 120, 130, 140,
                150, 160, 170, 180, 190, 200]
    
    train_scores = np.zeros([X_train.shape[0], n_clf])
    test_scores = np.zeros([X_test.shape[0], n_clf])
    
    for i in range(n_clf):
        k = k_list[i]
    
        clf = KNN(n_neighbors=k, method='largest')
        clf.fit(X_train_norm)
    
        train_scores[:, i] = clf.decision_scores_
        test_scores[:, i] = clf.decision_function(X_test_norm)
  3. Then the output scores are standardized into zero mean and unit variance before combination. This step is crucial to adjust the detector outputs to the same scale.

    from pyod.utils.utility import standardizer
    train_scores_norm, test_scores_norm = standardizer(train_scores, test_scores)
  4. Then four different combination algorithms are applied as described above.

    comb_by_average = average(test_scores_norm)
    comb_by_maximization = maximization(test_scores_norm)
    comb_by_aom = aom(test_scores_norm, 5) # 5 groups
    comb_by_moa = moa(test_scores_norm, 5)) # 5 groups
  5. Finally, all four combination methods are evaluated with ROC and Precision @ Rank n.

    Combining 20 kNN detectors
    Combination by Average ROC:0.9194, precision @ rank n:0.4531
    Combination by Maximization ROC:0.9198, precision @ rank n:0.4688
    Combination by AOM ROC:0.9257, precision @ rank n:0.4844
    Combination by MOA ROC:0.9263, precision @ rank n:0.4688

How to Contribute

You are welcome to contribute to this exciting project:

  • Please first check Issue lists for "help wanted" tag and comment the one you are interested. We will assign the issue to you.
  • Fork the master branch and add your improvement/modification/fix.
  • Create a pull request to development branch and follow the pull request template PR template
  • Automatic tests will be triggered. Make sure all tests are passed. Please make sure all added modules are accompanied with proper test functions.

To make sure the code has the same style and standard, please refer to abod.py, hbos.py, or feature_bagging.py for example.

You are also welcome to share your ideas by opening an issue or dropping me an email at [email protected] :)

Inclusion Criteria

Similarly to scikit-learn, We mainly consider well-established algorithms for inclusion. A rule of thumb is at least two years since publication, 50+ citations, and usefulness.

However, we encourage the author(s) of newly proposed models to share and add your implementation into PyOD for boosting ML accessibility and reproducibility. This exception only applies if you could commit to the maintenance of your model for at least two year period.


Reference

[1] Aggarwal, C.C., 2015. Outlier analysis. In Data mining (pp. 237-263). Springer, Cham.
[2] (1, 2, 3, 4, 5, 6, 7) Aggarwal, C.C. and Sathe, S., 2015. Theoretical foundations and algorithms for outlier ensembles.ACM SIGKDD Explorations Newsletter, 17(1), pp.24-47.
[3] Aggarwal, C.C. and Sathe, S., 2017. Outlier ensembles: An introduction. Springer.
[4] (1, 2) Angiulli, F. and Pizzuti, C., 2002, August. Fast outlier detection in high dimensional spaces. In European Conference on Principles of Data Mining and Knowledge Discovery pp. 15-27.
[5] Arning, A., Agrawal, R. and Raghavan, P., 1996, August. A Linear Method for Deviation Detection in Large Databases. In KDD (Vol. 1141, No. 50, pp. 972-981).
[6] Breunig, M.M., Kriegel, H.P., Ng, R.T. and Sander, J., 2000, May. LOF: identifying density-based local outliers. ACM Sigmod Record, 29(2), pp. 93-104.
[7] Burgess, Christopher P., et al. "Understanding disentangling in beta-VAE." arXiv preprint arXiv:1804.03599 (2018).
[8] Goldstein, M. and Dengel, A., 2012. Histogram-based outlier score (hbos): A fast unsupervised anomaly detection algorithm. In KI-2012: Poster and Demo Track, pp.59-63.
[9] Gopalan, P., Sharan, V. and Wieder, U., 2019. PIDForest: Anomaly Detection via Partial Identification. In Advances in Neural Information Processing Systems, pp. 15783-15793.
[10] Hardin, J. and Rocke, D.M., 2004. Outlier detection in the multiple cluster setting using the minimum covariance determinant estimator. Computational Statistics & Data Analysis, 44(4), pp.625-638.
[11] He, Z., Xu, X. and Deng, S., 2003. Discovering cluster-based local outliers. Pattern Recognition Letters, 24(9-10), pp.1641-1650.
[12] Iglewicz, B. and Hoaglin, D.C., 1993. How to detect and handle outliers (Vol. 16). Asq Press.
[13] Janssens, J.H.M., Huszár, F., Postma, E.O. and van den Herik, H.J., 2012. Stochastic outlier selection. Technical report TiCC TR 2012-001, Tilburg University, Tilburg Center for Cognition and Communication, Tilburg, The Netherlands.
[14] Kingma, D.P. and Welling, M., 2013. Auto-encoding variational bayes. arXiv preprint arXiv:1312.6114.
[15] (1, 2) Kriegel, H.P. and Zimek, A., 2008, August. Angle-based outlier detection in high-dimensional data. In KDD '08, pp. 444-452. ACM.
[16] Kriegel, H.P., Kröger, P., Schubert, E. and Zimek, A., 2009, April. Outlier detection in axis-parallel subspaces of high dimensional data. In Pacific-Asia Conference on Knowledge Discovery and Data Mining, pp. 831-838. Springer, Berlin, Heidelberg.
[17] (1, 2) Lazarevic, A. and Kumar, V., 2005, August. Feature bagging for outlier detection. In KDD '05. 2005.
[18] Li, D., Chen, D., Jin, B., Shi, L., Goh, J. and Ng, S.K., 2019, September. MAD-GAN: Multivariate anomaly detection for time series data with generative adversarial networks. In International Conference on Artificial Neural Networks (pp. 703-716). Springer, Cham.
[19] Li, Z., Zhao, Y., Botta, N., Ionescu, C. and Hu, X. COPOD: Copula-Based Outlier Detection. IEEE International Conference on Data Mining (ICDM), 2020.
[20] Liu, F.T., Ting, K.M. and Zhou, Z.H., 2008, December. Isolation forest. In International Conference on Data Mining, pp. 413-422. IEEE.
[21] (1, 2) Liu, Y., Li, Z., Zhou, C., Jiang, Y., Sun, J., Wang, M. and He, X., 2019. Generative adversarial active learning for unsupervised outlier detection. IEEE Transactions on Knowledge and Data Engineering.
[22] Papadimitriou, S., Kitagawa, H., Gibbons, P.B. and Faloutsos, C., 2003, March. LOCI: Fast outlier detection using the local correlation integral. In ICDE '03, pp. 315-326. IEEE.
[23] (1, 2) Pevný, T., 2016. Loda: Lightweight on-line detector of anomalies. Machine Learning, 102(2), pp.275-304.
[24] Ramaswamy, S., Rastogi, R. and Shim, K., 2000, May. Efficient algorithms for mining outliers from large data sets. ACM Sigmod Record, 29(2), pp. 427-438.
[25] Rousseeuw, P.J. and Driessen, K.V., 1999. A fast algorithm for the minimum covariance determinant estimator. Technometrics, 41(3), pp.212-223.
[26] Scholkopf, B., Platt, J.C., Shawe-Taylor, J., Smola, A.J. and Williamson, R.C., 2001. Estimating the support of a high-dimensional distribution. Neural Computation, 13(7), pp.1443-1471.
[27] Shyu, M.L., Chen, S.C., Sarinnapakorn, K. and Chang, L., 2003. A novel anomaly detection scheme based on principal component classifier. MIAMI UNIV CORAL GABLES FL DEPT OF ELECTRICAL AND COMPUTER ENGINEERING.
[28] Tang, J., Chen, Z., Fu, A.W.C. and Cheung, D.W., 2002, May. Enhancing effectiveness of outlier detections for low density patterns. In Pacific-Asia Conference on Knowledge Discovery and Data Mining, pp. 535-548. Springer, Berlin, Heidelberg.
[29] Wang, X., Du, Y., Lin, S., Cui, P., Shen, Y. and Yang, Y., 2019. adVAE: A self-adversarial variational autoencoder with Gaussian anomaly prior knowledge for anomaly detection. Knowledge-Based Systems.
[30] (1, 2) Zhao, Y. and Hryniewicki, M.K. XGBOD: Improving Supervised Outlier Detection with Unsupervised Representation Learning. IEEE International Joint Conference on Neural Networks, 2018.
[31] (1, 2, 3) Zhao, Y., Nasrullah, Z., Hryniewicki, M.K. and Li, Z., 2019, May. LSCP: Locally selective combination in parallel outlier ensembles. In Proceedings of the 2019 SIAM International Conference on Data Mining (SDM), pp. 585-593. Society for Industrial and Applied Mathematics.
Comments
  • pyod fails to install using pip

    pyod fails to install using pip

    When attempting to install without nose, I receive the following error:

    (PyVi) Michael:PyVi michael$ pip install pyod
    Collecting pyod==0.5.0 (from -r requirements.txt (line 18))
      Using cached https://files.pythonhosted.org/packages/c9/8c/6774fa2e7ae6fe9c2c648114d15ba584f950002377480e14183a0999af30/pyod-0.5.0.tar.gz
        Complete output from command python setup.py egg_info:
        Traceback (most recent call last):
          File "<string>", line 1, in <module>
          File "/private/var/folders/j4/_68f6f3j4d51_2smq2mh5hyh0000gn/T/pip-install-gjdzzane/pyod/setup.py", line 2, in <module>
            from pyod import __version__
          File "/private/var/folders/j4/_68f6f3j4d51_2smq2mh5hyh0000gn/T/pip-install-gjdzzane/pyod/pyod/__init__.py", line 4, in <module>
            from . import models
          File "/private/var/folders/j4/_68f6f3j4d51_2smq2mh5hyh0000gn/T/pip-install-gjdzzane/pyod/pyod/models/__init__.py", line 2, in <module>
            from .abod import ABOD
          File "/private/var/folders/j4/_68f6f3j4d51_2smq2mh5hyh0000gn/T/pip-install-gjdzzane/pyod/pyod/models/abod.py", line 17, in <module>
            from .base import BaseDetector
          File "/private/var/folders/j4/_68f6f3j4d51_2smq2mh5hyh0000gn/T/pip-install-gjdzzane/pyod/pyod/models/base.py", line 27, in <module>
            from ..utils.utility import precision_n_scores
          File "/private/var/folders/j4/_68f6f3j4d51_2smq2mh5hyh0000gn/T/pip-install-gjdzzane/pyod/pyod/utils/__init__.py", line 2, in <module>
            from .utility import check_parameter
          File "/private/var/folders/j4/_68f6f3j4d51_2smq2mh5hyh0000gn/T/pip-install-gjdzzane/pyod/pyod/utils/utility.py", line 18, in <module>
            from sklearn.utils.testing import assert_equal
          File "/Users/michael/anaconda3/envs/PyVi/lib/python3.6/site-packages/sklearn/utils/testing.py", line 49, in <module>
            from nose.tools import raises
        ModuleNotFoundError: No module named 'nose'
        
        ----------------------------------------
    Command "python setup.py egg_info" failed with error code 1 in /private/var/folders/j4/_68f6f3j4d51_2smq2mh5hyh0000gn/T/pip-install-gjdzzane/pyod/
    
    bug 
    opened by mdlockyer 18
  • LUNAR

    LUNAR

    All Submissions Basics:

    • [ ] Have you followed the guidelines in our Contributing document?
    • [ ] Have you checked to ensure there aren't other open Pull Requests for the same update/change?
    • [ ] Have you checked all Issues to tie the PR to a specific one?

    All Submissions Cores:

    • [ ] Have you added an explanation of what your changes do and why you'd like us to include them?
    • [ ] Have you written new tests for your core changes, as applicable?
    • [ ] Have you successfully ran tests with your changes locally?
    • [ ] Does your submission pass tests, including CircleCI, Travis CI, and AppVeyor?
    • [ ] Does your submission have appropriate code coverage? The cutoff threshold is 95% by Coversall.

    New Model Submissions:

    • [ ] Have you created a .py in ~/pyod/models/?
    • [ ] Have you created a _example.py in ~/examples/?
    • [ ] Have you created a test_.py in ~/pyod/test/?
    • [ ] Have you lint your code locally prior to submission?
    opened by agoodge 17
  • KNN Mahalanobis distance error

    KNN Mahalanobis distance error

    Hi,

    When I use the Mahalanobis metric for KNN I always get the error "Must provide either V or VI for Mahalanobis distance" even when I provide V with metric_params. The same request works with sklearn.neighbors.

    
    from pyod.models.knn import KNN  
    from pyod.utils.data import generate_data
    from sklearn.neighbors import NearestNeighbors
    import numpy as np
    
    contamination = 0.1  
    n_train = 200  
    n_test = 100 
    
    X_train, y_train, X_test, y_test = generate_data(n_train=n_train, n_test=n_test, contamination=contamination)
    
    #Doesn't work (Must provide either V or VI for Mahalanobis distance)
    clf = KNN(algorithm='brute', metric='mahalanobis', metric_params={'V': np.cov(X_train)})
    clf.fit(X_train)
    
    #Works
    nn = NearestNeighbors(algorithm='brute', metric='mahalanobis', metric_params={'V': np.cov(X_train)})
    nn.fit(X_train)
    
    bug 
    opened by hanshupe 12
  • COF and SOD huge bugs?

    COF and SOD huge bugs?

    Hi all. Something is happening that I cannot understand, I'm doing hyperparameter tuning to all proximity based algorithms with RandomSearchCV form sklearn and only COF and SOD have problems. What is happening is the following: the constructor parameters are all None even though I'm passing values to it. I tried to change the code of SOD and hardcoded the values of the constructor and I'm still getting NoneType. Please help.

    opened by dcabanas 11
  • COPOD Explainability on unseen data

    COPOD Explainability on unseen data

    COPOD explain_outlier() function works only for a given data point within the dataset. Is there any approach for explainability on unseen data( data on which model has not been trained) ?

    opened by thewall27 10
  • outlier score highly correlated to over distance to points of origin

    outlier score highly correlated to over distance to points of origin

    I calculated the distance of each data points to origins at 0, by use 'np.linalg.norm(x)', while x is just one multi-variate sample, then normalize all these values to 0-1, I called this 'global_score'. When I compare the global score to scores from different methods, it turns out it's highly correlated (0.99) with PCA, autoencoder, CBLOF, KNN. So it seems all these methods are just calculating the overall distance of the samples, instead of anomalies from multiple clusters. I was very troubled by this fact and hope you can confirm whether this is true and if it is, what's the reason for this.

    Thanks

    opened by flycloudking 10
  • R-graph method implemented

    R-graph method implemented

    R-graph

    paper: https://openaccess.thecvf.com/content_cvpr_2017/papers/You_Provable_Self-Representation_Based_CVPR_2017_paper.pdf

    All Submissions Basics:

    • [x] Have you followed the guidelines in our Contributing document?
    • [x] Have you checked to ensure there aren't other open Pull Requests for the same update/change?
    • [x] Have you checked all Issues to tie the PR to a specific one?

    All Submissions Cores:

    • [x] Have you added an explanation of what your changes do and why you'd like us to include them?
    • [x] Have you written new tests for your core changes, as applicable?
    • [x] Have you successfully ran tests with your changes locally?
    • [x] Does your submission pass tests, including CircleCI, Travis CI, and AppVeyor?
    • [ ] Does your submission have appropriate code coverage? The cutoff threshold is 95% by Coversall.

    New Model Submissions:

    • [x] Have you created a .py in ~/pyod/models/?
    • [x] Have you created a _example.py in ~/examples/?
    • [x] Have you created a test_.py in ~/pyod/test/?
    • [x] Have you lint your code locally prior to submission?
    opened by mbongaerts 9
  • added functionality for scoring the individual features for the COPOD…

    added functionality for scoring the individual features for the COPOD…

    … algorithm in copod.py. This includes the single threaded and multi-threaded implementation.

    This should also resolve the issue https://github.com/yzhao062/pyod/issues/308

    This is my first pull-request in a public repo, so please let me know whether I have included enough information.

    All Submissions Basics:

    • [x] Have you followed the guidelines in our Contributing document?
    • [x] Have you checked to ensure there aren't other open Pull Requests for the same update/change?
    • [x] Have you checked all Issues to tie the PR to a specific one?

    All Submissions Cores:

    • [x] Have you added an explanation of what your changes do and why you'd like us to include them?
    • [x] Have you written new tests for your core changes, as applicable?
    • [x] Have you successfully ran tests with your changes locally?
    • [x] Does your submission pass tests, including CircleCI, Travis CI, and AppVeyor?
    • [x] Does your submission have appropriate code coverage? The cutoff threshold is 95% by Coversall.
    opened by psmgeelen 9
  • Wrong Label  on method SOGAAL and MOGAAL

    Wrong Label on method SOGAAL and MOGAAL

    opened by luisfelipe18 9
  • COF Algorithm

    COF Algorithm

    All Submissions Basics:

    Closes #7

    • [x] Have you followed the guidelines in our Contributing document?
    • [x] Have you checked to ensure there aren't other open Pull Requests for the same update/change?
    • [x] Have you checked all Issues to tie the PR to a specific one?

    All Submissions Cores:

    • [x] Have you added an explanation of what your changes do and why you'd like us to include them?
    • [x] Have you written new tests for your core changes, as applicable?
    • [x] Have you successfully ran tests with your changes locally?
    • [x] Does your submission pass tests, including CircleCI, Travis CI, and AppVeyor?
    • [x] Does your submission have appropriate code coverage? The cutoff threshold is 95% by Coversall.

    New Model Submissions:

    • [x] Have you created a .py in ~/pyod/models/?
    • [x] Have you created a _example.py in ~/examples/?
    • [x] Have you created a test_.py in ~/pyod/test/?
    • [x] Have you lint your code locally prior to submission?
    opened by John-Almardeny 9
  • SOD implementation

    SOD implementation

    All Submissions Basics:

    #60

    • [x] Have you followed the guidelines in our Contributing document?
    • [x] Have you checked to ensure there aren't other open Pull Requests for the same update/change?
    • [x] Have you checked all Issues to tie the PR to a specific one?

    All Submissions Cores:

    • [x] Have you added an explanation of what your changes do and why you'd like us to include them?
    • [x] Have you written new tests for your core changes, as applicable?
    • [x] Have you successfully ran tests with your changes locally?

    New Model Submissions:

    • [x] Have you created a .py in ~/pyod/models/?
    • [x] Have you created a test_.py in ~/pyod/test/?
    • [x] Have you lint your code locally prior to submission?
    opened by John-Almardeny 9
  • Results from LODA are not reproducible

    Results from LODA are not reproducible

    The function uses numpy.random.randn to sample the random cuts but it does not accept a random_state parameter like most of the other non-deterministic algorithms.

    opened by kgmccann 0
  • Train/Test split or not?

    Train/Test split or not?

    Hi, I have a conceptual question wether I should split my dataset in train/test or not. Given the fact that my dataset has no labels, does it make any sense to split in the first place? I mean, I could simply do something like clf.fit(data) and then get the resulting labels as clf.labels_ and since I train in an unsupervised manner the classifier should not overfit in any way, right?

    opened by lorisgir 1
  • Implementing ECDF Estimator and deleting Statsmodels dependency

    Implementing ECDF Estimator and deleting Statsmodels dependency

    Hey everyone,

    as stated in #466 and in #453, one can speed up the empirical cumulative density function in comparison to the Statsmodels ECDF functionality.

    This also makes the dependency on statsmodels obsolete and this pull request deletes the dependency.

    In this pull request the following things are done:

    1. Implementing an standalone ecdf estimator in pyod/utils/stat_models.py
    2. Writing a test that compares own implementation to statsmodels implementation on several random matrices (so in the requirements_ci.txt statsmodels is still a requirement)
    3. Deleting and replacing the functionality in ECOD and COPOD (the only places this dependency has been used

    The implementation is now faster (by 30-60%), as we will only use the ecdf for the data we estimate it from. Please get back to me if a further explanation of why exactly is necessary. I will gladly elaborate more.

    Since not anyone might want to fully submerge in the topic, I kept the statsmodels dependency in the test and compare this implementation to the statsmodels function on several random matrices. One could see that as prove that it works.

    Thanks in advance! :-)


    All Submissions Basics:

    • [x] Have you followed the guidelines in our Contributing document?
    • [x] Have you checked to ensure there aren't other open Pull Requests for the same update/change?
    • [x] Have you checked all Issues to tie the PR to a specific one?

    All Submissions Cores:

    • [x] Have you added an explanation of what your changes do and why you'd like us to include them?
    • [x] Have you written new tests for your core changes, as applicable?
    • [x] Have you successfully ran tests with your changes locally?
    • [x] Does your submission pass tests, including CircleCI, Travis CI, and AppVeyor?
    • [x] Does your submission have appropriate code coverage? The cutoff threshold is 95% by Coversall.
    opened by Lucew 3
  • Statsmodels package is only used for one function

    Statsmodels package is only used for one function

    Hey,

    as mentioned in #453 there is a possibility of reimplementing the ECDF estimator from statsmodels in a small function that also runs faster (50-60%) as we are doing the estimation in place and do not use it further.

    As you can see from this search, the statsmodels package is only ever used for its ecdf estimator.

    Once the tests are through, I will open a pull request for the updated version which does not require statsmodels any more.

    Thanks in advance Lucas

    opened by Lucew 1
  • Initializing train weights from a saved model and continuing training

    Initializing train weights from a saved model and continuing training

    I've trained a multi-class AutoEncoder model using pyod library and saved it as a pickle file. I would like to use the weights from this single, multi-class model, to initialize training of single class AutoEncoder models. How can the training weights be saved, reloaded and how can the training be resumed through PyOD?

    opened by alucic2 0
  • Is 4D (2D) geospatial data anomaly detection supported?

    Is 4D (2D) geospatial data anomaly detection supported?

    I just discovered this package and I was wondering whether is possible to perform anomaly detection of geospatial data, for example data coming from a network of weather stations which all measure air temperature.

    In the past we used either a simple statistical model, that checks if a certain station measured value falls in the IQR of the neighbouring stations, or a supervised model (using SVM) trained with values from neighbouring stations and models. I was wondering if it would be possible to apply one of the model of pyod on this kind of data to identify outliers.

    The data can be thought as 4D since we have variable[id_station, time, latitude, longitude], but in practice we always apply the model in 2D as we compare the value of a station to its neighbours. Still, it would be good to have a generalized model that can consider all dimensions at the same time.

    Thanks for any info :)

    opened by guidocioni 1
Releases(v1.0.7)
  • v1.0.7(Dec 16, 2022)

  • v1.0.6(Oct 24, 2022)

  • v1.0.5(Sep 15, 2022)

    v<1.0.5>, <07/29/2022> -- Import optimization. v<1.0.5>, <08/27/2022> -- Code optimization. v<1.0.5>, <09/14/2022> -- Add ALAD.

    AnoGAN is too slow to run. Consider a removal or refactoring.

    Source code(tar.gz)
    Source code(zip)
  • v1.0.4(Jul 29, 2022)

    v<1.0.4>, <07/29/2022> -- General improvement of code quality and test coverage. v<1.0.4>, <07/29/2022> -- Add LUNAR (#413). v<1.0.4>, <07/29/2022> -- Add LUNAR (#415).

    Source code(tar.gz)
    Source code(zip)
  • v1.0.3(Jul 5, 2022)

  • v1.0.2(Jun 23, 2022)

  • v1.0.1(May 13, 2022)

    v<1.0.1>, <04/27/2022> -- Add INNE (#396). v<1.0.1>, <05/13/2022> -- Urgent fix for iForest (#406).

    Urgent fix for

    File "lib/python3.10/site-packages/pyod/models/iforest.py", line 13, in from sklearn.utils.fixes import _joblib_parallel_args ImportError: cannot import name '_joblib_parallel_args' from 'sklearn.utils.fixes' (/lib/python3.10/site-packages/sklearn/utils/fixes.py)

    Source code(tar.gz)
    Source code(zip)
  • v1.0.0(Apr 23, 2022)

    v<1.0.0>, <04/04/2022> -- Add KDE detector (#382). v<1.0.0>, <04/06/2022> -- Disable the bias term in DeepSVDD (#385). v<1.0.0>, <04/21/2022> -- Fix a set of issues of autoencoders (#313, #390, #391). v<1.0.0>, <04/23/2022> -- Add sampling based detector (#384).

    Source code(tar.gz)
    Source code(zip)
  • v0.9.9(Apr 4, 2022)

    v<0.9.9>, <03/20/2022> -- Renovate documentation. v<0.9.9>, <03/23/2022> -- Add example for COPOD interpretability. v<0.9.9>, <03/23/2022> -- Add outlier detection by Cook’s distances. v<0.9.9>, <04/04/2022> -- Various community fix.

    Source code(tar.gz)
    Source code(zip)
  • v0.9.8(Mar 5, 2022)

    v<0.9.8>, <02/23/2022> -- Add Feature Importance for iForest. v<0.9.8>, <03/05/2022> -- Update ECOD (TKDE 2022).

    See the usage of feature importance of iforest in https://github.com/yzhao062/pyod/blob/master/examples/iforest_example.py See the new ECOD detector in https://github.com/yzhao062/pyod/blob/master/examples/ecod_example.py

    Source code(tar.gz)
    Source code(zip)
  • v0.9.7(Jan 4, 2022)

  • v0.9.6(Dec 25, 2021)

    Happy holiday!

    v<0.9.6>, <11/05/2021> -- Minor bug fix for COPOD. v<0.9.6>, <12/24/2021> -- Bug fix for MAD (#358). v<0.9.6>, <12/24/2021> -- Bug fix for COPOD plotting (#337). v<0.9.6>, <12/24/2021> -- Model persistence doc improvement.

    Source code(tar.gz)
    Source code(zip)
  • v0.9.5(Oct 27, 2021)

    In this important update, we introduce multiple important features:

    v<0.9.5>, <09/10/2021> -- Update to GitHub Action for autotest! v<0.9.5>, <09/10/2021> -- Various documentation fix. v<0.9.5>, <10/26/2021> -- MAD fix #318. v<0.9.5>, <10/26/2021> -- Automatic histogram size selection for HBOS and LODA #321. v<0.9.5>, <10/27/2021> -- Add prediction confidence #349.

    Source code(tar.gz)
    Source code(zip)
  • v0.9.4(Oct 1, 2021)

  • V0.9.3(Aug 29, 2021)

    v<0.9.3>, <08/19/2021> -- Expand test to Python 3.8 and 3.9. v<0.9.3>, <08/29/2021> -- Add SUOD.

    In this version, SUOD is integrated into PyOD, and fast training/prediction is therefore possible. See https://github.com/yzhao062/pyod/blob/master/examples/suod_example.py for more information.

    Source code(tar.gz)
    Source code(zip)
  • V0.9.2(Aug 15, 2021)

    This release mainly features a new deep model, DeepSVDD, in PyOD.

    v<0.9.2>, <08/15/2021> -- Fix ROD. v<0.9.2>, <08/15/2021> -- Add DeepSVDD (implemented by Rafał Bodziony).

    Source code(tar.gz)
    Source code(zip)
  • V0.9.1(Aug 14, 2021)

    This release incorporates a few bug fixes and enhancement.

    v<0.9.1>, <07/12/2021> -- Improve COPOD by dropping pandas dependency. v<0.9.1>, <07/19/2021> -- Add memory efficienct COF. v<0.9.1>, <08/01/2021> -- Fix Pytorch Dataset issue. v<0.9.1>, <08/14/2021> -- Synchronize scikit-learn LOF parameters.

    Source code(tar.gz)
    Source code(zip)
  • V0.9.0(Jul 7, 2021)

    v<0.9.0>, <06/20/2021> -- Add clone test for models. v<0.9.0>, <07/03/2021> -- ROD hot fix (#316). v<0.9.0>, <07/04/2021> -- Improve COPOD plot with colunms parameter.

    Source code(tar.gz)
    Source code(zip)
  • V0.8.9(Jun 12, 2021)

    v<0.8.9>, <05/17/2021> -- Turn on test for Python 3.5-3.8. v<0.8.9>, <06/10/2021> -- Add PyTorch AutoEncoder v<0.8.9>, <06/11/2021> -- Fix LMDD parameter (#307)

    Source code(tar.gz)
    Source code(zip)
  • V0.8.8(Apr 27, 2021)

    v<0.8.7>, <01/16/2021> -- Add ROD. v<0.8.7>, <02/18/2021> -- Dependency optimization. v<0.8.8>, <04/08/2021> -- COPOD optimization. v<0.8.8>, <04/08/2021> -- Add parallelization for COPOD. v<0.8.8>, <04/26/2021> -- fix XGBOD issue with xgboost 1.4.

    Source code(tar.gz)
    Source code(zip)
  • V0.8.6(Jan 12, 2021)

    Most the changes are bug-fix and performance enhancement.

    v<0.8.5>, <12/22/2020> -- Refactor test from sklearn to numpy v<0.8.5>, <12/22/2020> -- Refactor COPOD for consistency v<0.8.5>, <12/22/2020> -- Refactor due to sklearn 0.24 (issue #265) v<0.8.6>, <01/09/2021> -- Improve COF speed (PR #159) v<0.8.6>, <01/10/2021> -- Fix LMDD parameter inconsistenct. v<0.8.6>, <01/12/2021> -- Add option to specify feature names in copod explanation plot (PR #261).

    Source code(tar.gz)
    Source code(zip)
  • V0.8.4(Nov 17, 2020)

    v<0.8.4>, <10/13/2020> -- Fix COPOD code inconsistency (issue #239). v<0.8.4>, <10/24/2020> -- Fix LSCP minor bug (issue #180). v<0.8.4>, <11/02/2020> -- Add support for Tensorflow 2. v<0.8.4>, <11/12/2020> -- Merge PR #!02 for categortical data generation.

    Source code(tar.gz)
    Source code(zip)
  • V0.8.3(Sep 19, 2020)

    v<0.8.2>, <07/04/2020> -- Add a set of utility functions. v<0.8.2>, <08/30/2020> -- Add COPOD and MAD algorithm. v<0.8.3>, <09/01/2020> -- Make decision score consistent. v<0.8.3>, <09/19/2020> -- Add model persistence documentation (save and load).

    Short summary, we add two new algorithms COPOD and MAD. Moreover, we now provide a short example regrading model save and load.

    Source code(tar.gz)
    Source code(zip)
  • V0.8.1(Jul 1, 2020)

    This is a stable release. Python 2 support will be dropped in the next version.

    v<0.8.0>, <05/18/2020> -- Update test frameworks by reflecting sklearn change. v<0.8.1>, <07/11/2020> -- Bug fix and documentation update

    Source code(tar.gz)
    Source code(zip)
  • V0.7.9(May 4, 2020)

    v<0.7.8.1>, <04/07/2020> -- Hot fix for SOD. v<0.7.8.2>, <04/14/2020> -- Bug Fix for LODA. v<0.7.9>, <04/20/2020> -- Relax the number of n_neighbors in ABOD and COF. v<0.7.9>, <05/01/2020> -- Extend Vanilla VAE to Beta VAE by Dr Andrij Vasylenko. v<0.7.9>, <05/01/2020> -- Add Conda Badge.

    Source code(tar.gz)
    Source code(zip)
  • V0.7.8(Mar 17, 2020)

    Various changes have been made in these two releases:

    v<0.7.7>, <12/21/2019> -- Refactor code for combination simplification on combo. v<0.7.7>, <12/21/2019> -- Extended combination methods by median and majority vote. v<0.7.7>, <12/22/2019> -- Code optimization and documentation update. v<0.7.7>, <12/22/2019> -- Enable continuous integration for Python 3.7. v<0.7.7.1>, <12/29/2019> -- Minor update for SUOD and warning fixes. v<0.7.8>, <01/05/2019> -- Documentation update. v<0.7.8>, <01/30/2019> -- Bug fix for kNN (#158). v<0.7.8>, <03/14/2020> -- Add VAE (implemented by Dr Andrij Vasylenko). v<0.7.8>, <03/17/2020> -- Add LODA (adapted from tilitools).

    The major improvement includes the addition of VAE and LODA, along with multiple minor fixes.

    Source code(tar.gz)
    Source code(zip)
  • v0.7.6(Dec 19, 2019)

    v<0.7.6>, <12/18/2019> -- Update Isolation Forest and LOF to be consistent with sklearn 0.22. v<0.7.6>, <12/18/2019> -- Add Deviation-based Outlier Detection (LMDD).

    The major update is about the compatibility fix for the newly released sklearn 0.22, and LMDD module built by @John-Almardeny

    Source code(tar.gz)
    Source code(zip)
  • v0.7.5(Oct 13, 2019)

    This minor update includes the following items (most of them are bug fix and documentation improvement):

    v<0.7.5>, <09/24/2019> -- Fix one dimensional data error in LSCP. v<0.7.5>, <10/13/2019> -- Document kNN and Isolation Forest's incoming changes. v<0.7.5>, <10/13/2019> -- SOD optimization (created by John-Almardeny in June). v<0.7.5>, <10/13/2019> -- Documentation updates.

    Source code(tar.gz)
    Source code(zip)
  • v0.7.0(Apr 30, 2019)

    Multiple bug fixes are introduced:

    • Fix issue in CBLOF for n_cluster discrepancy.
    • Fix issue #23 that kNN fails with Mahalanobis distance.
    • Fix for sklearn new behaviour FutureWarning.

    Improved documentation:

    • Update docs with media coverage.
    • Major documentation update for JMLR.
    • Add License info and show support to 996.ICU!
    • Redesign ReadMe for clarity.

    Deprecate two key APIs: fit_predict and fit_predict_score.

    Add some new utility functions, e.g., generate_data_clusters.

    Source code(tar.gz)
    Source code(zip)
  • v.0.6.7(Jan 29, 2019)

    This release further improves package stability and comprehensiveness.

    A set of new models are added:

    • LSCP: Locally Selective Combination of Parallel Outlier Ensembles
    • XGBOD: Extreme Boosting Based Outlier Detection (Supervised)
    • SO_GAAL: Single-Objective Generative Adversarial Active Learning
    • MO_GAAL: Multiple-Objective Generative Adversarial Active Learning

    Bug fixes are also included, e.g., CBLOF.

    Last but not least, a few functions/models are redesigned/optimized:

    • Docstring is refactored to numpydoc
    • LOCI is optimized with numba
    • visualize function is redesigned
    Source code(tar.gz)
    Source code(zip)
Owner
Yue Zhao
Ph.D. Student @ CMU. ML Systems (MLSys) | AutoML | Anomaly/Outlier Detection | Information Systems Twitter@ yzhao062
Yue Zhao
A Python Library for Graph Outlier Detection (Anomaly Detection)

PyGOD is a Python library for graph outlier detection (anomaly detection). This exciting yet challenging field has many key applications, e.g., detect

PyGOD Team 757 Jan 4, 2023
Deep Anomaly Detection with Outlier Exposure (ICLR 2019)

Outlier Exposure This repository contains the essential code for the paper Deep Anomaly Detection with Outlier Exposure (ICLR 2019). Requires Python 3

Dan Hendrycks 464 Dec 27, 2022
Anomaly Transformer: Time Series Anomaly Detection with Association Discrepancy" (ICLR 2022 Spotlight)

About Code release for Anomaly Transformer: Time Series Anomaly Detection with Association Discrepancy (ICLR 2022 Spotlight)

THUML @ Tsinghua University 221 Dec 31, 2022
SSD: A Unified Framework for Self-Supervised Outlier Detection [ICLR 2021]

SSD: A Unified Framework for Self-Supervised Outlier Detection [ICLR 2021] Pdf: https://openreview.net/forum?id=v5gjXpmR8J Code for our ICLR 2021 pape

Princeton INSPIRE Research Group 113 Nov 27, 2022
Outlier Exposure with Confidence Control for Out-of-Distribution Detection

OOD-detection-using-OECC This repository contains the essential code for the paper Outlier Exposure with Confidence Control for Out-of-Distribution De

Nazim Shaikh 64 Nov 2, 2022
(Py)TOD: Tensor-based Outlier Detection, A General GPU-Accelerated Framework

(Py)TOD: Tensor-based Outlier Detection, A General GPU-Accelerated Framework Background: Outlier detection (OD) is a key data mining task for identify

Yue Zhao 127 Jan 5, 2023
Official Implementation of "LUNAR: Unifying Local Outlier Detection Methods via Graph Neural Networks"

LUNAR Official Implementation of "LUNAR: Unifying Local Outlier Detection Methods via Graph Neural Networks" Adam Goodge, Bryan Hooi, Ng See Kiong and

Adam Goodge 25 Dec 28, 2022
A gesture recognition system powered by OpenPose, k-nearest neighbours, and local outlier factor.

OpenHands OpenHands is a gesture recognition system powered by OpenPose, k-nearest neighbours, and local outlier factor. Currently the system can iden

Paul Treanor 12 Jan 10, 2022
Certifiable Outlier-Robust Geometric Perception

Certifiable Outlier-Robust Geometric Perception About This repository holds the implementation for certifiably solving outlier-robust geometric percep

null 83 Dec 31, 2022
VOS: Learning What You Don’t Know by Virtual Outlier Synthesis

VOS This is the source code accompanying the paper VOS: Learning What You Don’t

null 248 Dec 25, 2022
Demo project for real time anomaly detection using kafka and python

kafkaml-anomaly-detection Project for real time anomaly detection using kafka and python It's assumed that zookeeper and kafka are running in the loca

Rodrigo Arenas 36 Dec 12, 2022
LaneDet is an open source lane detection toolbox based on PyTorch that aims to pull together a wide variety of state-of-the-art lane detection models

LaneDet is an open source lane detection toolbox based on PyTorch that aims to pull together a wide variety of state-of-the-art lane detection models. Developers can reproduce these SOTA methods and build their own methods.

TuZheng 405 Jan 4, 2023
Real-world Anomaly Detection in Surveillance Videos- pytorch Re-implementation

Real world Anomaly Detection in Surveillance Videos : Pytorch RE-Implementation This repository is a re-implementation of "Real-world Anomaly Detectio

seominseok 62 Dec 8, 2022
Paper list of log-based anomaly detection

Paper list of log-based anomaly detection

Weibin Meng 411 Dec 5, 2022
This is an unofficial implementation of the paper “Student-Teacher Feature Pyramid Matching for Unsupervised Anomaly Detection”.

This is an unofficial implementation of the paper “Student-Teacher Feature Pyramid Matching for Unsupervised Anomaly Detection”.

haifeng xia 32 Oct 26, 2022
Unofficial implementation of PatchCore anomaly detection

PatchCore anomaly detection Unofficial implementation of PatchCore(new SOTA) anomaly detection model Original Paper : Towards Total Recall in Industri

Changwoo Ha 268 Dec 22, 2022
MemStream: Memory-Based Anomaly Detection in Multi-Aspect Streams with Concept Drift

MemStream Implementation of MemStream: Memory-Based Anomaly Detection in Multi-Aspect Streams with Concept Drift . Siddharth Bhatia, Arjit Jain, Shivi

Stream-AD 61 Dec 2, 2022
USAD - UnSupervised Anomaly Detection on multivariate time series

USAD - UnSupervised Anomaly Detection on multivariate time series Scripts and utility programs for implementing the USAD architecture. Implementation

null 116 Jan 4, 2023