1 School of Computer Science, Faculty of Sciences, Holon Institute of Technology (HIT), 52 Golomb St., Holon 5810201, Israel; alexanderap@hit.ac.il
2 Intelligent Systems, Afeka Academic College of Engineering, 218 Bnei Efraim St., Tel Aviv 6910717, Israel; apersteiny@afeka.ac.il
* Correspondence: apersteiny@afeka.ac.il
The Industrial Internet of Things (IIoT) instruments physical processes with networked sensors and controllers that stream multivariate telemetry, and monitoring this telemetry for faults and cyberattacks is essential to reliability and safety. Machine learning is the natural tool, but failures are rare and seldom labeled, so supervised detection is impractical: a detector must learn normal behavior from unlabeled telemetry alone. In cyber-physical systems this normal law is structured: a union of many imbalanced operating regimes shaped by physics and control, formalized as ten Massive, Implicit, Imbalanced Multimodality (MIIM) assumptions. That structure exposes a blind spot of the dominant approach: a fault can be individually normal on every sensor and reconstruct accurately, yet improbable under normal joint operation, so reconstruction-based detectors measure reachability rather than probability and miss it. Our detector, LatAD, learns a latent Gaussian-mixture clustering of regimes (VaDE), scores anomalies by density, and factorizes that density over correlation-community subsystems combined by a cohesion-weighted statistic. On three real IIoT testbeds LatAD attains the best AUROC (WADI 0.862, HAI 0.949, SWaT 0.993) and leads the difficult subset of all three, notably on HAI (0.849; a significant +0.09, 95% CI [0.046, 0.160]); USAD and TranAD fall to 0.30–0.48 on these reconstructable-but-improbable faults.
Keywords: Industrial Internet of Things (IIoT); IoT anomaly detection; cyber-physical systems; industrial control systems; anomaly detection; unsupervised learning; sensor telemetry; fault detection
A cyber-physical system can be faulty even when every sensor reads within its normal range and a deep model reconstructs the full sensor vector accurately. The reason is that reconstruction and normality answer different questions: reconstruction asks whether a state can be reproduced, whereas detection needs to know whether normal operation is ever likely to occupy it. In a tightly coupled plant, vehicle, or machine, normal behavior is spread across many operating regimes shaped by physics, actuator limits, and control logic, so a correlation break, or a state that falls between two legitimate regimes, can be perfectly reconstructable yet deeply improbable. These are the faults that matter most for condition monitoring and predictive maintenance: early warnings that stay inside familiar sensor ranges while violating the joint structure of normal operation. This paper detects them by modeling that joint structure, scoring probability rather than reconstruction, and, because faults are as local as the physics that produces them, factorizing that probability over the plant’s own subsystems.
A modern CPS (a water-treatment plant, an industrial control loop, a rotating machine) couples hundreds of networked sensors, controllers, and actuators into a unit that continuously senses its own state and acts on it: the sensing-and-actuation fabric of the Industrial Internet of Things (IIoT). This complexity puts its faults beyond enumeration: no test campaign can sample every combination of component, control regime, and operating condition in which a fault can arise, and many faults develop slowly, as wear or drift with no obvious symptom, until they surface as unplanned downtime or a safety-critical failure. Because the faults cannot be specified in advance, they must be discovered from the system’s own behavior as it operates, the task of anomaly detection [1]. That behavior is richly observable: vibration, current, temperature, pressure, and position, together with internal control signals, stream continuously as IIoT telemetry and carry an early signature of almost any developing fault.
In an IIoT deployment this telemetry does not remain on the device: field sensors and programmable logic controllers feed edge gateways and SCADA historians that aggregate, window, and forward the multivariate stream, so unsupervised anomaly detection is the operative safeguard for IIoT reliability and security [2]. The stakes are cyber-physical: an anomalous window can indicate sensor degradation, actuator malfunction, a developing process fault, or a control-plane manipulation or intrusion, and because the digital and physical layers are coupled, a missed anomaly can propagate from a tampered setpoint into the physical process [3]. Labeled faults are precisely what an IIoT operator lacks: normal telemetry accumulates continuously across a fleet of devices and operating regimes, whereas each specific fault or attack is rare, diverse, and often system-specific, so learning the plant’s normal law from normal data alone is the practical route to detection at IIoT scale [4].
The task is often framed as characterizing the anomalies, but that framing is misleading. With a representative set of labeled faults the task would reduce to supervised classification; in practice genuine faults are rare and the few on record seldom span the ways a system can fail [5], so they cannot define the decision boundary, and they cannot even be spent reliably on model selection. The usable information lies on the other side of the boundary, in the normal data, which is abundant and rarely exploited in full. Modeling that normal law faithfully is therefore the hard part of the problem, and cyber-physical normal is a law of a particular kind: shaped by deterministic physics, hard actuator and setpoint limits, and engineered control, it is the union of many bounded, curved operating regimes, some common and many rare, each with legitimately low-density fringes, rather than a single statistical blob. A detector that mis-models this structure fails however it thresholds.
A fault is anything that leaves this union of normal regimes, and the operationally difficult ones stay inside the marginal envelope of every channel while breaking the joint structure: a correlation break, a between-regime pocket, a history-inconsistent state. These faults are invisible to any per-channel range rule, and, as we show, to a reconstruction residual as well, because the question is not whether a flexible decoder can reproduce the state but whether normal operation is likely to occupy it. Reconstruction measures reachability; detection needs probability.
Two obstacles have obscured this failure mode. The first is modeling. If normal is a union of many imbalanced regimes, a global anomaly model under-fits the regime structure, a single deep autoencoder alarms on rare-but-valid regimes (the trust-eroding false positive), and a reconstruction residual is blind to exactly the joint-structure faults that matter, because a flexible decoder reconstructs them faithfully.
The second is evaluation. The dominant metric in the literature, point-adjusted F1, inflates scores so severely that a random anomaly score can beat every published deep model [6, 7]; and even under raw metrics, public CPS benchmarks are dominated by anomalies that a one-line univariate rule already separates [8], so a high headline number certifies little. Progress on the faults that matter cannot be measured until the easy majority is separated from the discriminative minority.
This paper makes three contributions. (1) We state the structural assumptions of CPS normal data as an explicit list, A1–A10, abbreviated MIIM (Massive, Implicit, Imbalanced Multimodality), and tie each assumption to a concrete choice for modeling normal (§3). (2) We build LatAD, a detector whose whole design is modeling that normal law: a jointly learned latent with explicit Gaussian-mixture regime clustering (VaDE), scored in the latent by a mixture-density head and a rare-regime-safe nearest-component likelihood (§4). Its key mechanism is demoting reconstruction from the default score, since a flexible decoder reconstructs the hard faults faithfully; reconstruction re-enters only through an optional residual head, switched on by a gate that tests generalization on held-out normal data. Its headline realization factorizes this density over the plant’s own subsystems, recovered unsupervised as communities of the normal-data correlation graph, and combines the per-subsystem surprises by cohesion-weighted Higher Criticism, so a local fault that a single global density dilutes is concentrated instead (§4.4). (3) We evaluate under a fair protocol (raw point-wise metrics, difficulty stratification, train-normal-only calibration) on three real IIoT / industrial-control testbeds (WADI, HAI, SWaT), comparing against classical baselines and the deep detectors USAD and TranAD re-computed with the same raw metrics (§5–6). LatAD attains the best overall AUROC on every dataset and leads the difficult subset of all three, most decisively on HAI, where the difficult faults break joint structure, the deep detectors collapse to near chance, and LatAD’s margin is statistically significant.
Because aggregate benchmark scores are dominated by easy marginal excursions, the central test throughout is performance on the difficult subset, the anomalies a simple per-channel detector cannot separate, not the headline number. The study covers three datasets with a single trained configuration per dataset; AUROC is reported as a five-seed mean, and the best-F1 threshold is a test-swept oracle disclosed in §5.
Anomaly detection is the unsupervised or semi-supervised task of flagging departures from a model of normal behavior, adopted precisely because labeled anomalies are too scarce to train a classifier [1, 9, 5]. On time series it must additionally respect temporal and cross-channel dependence [10], and on cyber-physical and industrial control systems it underpins physics-aware intrusion and fault detection [11]. LatAD sits squarely in this line: unsupervised, trained on normal only, and specialised to the multimodal structure of cyber-physical normal behavior.
Anomaly and intrusion detection is a core reliability-and-security function of the Industrial Internet of Things, where networked sensing, actuation, and industrial processes are monitored continuously from streaming telemetry rather than from packet-level network traces alone [2, 3]. Because representative labeled faults and attacks are scarce and system-specific, the field leans on unsupervised, one-class, and normal-only models: deep autoencoders and related density models are trained on normal IoT telemetry and flag departures from it [4, 12], a setting LatAD shares. A parallel thread pushes detection to the network edge: moving inference onto gateways and industrial edge nodes reduces telemetry backhaul and enables local response, at the cost of compute, memory, and latency budgets that shape model design [13, 14, 15]. IIoT deployments are also heterogeneous and multimodal at fleet scale, with many devices, subsystems, and operating regimes whose distributional structure a single global model captures poorly [3]. LatAD addresses a complementary IIoT problem: detecting process-level anomalies in multivariate sensor and actuator telemetry when only normal operation is available for training, and doing so per physical subsystem rather than through one plant-wide score.
A line of critical work shows that the standard evaluation of time-series anomaly detection is unreliable. Kim et al. [6] demonstrate that the ubiquitous point-adjustment protocol (marking an entire ground-truth anomaly segment as detected if any single point in it is flagged) inflates F1 so drastically that a random anomaly score achieves higher point-adjusted F1 than every state-of-the-art model on SWaT and WADI. Garg et al. [7] independently reproduce this inflation and show that simple baselines (PCA, channel-wise autoencoders) beat elaborate deep models once metrics are made rigorous, and that deep methods often fail to detect even simple anomalies. Doshi et al. [16] diagnose the point-adjustment reward structure and propose a rectified evaluation, and proximity- and event-aware metrics such as PATE [17] move beyond point adjustment altogether. The critique now spans metrics and benchmarks alike. Wu and Keogh [8] argue that many popular benchmarks are flawed (triviality, mislabelling and unrealistic anomaly density) creating an illusion of progress; and a recent benchmark analysis [18] finds that anomaly segments in multivariate CPS benchmarks are mostly univariate (SWaT and WADI sit among the datasets whose anomalies deviate univariately on close to all timesteps, with no long cross-channel-only segments), so a flat univariate model matches channel-dependent deep detectors. Recent large-scale benchmarks confirm that detector rankings are strongly dataset-dependent [19], which is why we read every method per dataset and per difficulty subset rather than by a single headline number.
A parallel critique targets the dominant scoring mechanism itself. Reconstruction-based detectors assume that a model trained to reconstruct normal data reconstructs anomalies worse; Bouman and Heskes [20] show this assumption is unreliable, because anomalies lying far from normal data can be reconstructed perfectly in practice, and Gong et al. [21] earlier showed that a deep autoencoder generalizes well enough to rebuild anomalies and miss them. This motivates scoring in a clustered latent rather than through a reconstruction residual. A position paper by Sarfraz et al. [22] draws the two threads together, characterizing the field as plagued by flawed evaluation metrics, inconsistent benchmarking, and unjustified design choices, and showing that state-of-the-art deep detectors effectively learn linear mappings that simple baselines reproduce; Wagner et al. [23] re-audit the widely used multivariate benchmarks, discard the ones with erroneous labels, and note the absence of any standard evaluation metric.
LatAD adopts this critique as its evaluation protocol: raw point-wise AUROC and F1 with no point adjustment for any method; a trivial-detector difficulty split that separates the discriminative difficult subset from the easy majority that carries headline numbers; and re-computation of the deep SOTA baselines (USAD and TranAD) under the same raw metrics rather than their point-adjusted published figures (§5).
Our representation is Variational Deep Embedding (VaDE) [24], a VAE with a Gaussian-mixture latent prior that learns representation and clusters jointly. DAGMM [25] similarly couples an autoencoder with a Gaussian-mixture energy for anomaly detection; we borrow its variance-collapse regularisation but score against explicit per-regime Gaussians in a jointly learned latent rather than a learned-Gaussian energy (§4). Our whitened residual uses the Ledoit–Wolf shrinkage covariance estimator [26]. Classical baselines are Isolation Forest [27] and a deep autoencoder [28], both fitted on the same window features, together with a trivial per-channel range detector that also defines the easy/difficult split.
USAD [29] couples two adversarially trained autoencoders; TranAD [30] uses deep transformer networks with adversarial and self-conditioning training; GDN [31] learns a graph over channels and detects deviations from learned inter-channel relations. These define a widely used deep SOTA on SWaT/WADI-style benchmarks. More recent detectors refine rather than abandon reconstruction: SensitiveHUE [32] models per-variable heteroscedastic uncertainty to sharpen sensitivity to normal patterns, and CATCH [33] learns channel correlations through frequency-domain patching. Both remain reconstruction-based, so the mechanism analysis of §7 suggests they inherit the same blind spot on the reconstructable-but-improbable joint faults that define our difficult subset. We benchmark USAD and TranAD, the reconstruction- and transformer-based deep detectors, under the same raw, difficulty-stratified metrics over five seeds (the re-scored comparison is in §6), and additionally re-run the cross-channel GDN under the identical raw protocol where its per-window graph training was tractable (SWaT). A raw-metric evaluation of the newer reconstruction detectors (SensitiveHUE, CATCH) is left to future work.
Beyond public benchmarks, sensor-driven condition monitoring and fault prediction in operational CPS motivate modeling the multivariate sensor stream directly: vibration-based machine diagnostics [34, 35], structural-health monitoring of rotorcraft components [36], and fault prediction in rotorcraft flight controls [37]. LatAD generalizes this applied line to unsupervised, multimodal-latent anomaly detection.
We evaluate on three real CPS attack testbeds. WADI [38] is a 123-channel water-distribution testbed from iTrust, and SWaT [39] is its 51-channel water-treatment sibling; the two are the de facto standard multivariate CPS benchmarks and the primary targets of the evaluation critique above [6, 8]. HAI [40] is a 59-channel hardware-in-the-loop industrial control testbed spanning several coupled processes. All three carry real executed attacks and are strongly multimodal (BIC-optimal regime counts K* ≥ 22; §3), so the difficulty-stratified results read directly against the MIIM structure of each dataset.
We model the normal law of a CPS as a mixture over reachable operating regimes, where each component is a bounded, oriented, curved patch of observation space. The ten assumptions of Table 1 describe the qualitative structure of this mixture; each is grounded in a physical property of CPS operation and each motivates a specific design choice in the detector of §4. We call the resulting property MIIM: the sample is Massive, the regime structure is Implicit (unlabeled and only approximately recoverable), the regime occupancy is Imbalanced, and normal is Multimodal. Two consequences matter for detection. Normality is multimodal in regime space; and because the few levers of A5 drive typed, correlated channel groups (A8), deviations are often local to one tightly coupled subsystem. LatAD therefore models regime probability at subsystem scale, not only at whole-plant scale (§4.4).
| ID | Assumption | CPS rationale | Motivates (design choice) |
|---|---|---|---|
| A1 | Regime mixture (multimodality) | A plant or vehicle cycles through discrete operating regimes (idle, cruise, load steps); normal is their union, not one blob. | Model normal as an explicit mixture, not a global density: the latent GMM prior of VaDE. |
| A2 | Regime explosion (exponential regime growth) | A CPS is built from many interacting subsystems; each added element multiplies reachable regimes, so regime count grows with complexity. | Use a high number of components K (and a high-resolution density head) rather than a handful. |
| A3 | Hard envelopes (bounded regimes; thin between-regime pockets) | Controllers hold each regime within setpoint/actuator bands; the space between regimes is passed through, rarely dwelt in, leaving thin anomalous pockets. | A between-regime point must score anomalous even when every channel is in range: the basin-agreement head (iv). |
| A4 | Thin fringes (intra-regime sparsity) | Within a regime the system dwells near a typical operating point and reaches the edges only occasionally; each regime holds legitimate low-density regions near its boundary. | Density inside a regime is non-Gaussian → a parametric high-resolution mixture density head, not one Gaussian per regime. |
| A5 | Few levers (low intrinsic dimension) | The independent control variables are far fewer than the observed channels; the rest follow deterministically or probabilistically. | A low-dimensional learned latent (dim 10–16 across datasets) suffices; faults appear as departures within that latent. |
| A6 | Heavy tail (Zipf imbalance) | Machines spend most of the record in a few steady regimes; startup, shutdown and rare manoeuvres occupy little of it, so an infrequent-but-normal point is easily mistaken for a fault. | Score against the nearest component, never the π-weighted mixture, so a rare-but-valid regime is not penalized (ii). |
| A7 | Hidden regimes (latent, implicit regimes) | True regimes are an emergent artifact of coupling and are not logged; regimes must be discovered approximately from raw streams. | Discover regimes jointly with the representation (VaDE), unsupervised; never use regime labels. |
| A8 | Mixed signals (heterogeneous, typed channels) | The bus carries sensors, actuators, discrete states and setpoints, each with its own range, resolution and correlated noise. | Per-feature standardization on train-normal; a whitened (Mahalanobis) residual that respects per-channel scale and cross-channel correlation (iii). |
| A9 | Many clocks (multiscale dynamics) | Physical inertia sets per-channel time constants (thermal slow, electrical fast); only some regime→regime transitions are legal, each with a characteristic dwell. | Fixed-length windows with per-channel statistics as features; motivates explicit temporal features, left to future work (§7). |
| A10 | Path dependence (history-conditioned normality) | A fault is defined relative to operational history: the same instantaneous state can be normal or faulty depending on how the system arrived there. | In principle a trajectory branch; on these snapshot-detectable public benchmarks (each fault visible in a single window, without history) it is inert (see §7), so the reported model is window-only. |
Two standing qualifiers apply throughout: the sample is massive ( large) and the mixture is approximately stationary within a run. Measured on train-normal, the MIIM structure is present but implicit (A7): cluster sizes are heavy-tailed, and Bayesian-information-criterion (BIC) regime counts keep improving past two dozen components (BIC-optimal of 22, 24, and 25 on WADI, HAI, and SWaT). The regimes overlap on WADI and HAI (silhouette 0.06 and 0.08, on a scale where 1 is well-separated clusters and 0 is overlapping) but separate more crisply on SWaT (0.29), and this ordering tracks where the design pays off: the two overlapping datasets are exactly where the regime-community factorization gains most, since a single global density blurs local structure there, while crisp SWaT is a ceiling for every method (§6). This is the regime in which a jointly learned latent, scored by a mixture density and factorized over subsystems, pays off and a global detector or a raw reconstruction residual does not.
We call the detector LatAD, and preview its pipeline before the details: windowed multivariate IIoT telemetry → correlation-community subsystems → one regime-density model per community plus a global expert → calibrated per-community tail probabilities → cohesion-weighted Higher Criticism → anomaly score. Two stages implement it. A representation stage, a VaDE, jointly learns a latent and a Gaussian-mixture regime prior; a scoring stage computes a stack of density heads in that latent, all calibrated on train-normal. The headline LatAD (regime-community) estimates this density per subsystem (§4.4); the base ablation LatAD (global density) estimates it once over the whole channel set. Because every community uses the same representation and heads, we describe those first, then the regime-community realization.
The reported detector realizes assumptions A1, A2, A4–A8 and architecturally supports A3. The mixture representation (A1, A7), the high-resolution density head (A2, A4), the low-dimensional latent (A5), the nearest-component score (A6) and per-feature standardization (A8) are always active; the whitened-residual head (A8) and the basin-agreement head (A3) are auto-gated on train-normal signals and switch on only where a dataset calls for them: the residual activates on HAI and SWaT, and the basin head activates only when train-normal regime assignments are ambiguous, which none of these three datasets trigger, so A3 is architecturally supported but inactive here. The gated heads did not reduce performance on any of these datasets, and the reported gains come from the always-active heads, with the auto-gated residual head adding to them on HAI and SWaT (Table 5). Assumptions A9–A10 shape the trajectory rather than the window and are not exercised by these snapshot-detectable public benchmarks; extending the detector to explicit multiscale-temporal features (A9) and history-conditioned, path-dependent scoring (A10) is left to future work (§7).
One realization of the assumptions. A1–A10 specify what a model of CPS normal must capture, not how to implement it; the detector below is one concrete realization of A1–A8, reported in full so that every choice is auditable, and §7 surveys the design space the same assumptions admit.
VaDE [24] is a variational autoencoder whose latent prior is a Gaussian mixture, so the representation and the operating-regime clusters are learned together (A1, A7) rather than one after the other. An encoder maps a window feature vector to a latent Gaussian ; a decoder reconstructs ; and the prior is with mixture parameters learned jointly with the networks. The training objective is the negative evidence lower bound; per window it is
where are the responsibilities (the posterior probability that a window belongs to regime c). Three standard measures prevent the well-known cluster collapse in which many components are abandoned during joint training: a KL/cluster warm-up that anneals from 0 to 1 so the encoder settles on the pretrained mixture initialisation before the prior is pulled around; a DAGMM-style [25] penalty on tiny component variances (a variance floor plus a term); and a slower learning rate on the mixture parameters so the GMM initialisation (fitted on the pretrained latent) is refined, not destroyed. Training proceeds as plain-VAE pretraining, GMM initialisation on the encoded means, then joint optimization of the full objective.
The natural VaDE anomaly score is the joint negative log-likelihood: a whitened reconstruction residual plus a latent term. On the difficult faults (correlation breaks and between-regime pockets) this is exactly wrong. Table 2 decomposes the two terms by their difficult-subset AUROC on a single trained model per dataset.
| Score term | WADI | HAI |
|---|---|---|
| (a) reconstruction residual | 0.490 | 0.689 |
| (b) latent NLL (nearest diagonal component) | 0.663 | 0.760 |
| (a)+(b) joint NLL (naive VaDE score) | 0.494 | 0.689 |
The mechanism is that a flexible decoder reconstructs the fault faithfully: a correlation-break window has in-range marginals, so the decoder rebuilds it and the residual is near chance or reversed. Demoting reconstruction from the default score improves the difficult subset on the two joint-structure benchmarks (WADI and HAI). The base scoring stack therefore works entirely in the jointly learned latent; reconstruction re-enters only through the optional, auto-gated residual head (§4.3 iii), which fires only where it provably generalizes to held-out normal (HAI and SWaT here, not WADI).
Let be the encoder mean. The base score sums two latent heads, each z-normalized against its train-normal mean and standard deviation, so the operating scale is set by normal, not by the test batch.
Because each regime has a non-uniform interior with thin fringes (A4), one Gaussian per regime is too coarse. We fit a high-resolution diagonal Gaussian mixture on the train-normal latent ( components by default, distinct from the VaDE regime count ) as a parametric kernel-density estimate, and score a window by its density negative log-likelihood:
Under heavy-tailed imbalance (A6) a valid point in a rare, low- regime must not be flagged solely for being rare. We therefore use the closest component, not the π-weighted mixture:
Using the maximum over components rather than the Bayesian mixture sum keeps a rare-regime signal that the mixture sum washes out (A6): the nearest-component distance retains a deviation confined to a single sparsely populated regime, whereas the mixture sum averages it away. The base score is the sum of the two z-normalized heads, .
On some datasets the fault does surface in reconstruction. The optional residual head reduces the per-channel residual by principal-component analysis (fit on train-normal) to dimensions, fits a Ledoit–Wolf-shrunk [26] precision per regime, and combines the per-regime whitened energies of that reduced residual by responsibility:
Here is the reduced residual whitened by regime ’s precision , and is the window’s responsibility for regime . The head is auto-gated by a held-out-normal generalization test: per-regime precisions are fitted on the first 80% of train-normal (split A) and scored on the last 20% (split B); if held-out normal scores much higher (the residual overfits or drifts), the ratio exceeds 1.5 and the head is switched off. Empirically the ratio is 5.24 on WADI (off), 1.17 on HAI (on), and 0.85 on SWaT (on): the residual carries the fault on HAI and SWaT but is dead on WADI, and the gate recovers this pattern from train-normal alone.
Between-regime pockets (A3) are the dangerous false negative on datasets whose regimes overlap. We perturb the latent with Gaussian noise times and measure agreement, the fraction of perturbed copies that keep the clean argmax regime. A rare-but-valid point sits deep in one basin (high agreement, demote); a between-regime point flips regimes under perturbation (low agreement, keep). The rescue subtracts a scaled, train-normal-calibrated agreement:
where is the fraction of train-normal windows that are ambiguous (maximum responsibility below 0.5) and a dead-zone. Although WADI and HAI regimes overlap in silhouette terms (§3), their per-window assignments stay confident: the ambiguous fraction on all three datasets, so and the rescue is inactive. The basin head is a provision for heavily overlapping regimes and awaits data that exercises it. The reported model thus configures its heads purely from train-normal statistics, with no test-set tuning: the residual head fires on HAI and SWaT, and both optional heads stay off on WADI.
The stack of §4.1–4.3 estimates one density over the whole channel set. Its headline realization estimates density per subsystem instead, and the reason is physical. A CPS is an assembly of coupled subsystems, process units, control loops, and conservation-linked flows, each binding a small group of sensors and actuators through tight local correlation while remaining only loosely coupled to the rest of the plant (WADI’s parallel treatment trains, SWaT’s six sequential stages, HAI’s coupled boiler, turbine, and water processes). Mass and energy balances correlate the channels within a unit, a control loop ties a measurement to its setpoint, and a shared control lever drives its dependent channels together, so the few independent levers of A5 and the typed, correlated channels of A8 surface as blocks of the channel correlation graph. Agglomerative clustering on the train-normal correlation graph groups the channels into nested communities (dendrogram subtrees of size 3 to 25 channels) that serve as data-driven proxies for these subsystems, with no supervision and no plant schematic.
Faults inherit the same locality: a stuck valve, a drifting analyzer, or a fouled sensor perturbs its own subsystem while the rest of the plant runs normally, so an incipient fault is typically confined to one community, a handful of channels out of hundreds. A single global density dilutes such a local violation across the full dimensionality (a single-group shift is a vanishing fraction of WADI’s 738-dimensional feature, 123 channels × 6 statistics), whereas a per-community density concentrates it. For each community we therefore fit the full detector of §4.1–4.3 on that community’s channels alone and read its calibrated surprise (the train-normal upper-tail negative log-probability), and we include the global detector as an unfactorized null expert so the detector retains sensitivity to dense whole-system faults. Summing the per-community surprises gives a simple pooled score (because the communities are nested subtrees and can overlap, this sum is an over-complete pooling rather than an exact factorization),
and the detector scores a window by a weighted combination . The weight grows with the community’s internal cohesion (its mean absolute pairwise channel correlation), because a density violation inside a tightly coupled subsystem (A8) is more diagnostic than the same deviation in a loosely coupled one. The combiner must adapt to the fault’s unknown extent: summation is optimal when the fault perturbs many communities, a maximum when it is confined to one, and Higher Criticism [41], a sparse-signal statistic that asks whether more communities are mildly surprised than chance allows, interpolates between the two without assuming the extent in advance. Writing the per-community upper-tail p-values for the community experts in ascending order , the statistic is
over the surprising tail. Cohesion weighting raises each p-value to the power before sorting, with (community cohesion times root size) and their mean, so a violation in a tight, large subsystem weighs more; every p-value is a train-normal upper-tail probability, so the combiner is calibrated on normal alone. The factorization also localizes: the per-community surprises rank the plant’s subsystems by how implicated they are, turning a plant-wide alarm into a subsystem-level lead for the operator. The reported LatAD (regime-community) combines the communities by cohesion-weighted Higher Criticism and fuses that with the null expert by summing the two in train-normal z-score units; the single-latent LatAD (global density) of §4.1–4.3 is the degenerate case and is reported as the base ablation. The detector occupies one point on each of four design axes: representation (VaDE), density estimation (itself two decisions, community construction and surprise aggregation), scoring heads, and calibration. Appendix A ablates the density-estimation axis.
We use three real CPS datasets and no synthetic data in the results tables. All three are instrumented Industrial-IoT / industrial-control-system testbeds: networked sensors, actuators, and programmable logic controllers stream multivariate telemetry from a live physical process, and each carries real executed attacks, making them standard proxies for IIoT security-monitoring and condition-monitoring workloads.
Temporal 10× downsampling of WADI and SWaT (both natively 1 Hz over many days) is standard practice on these benchmarks: it matches the 10-second median protocol of GDN [31] and lies within the downsampling range USAD [29] reports as leaving detection performance largely unchanged. HAI is used at native resolution.
Each raw channel is standardized to zero mean and unit variance using train-normal statistics only (A8). We then slide a fixed window of length with stride 30 across the standardized stream. Each window is summarized by six per-channel statistics: mean (level), standard deviation (variability), minimum, maximum, first-to-last difference (net trend), and range, concatenated into one flat feature vector, so a -channel window becomes a -dimensional input. A window is labeled anomalous if more than 5% of its timesteps are attack timesteps. Model inputs are additionally per-feature standardized on train-normal before the encoder. The window size and stride are unified across all three datasets. The reported model uses these static per-channel features; explicit multiscale temporal features (slope, velocity, spectral band power) motivated by A9 are left to future work (§7).
Model configuration. The VaDE uses mixture components and latent dimension set per dataset (WADI 20 and 10, HAI 40 and 16, SWaT 40 and 16); the density head is a diagonal mixture of 80 components (capped at one tenth of the train-window count), the residual head is reduced to 30 dimensions, and windows are length 60 with stride 30. The basin head uses perturbations at noise scale 0.5σ, dead-zone and ; since the ambiguous-window fraction is ≈ 0.05 on all three datasets, below , its scale is zero throughout. Correlation communities are agglomerative-clustering (average-linkage) subtrees of size 3 to 25 on the train-normal channel-correlation graph, yielding 45, 28, and 26 communities on WADI, HAI, and SWaT. All settings are shared across datasets except the per-dataset mixture size and latent dimension.
A trivial detector scores each window by the maximum absolute standardized per-channel window mean, (here z is a standardized per-channel value, not the latent z of §4.3), the simplest “is any channel out of its normal range” rule. An anomaly window is labeled easy if this trivial score exceeds the 99th percentile of train-normal, and difficult otherwise. Difficult windows are those this max-mean rule does not separate; §6 confirms the HAI advantage persists under a stronger split that also removes windows flagged by any of the six per-channel statistics, so difficulty is not defined by a single hand-picked statistic. We report all methods on three subsets: Easy, Difficult, and All. In every subset the positive class is that subset’s anomaly windows and the negative class is the full set of normal windows, so the subsets differ only in which anomalies they include. The difficult column is the discriminative one.
We report two raw, point-wise metrics (each scored window is one evaluation point, with no point adjustment) and are explicit about their comparability across subsets.
All model fitting and all calibration (density head, nearest-component reference, residual precisions and gate, basin scale and reference, and every z-normalization) use train-normal data only. Test data never enters training or calibration. AUROC is leak-free; only the F1 threshold uses the test-swept oracle, which we flag.
Classical baselines are Isolation Forest [27] and a deep autoencoder, both on the same window features, together with a linear cross-channel baseline (LinRes): a leave-one-channel-out linear regression that predicts each channel's window summary from the others, with discrete actuator channels one-hot encoded, scored by its residual. For modern SOTA we re-run USAD [29] and TranAD [30] through the TranAD evaluation harness over five seeds and score them with the same raw point-wise metrics, aggregating their per-timestep scores onto our window grid. For HAI, the SOTA harness produces scores at a downsampled rate, so we map them to our full-resolution window grid by an integer-ratio correction; our detector and all local baselines use HAI at native resolution. We also re-run the graph-based GDN [31] under the identical protocol; its per-window graph training completed within our compute budget only on SWaT, where it matches the other deep detectors (difficult-subset AUROC 0.871, below ours). We do not apply point adjustment to any method. This is deliberate: point adjustment inflates F1 so severely that a random score outscores every deep model (§2), so a fair comparison must use raw metrics for all methods, including the published SOTA. We also report a diagnostic trivial baseline, the maximum absolute standardized per-channel window mean, the same score that defines the difficulty split (§5.3), whose behavior by construction is strong on Easy and near chance on Difficult.
Table 3 reports AUROC and best raw point-wise F1 for every method on the three datasets and the three subsets. The headline model is LatAD (regime-community) (§4.4). Bold marks the best AUROC within a column across all methods; AUROC for the learned detectors is reported as mean±standard deviation over five seeds.
| Method | Group | All | Easy | Difficult | |||
|---|---|---|---|---|---|---|---|
| AUROC | F1 | AUROC | F1 | AUROC | F1 | ||
| WADI (anom 56 = 37 easy + 19 difficult) | |||||||
| trivial max|z| | Baseline | 0.558 | 0.000 | 0.687 | 0.000 | 0.307 | 0.000 |
| Isolation Forest | Baseline | 0.726±0.007 | 0.378 | 0.751±0.010 | 0.378 | 0.677±0.011 | 0.150 |
| AutoEncoder | Baseline | 0.743±0.001 | 0.611 | 0.907±0.002 | 0.724 | 0.425±0.005 | 0.223 |
| LinRes (one-hot) | Baseline | 0.595 | 0.214 | 0.699 | 0.220 | 0.392 | 0.182 |
| USAD | SOTA | 0.700±0.001 | 0.519 | 0.903±0.002 | 0.652 | 0.305±0.004 | 0.030 |
| TranAD | SOTA | 0.717±0.003 | 0.572 | 0.918±0.002 | 0.717 | 0.325±0.004 | 0.026 |
| LatAD (global density) | Ours | 0.792±0.012 | 0.565 | 0.845±0.007 | 0.680 | 0.690±0.027 | 0.222 |
| LatAD (regime-community) | Ours | 0.862±0.017 | 0.692 | 0.896±0.012 | 0.762 | 0.796±0.041 | 0.367 |
| HAI (anom 652 = 485 easy + 167 difficult) | |||||||
| trivial max|z| | Baseline | 0.806 | 0.666 | 0.966 | 0.800 | 0.340 | 0.000 |
| Isolation Forest | Baseline | 0.844±0.011 | 0.418 | 0.919±0.016 | 0.468 | 0.627±0.005 | 0.059 |
| AutoEncoder | Baseline | 0.923±0.001 | 0.733 | 0.980 | 0.803 | 0.757±0.003 | 0.340 |
| LinRes (one-hot) | Baseline | 0.779 | 0.499 | 0.846 | 0.605 | 0.586 | 0.121 |
| USAD | SOTA | 0.843±0.005 | 0.691 | 0.969±0.001 | 0.823 | 0.477±0.018 | 0.018 |
| TranAD | SOTA | 0.834±0.002 | 0.692 | 0.968 | 0.824 | 0.444±0.010 | 0.015 |
| LatAD (global density) | Ours | 0.933±0.007 | 0.714 | 0.975±0.004 | 0.780 | 0.811±0.016 | 0.365 |
| LatAD (regime-community) | Ours | 0.949±0.004 | 0.756 | 0.983±0.002 | 0.822 | 0.849±0.018 | 0.364 |
| SWaT (anom 182 = 144 easy + 38 difficult) | |||||||
| trivial max|z| | Baseline | 0.988 | 0.972 | 1.000 | 1.000 | 0.943 | 0.848 |
| Isolation Forest | Baseline | 0.959±0.003 | 0.914 | 0.987±0.002 | 0.960 | 0.853±0.011 | 0.659 |
| AutoEncoder | Baseline | 0.987±0.001 | 0.933 | 1.000 | 0.997 | 0.939±0.006 | 0.648 |
| LinRes (one-hot) | Baseline | 0.991 | 0.948 | 1.000 | 0.997 | 0.959 | 0.710 |
| USAD | SOTA | 0.972±0.001 | 0.948 | 1.000 | 0.997 | 0.867±0.005 | 0.718 |
| TranAD | SOTA | 0.972 | 0.950 | 1.000 | 0.997 | 0.867±0.001 | 0.737 |
| GDN | SOTA | 0.973 | 0.946 | 1.000 | 0.990 | 0.871 | 0.698 |
| LatAD (global density) | Ours | 0.991±0.002 | 0.950 | 0.999±0.002 | 0.974 | 0.960±0.006 | 0.761 |
| LatAD (regime-community) | Ours | 0.993±0.001 | 0.966 | 1.000 | 0.985 | 0.969±0.006 | 0.855 |
Overall detection. LatAD attains the best All-subset AUROC of any method on every dataset: WADI 0.862, HAI 0.949 and SWaT 0.993, clearing every baseline and both deep detectors on all three, including the strong classical baselines at the SWaT ceiling. The gain over the single-latent base (LatAD global density, 0.792 / 0.933 / 0.991) comes from factorizing the density over regime communities (§4.4), and is largest on the difficult subset, where it matters most.
Difficult, joint-structure faults. This is where the design earns its keep (Figure 1). The clearest demonstration is HAI: LatAD reaches 0.849 on the difficult subset (167 windows spanning 26 attack episodes), well above the AutoEncoder (0.757) and far above the deep detectors USAD (0.477) and TranAD (0.444), which sit near chance. The margin over the AutoEncoder is statistically significant: an episode-block bootstrap of the paired difference (resampling attack episodes and normal windows, averaged over five seeds) gives +0.092 with a 95% confidence interval of [0.046, 0.160] and P(difference ≤ 0) ≈ 0. On WADI the deep detectors collapse to 0.30–0.33 while LatAD reaches 0.796, a lead over Isolation Forest (0.677) that the same bootstrap places near significance (+0.12, 95% CI [−0.005, 0.257], P ≈ 0.03); the regime-community factorization is what turns the earlier single-latent tie (0.690) into this lead. On SWaT the difficult subset is only mildly difficult (the trivial rule already scores 0.943), so every method is strong (LatAD 0.969, the linear baseline 0.959) and its 38 windows come from a single attack episode, making SWaT a ceiling case rather than a discriminative test. The advantage over the deep detectors is largest exactly where the difficult anomalies are reconstructable yet improbable (WADI, HAI), and vanishes on SWaT, whose difficult anomalies are large multivariate deviations every method detects.
Trivially separable anomalies. On the easy subset every method is strong and the ranking is uninformative, by construction: the easy subset is exactly the anomalies a univariate max-mean rule already flags, and the trivial rule itself tops the easy column on SWaT (1.000).
Validity of the difficulty split. The trivial max|z| rule is strong on Easy by construction (SWaT 1.000, HAI 0.966, WADI 0.687) and drops to near chance on the difficult subset of the two benchmarks that carry genuine joint-structure faults (WADI 0.307, HAI 0.340): the difficult subset is precisely the anomalies this univariate max-mean rule cannot see, so a method that scores well there is detecting joint structure the rule misses. On SWaT the rule stays strong on the difficult subset (0.943), which is why SWaT is a strong overall benchmark but not a discriminative test of joint-structure detection.
Robustness to a stronger difficulty definition. The canonical split flags a window easy only when the maximum absolute standardized per-channel mean exceeds its 99th train-normal percentile, so a window could in principle be “difficult” yet be separable by a different univariate statistic. We therefore repeat the analysis with a stronger split that labels a window easy if the maximum over all six standardized per-channel statistics (mean, standard deviation, minimum, maximum, first-to-last difference, and range) exceeds its 99th train-normal percentile, removing any window a single univariate statistic separates. On the resulting HAI difficult subset (110 windows) the detector still leads every baseline (0.675, versus 0.622 for the linear cross-channel baseline, 0.604 for the AutoEncoder, and 0.528 for Isolation Forest), so its HAI advantage is not an artifact of the particular statistic that defines difficulty. WADI remains a tie (Isolation Forest 0.710, ours 0.697) and SWaT remains a ceiling case (trivial rule 0.929), consistent with the canonical split.
The double-hard subset. As a secondary robustness stress test we intersect the failures of the two simplest baseline families: a window is double-hard if it is an anomaly separated by neither the univariate max|z| rule nor the one-hot linear cross-channel predictor (LinRes), with both 99th-percentile thresholds fixed on train-normal only and the detector under test playing no role in constructing the subset. Table 4 reports its per-method AUROC: LatAD attains the highest mean on all three datasets (WADI 0.728, HAI 0.819, SWaT 0.936). Statistical superiority is established on HAI, where 19 attack episodes support an episode-block bootstrap and the paired difference over the AutoEncoder is +0.089 (95% CI [0.020, 0.194]); the WADI subset rests on five episodes and is a numerical lead over Isolation Forest (0.728 vs 0.599, P ≈ 0.05), and the 18 SWaT windows come from a single attack episode, so no episode-level generalization is claimed there. The subset removes ceiling signal rather than selecting a favorable slice: the trivial-rule AUROC falls from 0.943 on the difficult subset to 0.880 here, and the AutoEncoder collapses on WADI (0.336). By construction the two baselines that define the subset fail on it and are shown for completeness, not as an unbiased comparison.
| Method | WADI | HAI | SWaT |
|---|---|---|---|
| trivial max|z| | 0.283 | 0.349 | 0.880 |
| Isolation Forest | 0.599±0.013 | 0.635±0.012 | 0.789±0.011 |
| AutoEncoder | 0.336±0.007 | 0.730±0.003 | 0.890±0.010 |
| LinRes (one-hot) | 0.251 | 0.465 | 0.914 |
| USAD | 0.258±0.007 | 0.442±0.021 | 0.780±0.006 |
| TranAD | 0.272±0.002 | 0.418±0.009 | 0.777±0.003 |
| LatAD (global density) | 0.601±0.027 | 0.806±0.019 | 0.921±0.012 |
| LatAD (regime-community) | 0.728±0.077 | 0.819±0.020 | 0.936±0.013 |
Deep SOTA under raw metrics. Re-computed with raw point-wise metrics, the deep detectors USAD and TranAD collapse on the difficult subset of the two joint-structure benchmarks: over five seeds they fall to 0.477 and 0.444 on HAI and to 0.305 and 0.325 on WADI, near or below chance and far below our 0.796–0.849, even while they remain strong on Easy (0.90–0.97). This is the concrete face of the “illusion of success”: models that look strong under point-adjusted F1 have little difficult-fault signal once the metric is raw.
What the results show. Under a fair protocol (raw point-wise metrics, difficulty stratification, and train-normal-only calibration) on three real CPS attack benchmarks, LatAD attains the best overall AUROC on every dataset and leads the difficult subset of all three over five seeds. The clearest demonstration is HAI, whose difficult faults break joint structure: LatAD reaches 0.849, a statistically significant margin over the next-best baseline (paired episode-bootstrap 95% CI [0.046, 0.160]), while the deep detectors USAD and TranAD fall near chance (0.44–0.48); on WADI the regime-community factorization turns a prior single-latent tie into a near-significant lead (0.796, P ≈ 0.03), and SWaT is a ceiling. Modeling normal as a jointly learned latent plus explicit regime clustering, scored by probability and factorized over the plant’s subsystems, is what delivers the advantage.
Why reconstruction fails and density wins. The deep detectors USAD and TranAD score by reconstruction, and reconstruction measures reachability (can the decoder reproduce this vector?), not probability (is this vector likely under normal?). On multimodal normal data the two diverge: a flexible decoder trained to reproduce several regimes interpolates between them, so an improbable between-regime or in-regime-tail combination sits inside the decoder's reachable range and reconstructs with low error. We verify this directly on WADI with a single-model diagnostic probe (one seed). The difficult anomalies stay on the normal manifold (PCA off-subspace residual AUROC 0.43) and reconstruct as well as normal (autoencoder reconstruction-error AUROC 0.43), yet the latent density flags them (0.74). A controlled probe makes the mechanism explicit: 1000 synthetic improbable combinations, each formed by averaging two normal windows from different regimes, reconstruct even better than real normal (reconstruction AUROC 0.08 against train-normal windows, WADI, one seed), while the latent density separates them cleanly (0.72). Scoring by density in the clustered latent replaces reachability with probability, which is exactly what reconstruction cannot see. This is why the base score omits reconstruction and scores in the jointly learned latent, with a high-resolution density head for non-Gaussian fringes (A4) and a rare-regime-safe nearest-component likelihood (A6); reconstruction is added back only through the optional, auto-gated residual head where it demonstrably helps (§4.3 iii).
Why local density beats global density. The reconstructable-but-improbable argument explains why we score density rather than reconstruction; a second mechanism explains why we score it per subsystem. A fault confined to one correlated channel group is, in the full-dimensional latent, a small perturbation of a mostly-normal state, so its surprise is averaged down by the many communities that stay normal, and the global density under-weights exactly the local violations that matter. Estimating density inside each community removes that dilution, and combining the per-community surprises by a sparsity-adaptive statistic recovers a signal carried by a few communities that a global sum would wash out. This is the mechanism behind the WADI gain (Table A1): the coordinated drift of a small analyzer group is improbable within its own subsystem yet unremarkable in the whole-plant density, so factorization turns the single-latent tie into a lead.
| Score head | WADI | HAI | SWaT |
|---|---|---|---|
| reconstruction residual (dropped term) | 0.475±0.004 | 0.695±0.004 | 0.965±0.002 |
| latent density | 0.694±0.027 | 0.802±0.011 | 0.952±0.008 |
| nearest-component NLL | 0.665±0.033 | 0.797±0.008 | 0.922±0.010 |
| base (density + nearest) | 0.685±0.030 | 0.801±0.010 | 0.947±0.007 |
| base + resid (auto) = LatAD (global density) | 0.685±0.030 | 0.820±0.010 | 0.960±0.002 |
Table 5 decomposes the score into its heads across five seeds and all three datasets. On WADI the reconstruction residual alone is near chance (0.475) while the latent density carries the signal (0.694); on HAI reconstruction is informative but the weakest head (0.695) and the density head dominates (0.802). The residual head, where the gate turns it on, lifts the base score exactly where reconstruction is informative (HAI 0.801→0.820, SWaT 0.947→0.960) and stays off on WADI. On SWaT reconstruction is in fact the strongest single head (0.965), consistent with SWaT's difficult faults being large deviations that reconstruction catches, which is why the gate keeps the residual head on there and why SWaT is a ceiling rather than a joint-structure test. The decomposition supports the mechanism at the head level: the latent density is what carries the joint-structure benchmarks, and reconstruction contributes only where it demonstrably generalizes.
Auto-gating adapts one architecture to three datasets. The winning signal is dataset-dependent, so rather than hand-select we gate two optional heads by purely train-normal signals: a responsibility-weighted whitened residual (gated by held-out-normal generalization; active on HAI and SWaT) and a basin-agreement head (gated by the ambiguous-normal ratio; a no-op on all three benchmarks here). The single global-density configuration then adapts itself: the residual head activates on HAI and SWaT, where the fault leaves a whitened-residual signal, and stays off on WADI, whose difficult faults are pure low-density pockets in the latent.
The residual frontier on WADI. A minority of WADI difficult windows are attack-onset/offset edges whose fault content is near-absent: 2–3σ dips on a few correlated channels, sitting inside the normal tail, where normal CPS operation is itself noisy. None of the evaluated snapshot detectors, ours or the deep baselines, separates these at a low false-alarm budget; they are an intrinsic property of the data rather than of any one detector. Reaching them would require information beyond the instantaneous window, such as a physics-informed process residual, which we leave to future work.
Trajectory assumptions A9–A10. The reported model is window-only and leverages the instantaneous-structure assumptions A1–A8. Extending it with multiscale-temporal features (A9) and history-conditioned, path-dependent scoring (A10) is the natural next step; the public benchmarks used here are snapshot-detectable, so exercising the trajectory assumptions requires data that contains a history-dependent fault.
Alternative realizations and validation. The MIIM assumptions fix the structure to model rather than the estimator, so the detector of §4 is one point in a larger design space. The regime-community realization (§4.4) exercises the factorization and sparsity-adaptive-combination routes; further routes remain open within the same assumption set: non-parametric or normalizing-flow densities per community, alternative unsupervised partitioners, and a deeper multiscale community hierarchy than the current nested-subtree construction. Because the community construction and the cohesion-weighted Higher Criticism combiner were developed on these three benchmarks, the regime-community realization should be validated on additional, untouched CPS systems before its per-dataset gains are treated as established; its build and calibration use train-normal data only, so the extension is directly testable on additional CPS systems.
Implications for IIoT deployment. The detector maps onto a standard Industrial-IoT monitoring pipeline: field sensors and programmable logic controllers emit telemetry that an edge gateway or SCADA historian aggregates into the same fixed windows used here; the trained encoder and per-community density models then score each completed window online, and an alarm together with the most-surprised community is forwarded to the operator, maintenance, or security stack. Two properties make this practical for IIoT: all model fitting and calibration use train-normal data only, so a site can be commissioned from its own normal telemetry without labeled attacks, and the per-community score localizes an anomaly to a physical subsystem rather than issuing only a plant-wide flag. Scoring is sequential, with each completed window evaluated without access to future observations. This is a deployment architecture rather than an experimentally evaluated configuration.
Pushing inference to the network edge (a gateway or the device itself) reduces telemetry backhaul and enables local response, but the regime-community realization instantiates one density model per community, so its inference cost grows with the number of subsystems. Where that footprint matters, adaptive-inference optimizations are a natural fit: early-exit cascades terminate computation early on inputs that are already confidently normal and cut average inference cost substantially, for example CalexNet [42], a cascade-aligned early-exit method reported to reduce inference cost by roughly 30 to 70 percent, which applies directly to the per-community expert stack on constrained edge hardware. We report no parameter count, memory, latency, or energy measurements here, so LatAD’s suitability for a specific edge device remains to be established experimentally, a target for future work; the scoring architecture is compatible in principle with gateway-side streaming inference.
Limitations. Three boundary conditions apply: three datasets, one trained configuration per dataset (evaluated over five seeds), and a single instantaneous representation. AUROC is threshold-free and reported as a five-seed mean; the F1 column is a best-threshold raw F1. The easy/difficult split is a property of one cut, the trivial detector's 99th-percentile-of-train-normal threshold; a different percentile would redraw the boundary between the subsets, though the gap between the trivial rule's Easy and Difficult performance is large enough that the split is not knife-edge. We report only raw point-wise metrics, which makes our numbers lower than point-adjusted leaderboard figures by design.
We restated the structural assumptions of CPS normal data as an explicit MIIM list (A1–A10) and built LatAD, a detector that models normal as a jointly learned latent plus explicit regime clustering, scores anomalies by probability in that latent rather than by reconstruction, and factorizes the density over the plant’s correlation-community subsystems. Under a deliberately fair, raw-metric, difficulty-stratified protocol on three real CPS attack benchmarks, LatAD attains the best overall AUROC on every dataset and leads the difficult subset of all three, significantly on HAI (paired 95% CI [0.046, 0.160]) and near-significantly on WADI, where the reconstruction-based deep detectors collapse.
The mechanism is simple to state. Reconstruction scores reachability; a density in a clustered latent scores probability; and the CPS faults that matter are reconstructable but improbable. Treating multimodal normal as a single blob, or as a reconstruction target, is a modeling failure.
These results position normal-only latent-density modeling as an anomaly-monitoring approach for multivariate IIoT telemetry, particularly where labels are scarce and anomalous behavior is local to a coupled physical subsystem. Two properties make the detector well-suited to condition monitoring and predictive maintenance: scoring against the nearest regime keeps rare-but-valid states (startups, rare manoeuvres) from paging an operator, and the regime-community density catches in-envelope, subsystem-local faults that stay inside every alarm limit. Extending LatAD to the trajectory assumptions (A9, A10) and validating the regime-community realization on additional CPS systems are the natural next steps.
Author Contributions: Conceptualization, methodology, software, validation, formal analysis, investigation, writing (original draft preparation), and writing (review and editing), A.A. and Y.A. The authors contributed equally to all aspects of the work. All authors have read and agreed to the published version of the manuscript.
Funding: This research received no external funding.
Institutional Review Board Statement: Not applicable.
Informed Consent Statement: Not applicable.
Data Availability Statement: This study uses only publicly available community benchmark datasets and created no new data. WADI and SWaT are available from iTrust, Singapore University of Technology and Design (https://itrust.sutd.edu.sg/, access granted on request); HAI is available from its public release by ETRI. The trained model checkpoints (one per dataset) and the source code supporting the reported results are openly archived on Zenodo at https://doi.org/10.5281/zenodo.21821524. Each checkpoint contains learned parameters only, not the underlying data; each is trained with a fixed seed and reproduces that seed's scores, and the released scripts reproduce the five-seed aggregates reported in the tables.
Conflicts of Interest: The authors declare no conflicts of interest.
LatAD is one point on each design axis of §4: representation, density estimation (single global versus a regime-community ensemble, itself construction plus aggregation), scoring heads, and calibration. Table A1 varies the density-estimation axes on the difficult subset, holding the rest fixed. Factorizing the global density over regime communities lifts all three datasets, most on WADI, whose sparse coordinated-drift faults a global density dilutes; fitting the full per-community scoring heads (adding the A8 whitened residual inside each subsystem) further lifts HAI, where the hard valve and flow deviations are correlation-conditional; and among the sparsity-adaptive combiners, cohesion-weighted Higher Criticism is the only one that leads on all three, because it weights a violation by the coupling strength of the subsystem it occurs in (A8) while adapting to the fault’s extent.
| Ablation | WADI | HAI | SWaT |
|---|---|---|---|
| Factorization (density-estimation axis) | |||
| LatAD (global density), no factorization | 0.690 | 0.811 | 0.960 |
| LatAD (regime-community), density-only experts | 0.799 | 0.814 | 0.968 |
| LatAD (regime-community), full per-community heads | 0.796 | 0.849 | 0.969 |
| Aggregation (over full-stack experts) | |||
| sum (of community surprises) | 0.747 | 0.828 | 0.968 |
| max (most-surprised community) | 0.749 | 0.802 | 0.964 |
| Higher Criticism (unweighted) | 0.753 | 0.828 | 0.968 |
| cohesion-weighted Higher Criticism (headline) | 0.796 | 0.849 | 0.969 |
| Higher Criticism with null expert, max-fused | 0.744 | 0.846 | 0.964 |