Feature Normalization For BCI
Feature normalization keeps calibration, evaluation, and deployment data on the same scale. It is especially important for cross-session BCI, where electrode impedance, skin conductance, amplifier gain, and user state can shift feature amplitudes.When To Normalize
Normalize when:- using a model across sessions or days
- combining subjects or recording systems
- mixing feature families with different scales
- running long sessions where electrode/contact quality may drift
Recommended Workflow
- Python
- Julia
Method Choice
| Method | Use When | Tradeoff |
|---|---|---|
zscore | Default BCI workflow | Sensitive to extreme outliers. |
robust | Noisy data with artifacts | Less standard, more resilient. |
minmax | Bounded feature ranges are required | Very sensitive to outliers. |
zscore. Switch to robust when artifacts or heavy-tailed features make mean/std unstable.
Common Pitfalls
- Normalizing train and test separately: causes scale leakage and unstable evaluation.
- Normalizing raw EEG: can break feature extraction assumptions.
- Forgetting to save parameters: makes deployment data incompatible with training scale.
- Changing preprocessing after calibration: invalidates the saved normalization parameters.
What To Save
Save normalization parameters next to the model:Quality Checks
Before inference:- feature values are finite
- feature count matches model metadata
- normalization params came from training/calibration data
- test/deployment data used the same preprocessing pipeline
Next Read
Preprocessing Requirements
Prepare valid features before normalization.
External Preprocessing Integration
Export/import feature arrays across tools.
Batch Processing
Offline evaluation with normalized data.
Error Handling
Diagnose bad scale, shape, or confidence.