A sophisticated scalable anomaly detection system that combines Bayesian Networks with evolutionary optimization algorithms (Genetic Algorithm and CMA-ES) to detect anomalies in high-dimensional time series data, specifically designed for electrical vehicle charging station (wallbox) data analysis.
This system addresses the "curse of dimensionality" problem in Bayesian Network learning by implementing a feature grouping strategy that divides large feature sets into manageable groups, learns separate Bayesian Networks for each group, and then aggregates the likelihood scores for final anomaly detection.
The core technical innovation lies in the scalable approach to Bayesian Network learning through intelligent feature grouping, making it computationally feasible to apply probabilistic anomaly detection to high-dimensional datasets.
- Input File:
Dati_wallbox_aggregati.csv - Original Dimensions: 2,400 samples Γ 230 features
- Domain: Electrical vehicle charging station operational data
- Data Type: Mixed numerical/categorical time series data
- Post-Processing: 2,400 samples Γ 136 features (after feature selection and encoding)
βββββββββββββββββββ ββββββββββββββββββββ ββββββββββββββββββββ
β DataLoader βββββΆβ DataPreprocessor βββββΆβ FeatureGrouper β
βββββββββββββββββββ ββββββββββββββββββββ ββββββββββββββββββββ
β
βββββββββββββββββββ ββββββββββββββββββββ βββββββββββββββββββββββββ
βResultVisualizer ββββββ AnomalyDetector ββββββBayesianNetworkLearnerβ
βββββββββββββββββββ ββββββββββββββββββββ βββββββββββββββββββββββββ
β
βββββββββββββββββββββββ
βEvolutionaryOptimizerβ
β (GA & CMA-ES) β
βββββββββββββββββββββββ
Purpose: Robust data ingestion with comprehensive validation
Key Features:
- File existence validation with error handling
- Data integrity checks (β₯10 rows, β₯2 columns)
- Memory usage monitoring and reporting
- Missing value statistics computation
- Data type profiling (numeric vs categorical)
Technical Rationale: Ensures data quality before expensive Bayesian Network computations.
Purpose: Transform raw data into Bayesian Network-compatible format
- Column Dropping: Features with >50% missing values (configurable)
- Numeric Imputation: Median strategy (robust to outliers)
- Categorical Imputation: Mode strategy
- Rationale: Median imputation is robust for skewed distributions common in operational data
- Label Encoding for categorical variables
- Automatic type detection and conversion
- Error handling with problematic column removal
- Rationale: Preserves ordinality while being compatible with discretization
- StandardScaler (z-score normalization)
- Rationale: Ensures equal contribution to correlation-based grouping
Purpose: Divide features into computationally manageable groups for scalable BN learning
Multi-level fallback approach:
- Hierarchical Clustering on correlation distance matrix
- K-Means Clustering on correlation features
- Graph-based clustering using correlation thresholds
- Greedy correlation grouping as final fallback
Technical Implementation:
- Distance Metric:
1 - |correlation|(correlation distance) - Linkage Method: Complete linkage for compact clusters
- Cluster Cutting: Dynamic threshold to achieve target group sizes
- Random Grouping: Baseline comparison
- Variance-based Grouping: Groups by feature variance
- Domain-based Grouping: Manual feature categorization
Configuration: Group size = 10-15 features (optimal for BN learning complexity)
Technical Rationale: Correlated features likely share similar probabilistic dependencies, making them suitable for joint Bayesian Network modeling.
Purpose: Learn probabilistic models for each feature group Framework: Uses pgmpy library for Bayesian Network operations
- Method: K-Bins discretization with uniform strategy
- Bins: 3-5 bins (configurable)
- Rationale: BNs require discrete variables; fewer bins ensure sufficient samples per bin for reliable probability estimation
Primary: Independence Model (Naive Bayes)
- Assumption: Features within groups are conditionally independent
- Rationale: Computationally efficient, robust with limited data, provides baseline probabilistic model
Alternative Algorithms:
- Hill Climbing: Structure optimization with BIC scoring
- PC Algorithm: Constraint-based structure learning
- Rationale: More complex structures when computational resources allow
- Maximum Likelihood Estimation for parameter fitting
- Laplace Smoothing to handle zero probabilities
- Rationale: MLE provides unbiased parameter estimates with sufficient data
Purpose: Compute log-likelihood scores for each sample under each Bayesian Network
Process:
- Data discretization using fitted discretizers
- Log-likelihood computation for each sample under each BN
- Missing value handling during inference
- Matrix assembly: Samples Γ Groups likelihood matrix
Technical Rationale: Log-likelihoods prevent numerical underflow and enable additive combination.
Purpose: Aggregate likelihood scores and identify anomalies
- Mean: Average likelihood across groups
- Min: Most pessimistic (lowest) likelihood
- Weighted: Importance-weighted combination
- Median: Robust central tendency
Transformation: Negative log-likelihood β Anomaly score Normalization:
- Z-score Transformation:
(score - mean) / std - Rank Transformation: Percentile-based scoring
- Percentile-based: Top X% as anomalies (default: 5%)
- Standard Deviation: Mean + kΓstd threshold
- IQR-based: Interquartile range outlier detection
Framework: DEAP (Distributed Evolutionary Algorithms in Python)
Parameter Space:
{
'threshold_percentile': (1.0, 10.0),
'aggregation_method': ['mean', 'min', 'median', 'weighted', 'sum'],
'use_zscore_transformation': [True, False],
'threshold_method': ['percentile', 'std', 'iqr', 'adaptive']
}Genetic Operators:
- Selection: Tournament selection (size=3)
- Crossover: Simulated binary crossover for continuous variables
- Mutation: Gaussian mutation with adaptive sigma
- Population: 50-100 individuals
- Generations: 100-150
Fitness Function: Multi-objective components:
- Anomaly separation: Distance between normal and anomaly score distributions
- Statistical significance: T-test p-value between groups
- Score spread: Variance in anomaly scores
- Threshold stability: Robustness of threshold choice
Framework: CMA-ES (Covariance Matrix Adaptation Evolution Strategy)
Technical Advantages:
- Self-adaptive: Automatically adjusts step sizes and search directions
- Continuous optimization: Better for real-valued parameters
- Robust convergence: Less prone to local optima
Configuration:
- Initial Sigma: 0.8 (high exploration)
- Population Size: Auto-determined by algorithm
- Generations: 150
Purpose: Comprehensive result analysis and presentation
Visualization Components:
- Anomaly Score Distribution: Histograms and box plots comparing normal vs anomaly distributions
- Likelihood Heatmap: Feature group contribution visualization
- Anomaly Timeline: Temporal pattern analysis
- Feature Group Contributions: Relative importance analysis
Output Format: High-resolution PNG files (300 DPI) with publication-quality formatting
Based on execution results:
- Original Data: 2,400 samples Γ 230 features
- After Preprocessing: 136 features retained
- Feature Groups: 14 groups created
- Anomalies Detected: 93 samples (3.875% anomaly rate)
- Optimization Algorithm: CMA-ES achieved superior performance
- Best Parameters:
- Threshold percentile: 3.85%
- Aggregation: Weighted
- Z-score: Disabled
- Fitness: 81.36
- Feature Grouping: Reduces BN complexity from O(2^n) to O(kΓ2^(n/k))
- Parallel BN Learning: Independent group processing
- Memory-Efficient: Streaming likelihood computation
- Multi-level Fallbacks: Each component has multiple implementation strategies
- Parameter Validation: Extensive bounds checking and error handling
- Missing Data Handling: Comprehensive imputation strategies
- Modular Design: Each component independently configurable
- Multiple Algorithms: Choice between GA and CMA-ES optimization
- Flexible Aggregation: Multiple score combination methods
pandas>=1.3.0
numpy>=1.20.0
scikit-learn>=1.0.0
pgmpy>=0.1.15
deap>=1.3.1
cma>=3.1.0
matplotlib>=3.4.0
seaborn>=0.11.0
from bayesian_anomaly_detector import BayesianAnomalyDetector
# Initialize detector
detector = BayesianAnomalyDetector()
# Load and process data
data = detector.load_data('Dati_wallbox_aggregati.csv')
processed_data = detector.preprocess_data(data)
# Create feature groups
feature_groups = detector.create_feature_groups(processed_data)
# Learn Bayesian Networks
networks = detector.learn_bayesian_networks(processed_data, feature_groups)
# Detect anomalies
anomaly_scores, anomaly_labels = detector.detect_anomalies(processed_data, networks, feature_groups)
# Visualize results
detector.visualize_results(anomaly_scores, anomaly_labels)from bayesian_anomaly_detector import BayesianAnomalyDetector
from evolutionary_optimizer import CMAESOptimizer
# Initialize components
detector = BayesianAnomalyDetector()
optimizer = CMAESOptimizer()
# Load and process data
data = detector.load_data('Dati_wallbox_aggregati.csv')
processed_data = detector.preprocess_data(data)
# Optimize parameters
best_params = optimizer.optimize(processed_data, generations=150)
# Run detection with optimized parameters
anomaly_scores, anomaly_labels = detector.detect_anomalies(
processed_data, networks, feature_groups, params=best_params
)- Anomaly Scores: Continuous anomaly likelihood for each sample
- Binary Classification: Normal/anomaly labels
- Confidence Metrics: Statistical significance measures
- Optimization Convergence: Algorithm performance metrics
- CSV Results: Detailed anomaly scores and classifications
- Visualizations: Publication-ready plots and charts
- Configuration: Complete parameter settings for reproducibility
- Summary Reports: Human-readable analysis summaries
- Optimization Logs: Algorithm convergence and performance data
This system is grounded in several key theoretical principles:
- Probabilistic Anomaly Detection: Uses Bayesian principles to model normal data distribution and detect deviations
- Divide-and-Conquer: Addresses computational complexity through intelligent feature partitioning
- Evolutionary Optimization: Applies metaheuristic optimization to find optimal detection parameters
- Multi-objective Optimization: Balances multiple anomaly detection quality metrics simultaneously
- Fork the repository
- Create a feature branch (
git checkout -b feature/amazing-feature) - Commit your changes (
git commit -m 'Add some amazing feature') - Push to the branch (
git push origin feature/amazing-feature) - Open a Pull Request
This project is licensed under the MIT License - see the LICENSE file for details.
- Koller, D., & Friedman, N. (2009). Probabilistic Graphical Models: Principles and Techniques
- Scutari, M. (2010). Learning Bayesian Networks with the bnlearn R Package
- Hansen, N. (2006). The CMA Evolution Strategy: A Comparing Review
- Fortin, F. A., et al. (2012). DEAP: Evolutionary algorithms made easy
For questions, issues, or contributions, please open an issue on the GitHub repository or contact the development team.
This system represents a sophisticated approach to scalable anomaly detection that maintains theoretical rigor while providing practical applicability to real-world high-dimensional datasets.