Vibration Anomaly Lab
I built a synthetic vibration generator and an anomaly-detection experiment with feature extraction and model evaluation. Scores fell when machines were kept separate between training and evaluation, exposing results inflated by data leakage.
The project
I built a vibration-data generator with machine-specific signatures and operating conditions, together with feature extraction and evaluation scripts. The experiment recreates a failure mode in which a model recognises familiar machines instead of learning to detect faults.
How it works
Keep machines separate
Synthetic vibration records are grouped by machine, keeping every record from the evaluation machine out of training.
Account for operating conditions
Healthy training records set the reference for adjusting operating-condition differences; the model then learns from the adjusted features.
Compare results by machine
Trial predictions are combined into a result for each unseen machine, then compared with results from a split that lets the same machines appear in training and evaluation.
I compared the same model with trials mixed across folds and with an entire machine held out. Operating-condition normalisation uses only healthy training data to fit its reference, and trial predictions are aggregated at machine level.
A separate verification script checks the package against the reference results. Repeated draws of the synthetic population test whether the findings persist when the machines change.
What the records show
Scores that were high with trials mixed across folds fell when machines were kept separate. The benefit of conditioning features also varied with the model and metric. The experiment puts the evaluation question first: what must remain unseen, and at what level is a decision made?
- Independent synthetic draws
- 30 seeds
- Mean machine F1: trial split → machine split
- 1.000 → 0.758
What this covers
These measurements describe behaviour on synthetic data; they do not estimate fault-detection performance on real equipment.
