Candidate Comparability Before Promotion: Conditional Validation in Adaptive Network Intrusion Detection
Organizations: Faculty of Engineering, University of Deusto, Avda. de las Universidades, 24, 48007 Bilbao, Spain
Abstract
Adaptive network intrusion detection systems retrain classifiers after drift alarms, but an alarm detects change; it does not establish that a challenger should replace the deployed incumbent. Promotion is security-relevant because it changes the model responsible for subsequent attack detection, and evaluating it has a methodological problem: promotion conclusions may depend on how the challenger was constructed and on how much evidence supports it. We test that dependence on CICIDS2017, UNSW-NB15 and ToN-IoT with self-contained challenger pipelines, nested candidate-size controls, a common-harness comparison of nine update policies, and a final sensitivity confining every exact feature vector to one evaluation, training or probe role. Incumbent-owned frozen preprocessing amplified apparent promotion harm; with self-contained challenger pipelines the mean full-drift harm did not persist. Raising nominal candidate evidence from 512 to 2,000 samples per class improved promotion under pool-constructed progressive drift by +0.53, +1.67 and +0.38 balanced-accuracy points: positive and statistically resolved in all three benchmarks, but materially benchmark-dependent rather than homogeneous, and driven mainly by fewer false positives. Policy conclusions were partially robust: policy ordering changed with candidate comparability, no policy globally dominated, and earlier compatibility statements for a label-free estimator and a calibrated ensemble narrowed. Validation helped evidence-disadvantaged challengers but added no average benefit at parity. Thirteen replays on real, time-ordered traffic showed no net harm from always deploying. Challenger construction and evidence should be controlled, reported and interpreted explicitly when promotion is evaluated.
Figures & tables
| Approach | Objective | Decision unit | Information required | Output | Guarantees / scope |
|---|---|---|---|---|---|
| CARA [ 57 ] | Cost-aware stream retraining | Retraining opportunity | Performance and retraining/staleness costs | Retrain or keep | Cost–performance analysis under its assumptions; no concrete-challenger audit |
| Regol [ 69 ] | Forecast when retraining pays | Retraining opportunity | Sparse performance history and cost ratio | Retrain or keep | Uncertainty-aware forecast within its model; no paired proposal guarantee |
| Automated adaptation strategies [ 11 ] | Select among stream adaptation mechanisms | Batch / adaptation opportunity | Recent-batch (cross-validation) evidence | Selected adaptive mechanism, including no update | Adaptive-strategy selection within its framework; no explicit incumbent–challenger comparability audit |
| IGPC-MSOS [ 80 ] | Select NIDS update mode | Drift/update episode | Dual triggers and online system feedback | Update mode | System-specific decision architecture; no paired concrete-challenger guarantee |
| CARAVAN [ 87 ] | Label, monitor and retrain in-network models | Labeling window | Generated labels, predictions and accuracy proxy | Retrain/update weights | End-to-end adaptive system and public artifact; no held-out challenger comparison |
| ADAWU-IDS [ 86 ] | Calibrate drift-response policy | Validation stream / traffic chunk | Delayed chunk labels, drift severity and learner performance | Reweight; optional stronger response | Chronological held-out calibration; selected configuration is dataset-specific |
| Object | Source | Reflects window | Latency knob |
|---|---|---|---|
| Trigger decision | detector score on | — | |
| Probe (pool arms) | pool sample at | --probe-latency | |
| Probe (observed arm) | observed window , row-disjoint | fixed | |
| Candidate batch (pool) | pool sample at | --candidate-latency | |
| Candidate batch (sliding) | 8 observed windows ending | --candidate-latency | |
| Recalibration (observed) | last 8 observed windows | — |
| Configuration | 512/class challenger | 2,000/class challenger |
|---|---|---|
| Frozen incumbent-owned preprocessing (historical), full drift | vs never: / / (seeds 3001–3030; descriptive) validation: point naive / / (same block; descriptive) | not evaluated under a registered protocol |
| Frozen incumbent-owned preprocessing (historical), zero drift | vs never: / / (seeds 3001–3030; descriptive) validation: point naive / / (same block; descriptive) | vs never: / / (seeds 104–133; descriptive) validation: point naive / / (same block; descriptive) |
| Self-contained challenger, zero drift | vs never: / / (seeds 4001–4030; descriptive) validation: 6/6 gate contrasts Holm-significant gains (seeds 3001–3030, Table 4 ) | vs never: / / (seeds 4001–4030; registered F1; CI90 within in 3/3) validation: 0/6 Holm-significant gains (same block; registered F3) |
| Self-contained challenger, full drift | vs never: / / (seeds 6001–6030; registered G1) validation: 1/6 Holm-significant gain, 1 resolved cost (seeds 3001–3030, Table 4 ) | vs never: / / (seeds 6001–6030; registered G1) validation: 0/6 Holm-significant gains, 1 resolved cost (strict, UNSW ; same block; registered G3) |
| Regime | Transf. | Never BA | Naive never | Point naive | Strict naive |
|---|---|---|---|---|---|
| PortScan full | frozen | 87.44 | [4.11, 8.53] | [-0.05, 1.00] | [-0.12, 1.07] |
| own | 87.44 | [4.89, 9.52] † | [-0.06, 0.41] | [-0.33, 0.41] | |
| UNSW-Recon full | frozen | 83.03 | [1.17, 1.62] | [-0.11, 0.10] | [-0.24, 0.16] |
| own | 83.03 | [2.34, 2.75] † | [-0.36, -0.06] † | [-0.35, 0.05] | |
| ToN-IoT full | frozen | 92.40 | [-7.15, -2.86] | [3.50, 7.75] | [3.34, 7.56] |
| own | 92.40 | [0.55, 1.53] † | [0.26, 1.06] † | [-0.31, 0.67] |
| Regime | Never BA | Naive never | Naive never | compat. | Naive naive 512 | Point naive 2000 | Strict naive 2000 |
|---|---|---|---|---|---|---|---|
| PortScan zero | 95.66 | [-2.05, -1.36] | [-0.15, 0.55] | yes | [1.54, 2.23] † | [-0.00, 0.12] | [-0.07, 0.34] |
| UNSW-Recon zero | 89.08 | [-0.77, -0.55] | [-0.10, 0.06] | yes | [0.53, 0.73] † | [-0.02, 0.04] | [-0.01, 0.12] |
| ToN-IoT zero | 92.56 | [-0.39, -0.10] | [-0.05, 0.04] | yes | [0.10, 0.38] † | [0.00, 0.04] | [-0.01, 0.08] |
| Regime (full drift) | Never BA | Naive 512 | Naive 2000 | Size effect [CI95] | G2 class | Point 2000 [CI95] | Strict 2000 [CI95] |
|---|---|---|---|---|---|---|---|
| PortScan | 85.58 | † | † | [0.67, 0.98] † | size benefit | [-0.03, 0.39] | [-0.17, 0.23] |
| UNSW-Recon | 83.36 | † | † | [1.51, 1.81] † | size benefit | [-0.16, 0.03] | [-0.53, -0.15] † |
| ToN-IoT | 91.79 | † | † | [0.60, 1.39] † | size benefit | [-0.06, 0.09] | [-0.56, 0.28] |
| Dataset | Policy | Cand. | Probe | BA vs never [CI95] | Gate gain vs naive [CI95] | Commits/seed |
|---|---|---|---|---|---|---|
| CICIDS2017-PortScan | naive 512 | 1,024 | 0 | [-2.05, -1.36] | — | 3.70 |
| point 512 + 32-label probe | 1,024 | 32 | [-1.10, -0.38] | [+0.67, +1.31] | 1.87 | |
| strict 512 + 32-label probe | 1,024 | 32 | [-0.24, +0.16] | [+1.36, +2.00] | 0.23 | |
| naive 2,000 | 4,000 | 0 | [-0.15, +0.55] | — | 3.70 | |
| UNSW-NB15 | naive 512 | 1,024 | 0 | [-0.77, -0.55] | — | 3.70 |
| point 512 + 32-label probe | 1,024 | 32 | [-0.61, -0.33] | [+0.10, +0.30] | 2.27 |
| Full drift | Zero drift | |||||||
|---|---|---|---|---|---|---|---|---|
| Policy | Origin | Labels at decision | PortScan | UNSW | ToN-IoT | PortScan | UNSW | ToN-IoT |
| Never-adapt | anchor | 0 | 86.0 | 83.1 | 91.9 | 95.1 | 89.0 | 92.5 |
| Always-deploy (naive) | anchor | 0 | ||||||
| Point gate, | authors’ policy | 32 | ||||||
| Strict gate (reject ties), | authors’ policy | 32 | ||||||
| ATC [ 31 ] | published generic | 0 ( 512-row val.) | ? | ≈ | ≈ | ≈ | ≈ | ≈ |
| Benchmark | Historical | Exact-feature-disjoint [CI95] | Class | Change [CI95] | Change class | Recall 512 2,000 | FPR 512 2,000 | |
|---|---|---|---|---|---|---|---|---|
| PortScan | [0.27, 0.79] | 0.00018 | material benefit | [-0.60, 0.01] | unresolved | 89.82 90.13 | 5.44 4.70 | |
| UNSW-Recon | [1.47, 1.89] | 0.00003 | material benefit | [-0.24, 0.28] | compatible | 97.86 97.51 | 31.20 27.51 | |
| ToN-IoT | [0.21, 0.57] | 0.00018 | resolved sub-material | [-1.04, -0.19] | material attenuation | 97.16 97.34 | 28.39 27.81 |
| Extension | Question | Main result | Scope / limitation |
|---|---|---|---|
| Observed-data (§S2.7) | Survives without simulator privileges? | Harm-regime rescue reproduces leakage-free ( 4.05/ 4.83 above always-deploy) | Frozen, 512/class; UNSW below no-adapt at 64-flow windows |
| Classifier / generator (§S1.6, S2.12) | Is the harm SVC-specific? | Sign general at 512; size-matching clears robust learners | Magnitude pipeline-dependent; frozen transformer |
| Mild drift (§S2.12) | Is harm dataset-specific? | Healthy incumbents make always-deploy harmful in all three | Frozen, 512/class |
| Quantum monitor (§S1.2) | Does a more expressive detector change conclusions? | No | simulated cost; invariance check only |
| VBC-SG frontier (§S2.12) | What do formal guarantees cost? | Non-vacuous from ; abstention/labels priced | Frozen; not necessary under the size-matched controls |
| Chronological replays (§S2.6) | External time-ordered boundary? | No net harm observed in any of 13 replays (7 in Table 11 , 6 earlier); gates pay a premium on collapsed incumbents | No ToN-IoT analogue; no prevalence estimate |
| Replay | no-adapt BA | naive | point | strict | VBC-SG |
|---|---|---|---|---|---|
| Tue Wed+Thu+Fri | 59.0 | ||||
| Wed Fri | 51.8 | ||||
| Thu Fri | 49.0 | ||||
| Wed intra-day | 84.7 | ||||
| Thu intra-day | 48.3 | ||||
| UNSW (train 20%) | 82.9 |
Network Intrusion Detection
Network intrusion detection identifies malicious or abnormal network activity to help protect computers, connected devices, and critical infrastructure.
See all 168 papers