reconstruction-based-fault-diagnosis
https://github.com/emuskardin/reconstruction-based-fault-diagnosis
Science Score: 26.0%
This score indicates how likely this project is to be science-related based on various indicators:
-
○CITATION.cff file
-
✓codemeta.json file
Found codemeta.json file -
✓.zenodo.json file
Found .zenodo.json file -
○DOI references
-
○Academic publication links
-
○Academic email domains
-
○Institutional organization owner
-
○JOSS paper metadata
-
○Scientific vocabulary similarity
Low similarity (11.0%) to scientific vocabulary
Repository
Basic Info
- Host: GitHub
- Owner: emuskardin
- Language: Python
- Default Branch: main
- Size: 55.6 MB
Statistics
- Stars: 1
- Watchers: 1
- Forks: 0
- Open Issues: 0
- Releases: 0
Metadata Files
README.md
Reconstruction-Based Fault Classification
This repository contains code required to participate in the LiU-ICE DeluXe Diagnosis Competition.
TLDR: use an ensemble of autoencoders to detect and isolate a fault in a cyber-physical system
Proposed method is system-agnostic, that it is doing not make any assumptions about the underlying system's dynamics, as long as there is a system simulation log per fault.
High-level overview
Training
- Scale the data using a scaler of your choice (we use Standard scaler)
- For each fault type train an autoencoder. You can vary the hyperparameters for each autoencoder, as long as they all use same scaled data.
- Compute reconstruction losses with trained autoencoder, and 98 percentile of reconstruction losses serves as an anomaly treshold (last step)
An advantage of this approach when compared to classification with a NN is that you might choose to train a custom autoencoder per fault type. This can be seen in our training setup, in which we varied the size and training process of the autoencoder based on the task: For more details about each model, check trained_models.
Diagnosis
- For each new sample, compute reconstruction losses with all autoencoders
- Fault is isolated with the smallest loss
- However, fault might also be of an unknown type. If the smallest reconstruction loss is above anomaly threshold for its autoencoder (98 percentile), treat the fault as "Unknown fault"
Structure and Results
Install:
commandline
pip install -r requirements.txt
train_aes.py is used for training of autoencoders for all faults. It also computes mean, stddev, and 98 percentiles of reconstruction losses and saves it into trained_models.
aebaseddiagnosis.py implements the competition interface.
evaluation.py evaluates the approach, and outputs following confusion matrix:
Category Other shows the classification rate of faults to unknown faults. Note that for other we do not have actual samples.
Time statistics: Average time 0.0011 Max time 0.0039 (Intel(R) Core(TM) Ultra 5 125U (14 CPUs), ~1.3GHz)
Owner
- Name: Edi Muškardin
- Login: emuskardin
- Kind: user
- Location: Silicon Austria Labs, Graz
- Company: Graz University of Technology
- Website: https://emuskardin.github.io/
- Repositories: 1
- Profile: https://github.com/emuskardin
PhD Student in Computer Science with focus on Active Automata Learning/ Formal Methods
GitHub Events
Total
- Push event: 2
- Public event: 1
Last Year
- Push event: 2
- Public event: 1