Probabilistic Model Specification
NimbusSDK provides pre-built probabilistic models powered by RxInfer.jl, a reactive message passing framework for efficient Bayesian inference.Nimbus Models Available:
- NimbusLDA - Fast, shared covariance (Python + Julia)
- NimbusQDA - Flexible, class-specific covariances (Python + Julia)
- NimbusSoftmax - Non-Gaussian static model (Python only)
- NimbusProbit - Non-Gaussian static model (Julia only)
- NimbusSTS - Stateful adaptive model (Python only)
Model Architecture
The static models (LDA, QDA, Softmax, Probit) are built on factor graphs with reactive message passing:Factor Graphs
Factor graphs represent the joint probability distribution: Components:- Prior: - uniform or learned class probabilities
- Likelihood: - Gaussian (LDA/QDA) or a non-Gaussian classifier (Softmax/Probit)
- Posterior: - computed via message passing
Reactive Message Passing
RxInfer.jl uses reactive programming for efficient inference:- Incremental processing: Process data chunks as they arrive
- Low latency: 10-25ms per chunk
- Memory efficient: Constant memory usage
- Real-time capable: Streaming inference without buffering
Model Comparison
| Feature | NimbusLDA | NimbusQDA | NimbusSoftmax (Py) | NimbusSTS (Py) |
|---|---|---|---|---|
| Covariance | Shared across classes | Class-specific | N/A (logistic) | N/A (state-space) |
| Decision Boundary | Linear | Quadratic | Non-linear (flexible) | Dynamic (time-varying) |
| Temporal Model | Static | Static | Static | Stateful (EKF) |
| Flexibility | Lower | Higher | Highest | Adaptive |
| Speed | Fastest (10-15ms) | Fast (15-25ms) | Fast (15-25ms) | Real-time (20-30ms) |
| Best For | Motor imagery, stationary | P300, overlapping classes | Complex multinomial | Non-stationary, long sessions |
| State Management | None | None | None | propagate_state(), get_latent_state() |
| Online Learning | partial_fit() | partial_fit() | partial_fit() | Continuous with delayed feedback |
| Use Case | Short sessions | Short sessions | Short sessions | Long sessions, cross-day, adaptive BCI |
| Training Time | Fast | Moderate | Moderate | |
| Parameters | Fewer (efficient) | More (flexible) | Most (very flexible) | |
| Best For | Well-separated classes | Overlapping distributions | Complex multinomial tasks | |
| Overfitting Risk | Lowest | Moderate | Higher (more parameters) | |
| Data Requirements | 40+ trials/class | 60+ trials/class | 80+ trials/class |
BCI Paradigm Applications
Motor Imagery
Recommended Model: Bayesian LDA (NimbusLDA) Motor imagery classes are typically well-separated in CSP feature space, making NimbusLDA ideal:- 2-class (left/right hand): 75-90% accuracy
- 4-class (hands/feet/tongue): 70-85% accuracy
- Inference: 10-15ms per trial
- ITR: 15-25 bits/minute
- Fast inference for real-time control
- Shared covariance assumption holds well
- Lowest data requirements
P300 Event-Related Potential
Recommended Model: Bayesian QDA (NimbusQDA) P300 target and non-target ERPs have overlapping distributions, requiring flexible modeling:- Binary detection: 85-95% accuracy (with averaging)
- Inference: 15-25ms per epoch
- ITR: 10-20 bits/minute
- Class-specific covariances capture ERP morphology
- Better for overlapping distributions
- Handles individual differences
SSVEP (Steady-State Visual Evoked Potential)
Recommended Model: NimbusLDA or NimbusQDA- 4-target: 85-95% accuracy, use NimbusLDA
- 6+ target: 80-90% accuracy, use NimbusQDA
- Inference: 10-20ms per trial
- ITR: 30-50 bits/minute
- NimbusLDA: For 2-4 targets with well-separated frequencies
- NimbusQDA: For 6+ targets with overlapping harmonics
Paradigm Comparison
| Paradigm | Recommended Model | Typical Accuracy | ITR | User Training |
|---|---|---|---|---|
| Motor Imagery | NimbusLDA (or NimbusSTS for long sessions) | 70-85% (4-class) | 15-25 bits/min | High |
| P300 | NimbusQDA | 85-95% (with reps) | 10-20 bits/min | Low |
| SSVEP | NimbusLDA / NimbusQDA | 85-95% (4-class) | 30-50 bits/min | Low |
| Long-duration Adaptive | NimbusSTS (Py) | 75-90% (maintains over time) | Varies | Medium |
New: Use NimbusSTS (Python-only) for sessions >30 minutes or when you observe accuracy degradation over time. It’s the only model that explicitly handles temporal drift and non-stationarity.
Advanced Techniques
Hyperparameter Optimization
Use grid search or Bayesian optimization to find optimal hyperparameters:- Python
- Julia
Cross-Subject Transfer Learning
Train on multiple subjects for better generalization:Ensemble Methods
Combine multiple models for improved robustness:Confidence Calibration
Ensure predicted probabilities match actual accuracy:Model Limitations
Troubleshooting
Model Overfitting
Model Overfitting
Symptoms: High training accuracy, low test accuracySolutions:
- Increase
mu_scale(stronger regularization) - Use cross-validation for hyperparameter tuning
- Collect more training data
- Apply ensemble methods
Poor Cross-Subject Generalization
Poor Cross-Subject Generalization
Symptoms: Good within-subject, poor across-subject performanceSolutions:
- Train on multi-subject data
- Increase regularization (
mu_scale) - Normalize features consistently
- Use subject-specific calibration
Class Imbalance
Class Imbalance
Symptoms: Model biased toward majority classSolutions:
- Use class weighting
- Apply SMOTE or other resampling
- Adjust decision threshold
- Use stratified cross-validation
Next Steps
NimbusLDA
Fast, shared covariance classifier
NimbusQDA
Flexible, class-specific covariances
NimbusSTS (Python)
Adaptive, for non-stationary data
NimbusSoftmax (Python)
Non-Gaussian static classification
NimbusProbit (Julia)
Non-Gaussian static classification
Basic Examples
Complete Python & Julia code
Advanced Applications
Calibration, adaptation, hybrid systems
Development Philosophy: Nimbus provides battle-tested, production-ready models (NimbusLDA, NimbusQDA, NimbusSoftmax (Py), NimbusProbit (Jl), NimbusSTS (Py)) that are proven effective for BCI applications. These models cover the majority of BCI use cases with fast inference, uncertainty quantification, and online learning. NimbusSTS adds adaptive capabilities for non-stationary data and long-duration sessions.