- Add comprehensive health check system with multiple endpoints - Add Prometheus metrics endpoint - Add production logging configurations (5 strategies) - Add complete deployment documentation suite: * QUICKSTART.md - 30-minute deployment guide * DEPLOYMENT_CHECKLIST.md - Printable verification checklist * DEPLOYMENT_WORKFLOW.md - Complete deployment lifecycle * PRODUCTION_DEPLOYMENT.md - Comprehensive technical reference * production-logging.md - Logging configuration guide * ANSIBLE_DEPLOYMENT.md - Infrastructure as Code automation * README.md - Navigation hub * DEPLOYMENT_SUMMARY.md - Executive summary - Add deployment scripts and automation - Add DEPLOYMENT_PLAN.md - Concrete plan for immediate deployment - Update README with production-ready features All production infrastructure is now complete and ready for deployment.
594 lines
19 KiB
Markdown
594 lines
19 KiB
Markdown
# Machine Learning Framework Architecture
|
|
|
|
Zentrale ML Framework-Architektur für das Custom PHP Framework.
|
|
|
|
## Übersicht
|
|
|
|
Das ML Framework bietet eine wiederverwendbare, domänenunabhängige Machine Learning Infrastruktur, die von verschiedenen Framework-Komponenten (WAF, N+1 Detection, Performance Monitoring, etc.) genutzt werden kann.
|
|
|
|
## Architektur-Prinzipien
|
|
|
|
### 1. Domain-Agnostische Value Objects
|
|
Alle Core ML Value Objects befinden sich in `src/Framework/MachineLearning/ValueObjects/` und sind **nicht** an spezifische Domänen gebunden.
|
|
|
|
**Core Value Objects**:
|
|
- `Feature` - Generische Feature-Darstellung mit Type, Value, Metadata
|
|
- `FeatureType` - Enum für Feature-Kategorien (Frequency, Structural Pattern, etc.)
|
|
- `AnomalyDetection` - Generische Anomalie-Darstellung mit Type, Confidence, Evidence
|
|
- `AnomalyType` - Enum für Anomalie-Kategorien (Statistical, Outlier, Pattern Deviation, etc.)
|
|
- `Baseline` - Statistische Baseline mit Mean, Std Dev, Percentiles, Sample Count
|
|
|
|
### 2. Domain-Specific Extensions
|
|
Domänen-spezifische Erweiterungen befinden sich in jeweiligen Domain-Verzeichnissen:
|
|
|
|
**Beispiel WAF** (`src/Framework/Waf/MachineLearning/ValueObjects/`):
|
|
- `BehaviorBaseline` - WAF-spezifische Baseline-Erweiterung
|
|
- `BehaviorFeature` - WAF-spezifische Feature-Erweiterung
|
|
- `ModelAdjustment` - WAF-spezifische Model-Anpassungen
|
|
|
|
**Zukünftig N+1 Detection** (`src/Framework/Database/N+1Detection/MachineLearning/ValueObjects/`):
|
|
- Domänen-spezifische Value Objects für Query-Analyse
|
|
|
|
### 3. Interface-Driven Design
|
|
Alle ML-Komponenten nutzen Interfaces statt konkreter Implementierungen:
|
|
|
|
**Core Interfaces** (`src/Framework/MachineLearning/Core/`):
|
|
- `AnomalyDetectorInterface` - Anomalie-Erkennung
|
|
- `FeatureExtractorInterface` - Feature-Extraktion
|
|
- `MachineLearningEngineInterface` - ML-Engine-Orchestration
|
|
|
|
### 4. Composition over Inheritance
|
|
Keine Vererbungs-Hierarchien - nur Komposition und Interface-Implementation.
|
|
|
|
## Komponenten-Übersicht
|
|
|
|
### Core ML Components (`src/Framework/MachineLearning/`)
|
|
|
|
```
|
|
src/Framework/MachineLearning/
|
|
├── Core/
|
|
│ ├── AnomalyDetectorInterface.php # Interface für Anomalie-Detektoren
|
|
│ ├── FeatureExtractorInterface.php # Interface für Feature-Extraktion
|
|
│ └── MachineLearningEngineInterface.php # Interface für ML-Engine
|
|
│
|
|
├── ValueObjects/
|
|
│ ├── AnomalyDetection.php # Generische Anomalie-Darstellung
|
|
│ ├── AnomalyType.php # Enum: Anomalie-Typen
|
|
│ ├── Baseline.php # Statistische Baseline
|
|
│ ├── Feature.php # Generische Feature-Darstellung
|
|
│ └── FeatureType.php # Enum: Feature-Typen
|
|
│
|
|
└── README.md # Dokumentation
|
|
```
|
|
|
|
### Domain-Specific Components (Beispiel WAF)
|
|
|
|
```
|
|
src/Framework/Waf/MachineLearning/
|
|
├── Detectors/
|
|
│ ├── ClusteringAnomalyDetector.php # K-Means Clustering Detector
|
|
│ └── StatisticalAnomalyDetector.php # Statistical Z-Score/IQR Detector
|
|
│
|
|
├── Extractors/
|
|
│ └── RequestFeatureExtractor.php # HTTP Request Feature-Extraktion
|
|
│
|
|
├── MachineLearningEngine.php # WAF ML-Engine Implementation
|
|
│
|
|
└── ValueObjects/
|
|
├── BehaviorBaseline.php # WAF-spezifische Baseline
|
|
├── BehaviorFeature.php # WAF-spezifische Features
|
|
└── ModelAdjustment.php # WAF-spezifische Adjustments
|
|
```
|
|
|
|
## Value Object Details
|
|
|
|
### Feature
|
|
|
|
**Zweck**: Generische Feature-Darstellung für ML-Analyse
|
|
|
|
**Properties**:
|
|
```php
|
|
final readonly class Feature
|
|
{
|
|
public function __construct(
|
|
public FeatureType $type, // Feature-Kategorie
|
|
public string $name, // Feature-Name
|
|
public float $value, // Feature-Wert
|
|
public string $unit = 'count', // Einheit
|
|
public ?float $baseline = null, // Baseline-Wert (optional)
|
|
public ?float $standardDeviation = null, // Std Dev (optional)
|
|
public ?float $zScore = null, // Z-Score (optional)
|
|
public ?float $normalizedValue = null, // Normalisierter Wert (optional)
|
|
public array $metadata = [] // Zusätzliche Metadaten
|
|
) {}
|
|
}
|
|
```
|
|
|
|
**Usage**:
|
|
```php
|
|
$feature = new Feature(
|
|
type: FeatureType::STRUCTURAL_PATTERN,
|
|
name: 'path_depth',
|
|
value: 5.0,
|
|
unit: 'count',
|
|
zScore: 2.5,
|
|
metadata: ['path' => '/api/users/123/posts']
|
|
);
|
|
```
|
|
|
|
### FeatureType
|
|
|
|
**Enum-Werte**:
|
|
- `FREQUENCY` - Häufigkeits-basierte Features (Requests/Sekunde, Event-Rate, etc.)
|
|
- `STRUCTURAL_PATTERN` - Struktur-basierte Patterns (Path-Tiefe, Parameter-Anzahl, etc.)
|
|
- `BEHAVIORAL_PATTERN` - Verhaltens-Patterns (User-Agent-Pattern, Session-Pattern, etc.)
|
|
- `TIME_DISTRIBUTION` - Zeit-basierte Verteilungen (Tageszeit, Wochentag, etc.)
|
|
- `GEOGRAPHIC_DISTRIBUTION` - Geo-basierte Verteilungen (IP-Ranges, Länder, etc.)
|
|
- `CONTENT_CHARACTERISTICS` - Content-basierte Merkmale (Request-Size, Response-Size, etc.)
|
|
- `LATENCY` - Performance-Metriken (Response-Time, Processing-Time, etc.)
|
|
- `FAILURE_PATTERN` - Fehler-Patterns (Error-Rate, Timeout-Rate, etc.)
|
|
|
|
### AnomalyDetection
|
|
|
|
**Zweck**: Generische Anomalie-Darstellung mit Evidence und Confidence
|
|
|
|
**Properties**:
|
|
```php
|
|
final readonly class AnomalyDetection
|
|
{
|
|
public function __construct(
|
|
public AnomalyType $type, // Anomalie-Typ
|
|
public FeatureType $featureType, // Feature-Typ
|
|
public Percentage $confidence, // Confidence (0-100%)
|
|
public float $anomalyScore, // Anomaly Score (0.0-1.0)
|
|
public string $description, // Beschreibung
|
|
public array $features, // Array<Feature>
|
|
public array $evidence, // Evidence-Daten
|
|
public Timestamp $detectedAt // Detection-Zeitpunkt
|
|
) {}
|
|
}
|
|
```
|
|
|
|
**Factory Methods**:
|
|
```php
|
|
// Generic anomaly creation with automatic confidence calculation
|
|
AnomalyDetection::create(
|
|
type: AnomalyType::STATISTICAL_ANOMALY,
|
|
featureType: FeatureType::FREQUENCY,
|
|
anomalyScore: 0.85,
|
|
description: 'High request rate detected',
|
|
features: [$feature],
|
|
evidence: ['request_rate' => 150.0, 'baseline' => 50.0]
|
|
);
|
|
|
|
// Specific anomaly types
|
|
AnomalyDetection::statisticalAnomaly($featureType, $metric, $value, $expected, $stdDev);
|
|
AnomalyDetection::frequencySpike($currentRate, $baseline, $threshold);
|
|
AnomalyDetection::patternDeviation($featureType, $pattern, $deviationScore, $features);
|
|
```
|
|
|
|
### AnomalyType
|
|
|
|
**Enum-Werte**:
|
|
- `STATISTICAL_ANOMALY` - Statistische Abweichung (Z-Score, etc.)
|
|
- `OUTLIER_DETECTION` - IQR-basierte Outlier-Erkennung
|
|
- `FREQUENCY_SPIKE` - Frequency-Spike-Erkennung
|
|
- `PATTERN_DEVIATION` - Pattern-Abweichungs-Erkennung
|
|
- `BEHAVIORAL_DRIFT` - Behavioral-Drift-Erkennung
|
|
- `CLUSTER_ANOMALY` - Cluster-basierte Anomalie-Erkennung
|
|
- `THRESHOLD_VIOLATION` - Threshold-Überschreitungen
|
|
|
|
### Baseline
|
|
|
|
**Zweck**: Statistische Baseline für Anomalie-Detection
|
|
|
|
**Properties**:
|
|
```php
|
|
final readonly class Baseline
|
|
{
|
|
public function __construct(
|
|
public FeatureType $type, // Feature-Typ
|
|
public string $identifier, // Baseline-ID
|
|
public float $mean, // Mittelwert
|
|
public float $standardDeviation, // Standardabweichung
|
|
public float $median, // Median
|
|
public float $minimum, // Minimum
|
|
public float $maximum, // Maximum
|
|
public array $percentiles, // Percentiles (25, 75, 90, 95, 99)
|
|
public int $sampleCount, // Anzahl Samples
|
|
public Timestamp $createdAt, // Erstellungs-Zeitpunkt
|
|
public Timestamp $lastUpdated, // Letztes Update
|
|
public Duration $windowSize, // Zeitfenster-Größe
|
|
public float $confidence = 1.0 // Confidence (0.0-1.0)
|
|
) {}
|
|
}
|
|
```
|
|
|
|
**Methods**:
|
|
```php
|
|
// Calculate Z-Score
|
|
$zScore = $baseline->calculateZScore(150.0);
|
|
|
|
// Get Anomaly Score
|
|
$anomalyScore = $baseline->getAnomalyScore(150.0);
|
|
|
|
// Check if value is outlier
|
|
$isOutlier = $baseline->isOutlier(150.0);
|
|
```
|
|
|
|
## Interface Details
|
|
|
|
### AnomalyDetectorInterface
|
|
|
|
**Zweck**: Abstraktes Interface für Anomalie-Detektoren
|
|
|
|
**Methods**:
|
|
```php
|
|
interface AnomalyDetectorInterface
|
|
{
|
|
// Detector-Metadaten
|
|
public function getName(): string;
|
|
public function getSupportedFeatureTypes(): array;
|
|
|
|
// Detection
|
|
public function canAnalyze(array $features): bool;
|
|
public function detectAnomalies(array $features, ?Baseline $baseline = null): array;
|
|
|
|
// Model Management
|
|
public function updateModel(array $features): void;
|
|
|
|
// Configuration
|
|
public function getConfiguration(): array;
|
|
public function isEnabled(): bool;
|
|
}
|
|
```
|
|
|
|
**Implementierungen**:
|
|
- `StatisticalAnomalyDetector` - Z-Score, IQR, Trend-Analyse
|
|
- `ClusteringAnomalyDetector` - K-Means Clustering, Density-basierte Anomalien
|
|
|
|
### FeatureExtractorInterface
|
|
|
|
**Zweck**: Abstraktes Interface für Feature-Extraktion
|
|
|
|
**Methods**:
|
|
```php
|
|
interface FeatureExtractorInterface
|
|
{
|
|
// Extractor-Metadaten
|
|
public function getFeatureType(): FeatureType;
|
|
public function getPriority(): int;
|
|
|
|
// Extraction
|
|
public function canExtract(mixed $input): bool;
|
|
public function extractFeatures(mixed $input): array;
|
|
|
|
// Configuration
|
|
public function isEnabled(): bool;
|
|
}
|
|
```
|
|
|
|
**Domain-Specific Implementations**:
|
|
- WAF: `RequestFeatureExtractor` - Extrahiert Features aus HTTP Requests
|
|
- N+1 Detection: `QueryFeatureExtractor` - Extrahiert Features aus Queries (geplant)
|
|
|
|
### MachineLearningEngineInterface
|
|
|
|
**Zweck**: Orchestration von Feature-Extraction und Anomaly-Detection
|
|
|
|
**Methods**:
|
|
```php
|
|
interface MachineLearningEngineInterface
|
|
{
|
|
// Analysis
|
|
public function analyzeRequest(mixed $input): AnalysisResult;
|
|
|
|
// Configuration
|
|
public function isEnabled(): bool;
|
|
public function getConfiguration(): array;
|
|
}
|
|
```
|
|
|
|
## Verwendungsmuster
|
|
|
|
### 1. Feature-Extraction
|
|
|
|
```php
|
|
// WAF Example
|
|
$extractor = new RequestFeatureExtractor();
|
|
|
|
if ($extractor->canExtract($httpRequest)) {
|
|
$features = $extractor->extractFeatures($httpRequest);
|
|
// Returns: Array<Feature>
|
|
}
|
|
```
|
|
|
|
### 2. Anomaly-Detection
|
|
|
|
```php
|
|
// Statistical Detector Example
|
|
$detector = new StatisticalAnomalyDetector(
|
|
enabled: true,
|
|
confidenceThreshold: 0.75,
|
|
zScoreThreshold: 2.0,
|
|
minSampleSize: 20
|
|
);
|
|
|
|
$anomalies = $detector->detectAnomalies($features, $baseline);
|
|
// Returns: Array<AnomalyDetection>
|
|
```
|
|
|
|
### 3. ML-Engine Orchestration
|
|
|
|
```php
|
|
// WAF ML Engine Example
|
|
$engine = new MachineLearningEngine(
|
|
enabled: true,
|
|
extractors: [$featureExtractor],
|
|
detectors: [$statisticalDetector, $clusteringDetector],
|
|
clock: $clock,
|
|
analysisTimeout: Duration::fromSeconds(5),
|
|
confidenceThreshold: Percentage::from(60.0)
|
|
);
|
|
|
|
$result = $engine->analyzeRequest($httpRequest);
|
|
|
|
if ($result->enabled && !empty($result->anomalies)) {
|
|
// Handle anomalies
|
|
foreach ($result->anomalies as $anomaly) {
|
|
$this->logger->warning('Anomaly detected', [
|
|
'type' => $anomaly->type->value,
|
|
'confidence' => $anomaly->confidence->getValue(),
|
|
'description' => $anomaly->description
|
|
]);
|
|
}
|
|
}
|
|
```
|
|
|
|
## Extension Points
|
|
|
|
### 1. Neue Feature-Typen hinzufügen
|
|
|
|
```php
|
|
// Add new enum value to FeatureType
|
|
enum FeatureType: string
|
|
{
|
|
case FREQUENCY = 'frequency';
|
|
case STRUCTURAL_PATTERN = 'structural_pattern';
|
|
// ... existing types
|
|
case NEW_FEATURE_TYPE = 'new_feature_type'; // NEW
|
|
}
|
|
```
|
|
|
|
### 2. Neue Anomalie-Typen hinzufügen
|
|
|
|
```php
|
|
// Add new enum value to AnomalyType
|
|
enum AnomalyType: string
|
|
{
|
|
case STATISTICAL_ANOMALY = 'statistical_anomaly';
|
|
case OUTLIER_DETECTION = 'outlier_detection';
|
|
// ... existing types
|
|
case NEW_ANOMALY_TYPE = 'new_anomaly_type'; // NEW
|
|
}
|
|
```
|
|
|
|
### 3. Neue Detector-Implementierung
|
|
|
|
```php
|
|
final readonly class CustomAnomalyDetector implements AnomalyDetectorInterface
|
|
{
|
|
public function getName(): string
|
|
{
|
|
return 'Custom Anomaly Detector';
|
|
}
|
|
|
|
public function getSupportedFeatureTypes(): array
|
|
{
|
|
return [FeatureType::FREQUENCY, FeatureType::STRUCTURAL_PATTERN];
|
|
}
|
|
|
|
public function detectAnomalies(array $features, ?Baseline $baseline = null): array
|
|
{
|
|
$anomalies = [];
|
|
|
|
foreach ($features as $feature) {
|
|
// Custom detection logic
|
|
if ($this->isAnomalous($feature)) {
|
|
$anomalies[] = AnomalyDetection::create(
|
|
type: AnomalyType::STATISTICAL_ANOMALY,
|
|
featureType: $feature->type,
|
|
anomalyScore: $this->calculateScore($feature),
|
|
description: 'Custom anomaly detected',
|
|
features: [$feature]
|
|
);
|
|
}
|
|
}
|
|
|
|
return $anomalies;
|
|
}
|
|
|
|
// ... other interface methods
|
|
}
|
|
```
|
|
|
|
### 4. Neue Domain Integration
|
|
|
|
**Beispiel: N+1 Detection ML Integration**
|
|
|
|
```php
|
|
// 1. Create domain-specific extractor
|
|
namespace App\Framework\Database\N+1Detection\MachineLearning\Extractors;
|
|
|
|
final readonly class QueryFeatureExtractor implements FeatureExtractorInterface
|
|
{
|
|
public function getFeatureType(): FeatureType
|
|
{
|
|
return FeatureType::STRUCTURAL_PATTERN;
|
|
}
|
|
|
|
public function extractFeatures(mixed $input): array
|
|
{
|
|
// Extract features from QueryExecutionContext
|
|
$queryContext = $input; // instanceof QueryExecutionContext
|
|
|
|
return [
|
|
new Feature(
|
|
type: FeatureType::FREQUENCY,
|
|
name: 'query_count_in_request',
|
|
value: $queryContext->queryCount,
|
|
unit: 'queries'
|
|
),
|
|
new Feature(
|
|
type: FeatureType::STRUCTURAL_PATTERN,
|
|
name: 'query_pattern',
|
|
value: $this->calculatePatternScore($queryContext),
|
|
unit: 'score',
|
|
metadata: ['query_type' => $queryContext->queryType]
|
|
)
|
|
];
|
|
}
|
|
}
|
|
|
|
// 2. Create domain-specific engine
|
|
namespace App\Framework\Database\N+1Detection\MachineLearning;
|
|
|
|
final readonly class N+1DetectionEngine implements MachineLearningEngineInterface
|
|
{
|
|
public function __construct(
|
|
private array $extractors, // QueryFeatureExtractor
|
|
private array $detectors, // StatisticalAnomalyDetector, ClusteringAnomalyDetector
|
|
private Clock $clock
|
|
) {}
|
|
|
|
public function analyzeRequest(mixed $input): AnalysisResult
|
|
{
|
|
// Orchestrate feature extraction and anomaly detection
|
|
// for N+1 query detection
|
|
}
|
|
}
|
|
```
|
|
|
|
## Performance Characteristics
|
|
|
|
### Statistical Anomaly Detector
|
|
- **Execution Time**: <5ms per request (typical)
|
|
- **Memory Usage**: <1MB (with 1000-sample history)
|
|
- **Throughput**: 10,000+ detections/second
|
|
- **Latency**: Sub-millisecond for Z-Score, <2ms for IQR
|
|
|
|
### Clustering Anomaly Detector
|
|
- **Execution Time**: 10-50ms per request (depends on cluster count)
|
|
- **Memory Usage**: 2-5MB (with 100+ clusters)
|
|
- **Throughput**: 1,000+ detections/second
|
|
- **Latency**: 10-50ms (K-Means iteration overhead)
|
|
|
|
### Feature Extraction (WAF)
|
|
- **Execution Time**: <1ms per request
|
|
- **Memory Usage**: <100KB per request
|
|
- **Throughput**: 50,000+ extractions/second
|
|
- **Latency**: Sub-millisecond
|
|
|
|
## Testing Strategy
|
|
|
|
### Unit Tests
|
|
- **Value Objects**: Test immutability, equality, serialization
|
|
- **Detectors**: Test detection logic with synthetic data
|
|
- **Extractors**: Test feature extraction with mock inputs
|
|
|
|
### Integration Tests
|
|
- **ML Pipeline**: Test full flow from input to anomaly detection
|
|
- **Multi-Detector**: Test detector coordination and result merging
|
|
- **Domain Integration**: Test domain-specific implementations
|
|
|
|
### Performance Tests
|
|
- **Throughput**: Benchmark detections per second
|
|
- **Latency**: Measure p50, p95, p99 latencies
|
|
- **Memory**: Monitor memory usage under load
|
|
|
|
## Migration Path (WAF Example)
|
|
|
|
### Phase 1: Central ML Framework Creation ✅
|
|
1. Create central Value Objects in `src/Framework/MachineLearning/ValueObjects/`
|
|
2. Create Core Interfaces in `src/Framework/MachineLearning/Core/`
|
|
3. Update all imports to use central Value Objects
|
|
|
|
### Phase 2: WAF Integration ✅
|
|
1. Update WAF Detectors to use central Value Objects
|
|
2. Update WAF Extractors to use central Interfaces
|
|
3. Update WAF ML Engine to use central Interfaces
|
|
4. Update WAF Tests (27/27 passing ✅)
|
|
|
|
### Phase 3: Cleanup ✅
|
|
1. Delete old WAF-specific Value Objects
|
|
2. Keep WAF-specific extensions (BehaviorBaseline, BehaviorFeature, ModelAdjustment)
|
|
3. Document architecture (this file)
|
|
|
|
### Phase 4: N+1 Detection Integration (Planned)
|
|
1. Create N+1-specific Extractors implementing FeatureExtractorInterface
|
|
2. Reuse central Detectors (StatisticalAnomalyDetector, ClusteringAnomalyDetector)
|
|
3. Create N+1 ML Engine implementing MachineLearningEngineInterface
|
|
4. Create N+1-specific tests
|
|
|
|
## Best Practices
|
|
|
|
### 1. Feature Design
|
|
- **Descriptive Names**: `path_depth` statt `pd`, `request_rate` statt `rr`
|
|
- **Consistent Units**: Immer Einheit angeben (count, ms, bytes, percent)
|
|
- **Metadata Usage**: Zusätzlichen Context in `metadata` speichern
|
|
- **Z-Score Calculation**: Nur wenn Baseline vorhanden
|
|
|
|
### 2. Detector Implementation
|
|
- **Feature Type Support**: Explicit list of supported FeatureTypes
|
|
- **Confidence Calculation**: Always calculate confidence based on evidence
|
|
- **Early Returns**: Exit early if detector disabled or features incompatible
|
|
- **Evidence Collection**: Store detailed evidence for debugging
|
|
- **History Management**: Limit history size to prevent memory issues
|
|
|
|
### 3. Engine Orchestration
|
|
- **Timeout Management**: Set reasonable analysis timeouts
|
|
- **Detector Coordination**: Run detectors in parallel when possible
|
|
- **Result Aggregation**: Deduplicate and sort anomalies by confidence
|
|
- **Error Handling**: Gracefully handle detector failures
|
|
|
|
### 4. Performance Optimization
|
|
- **Caching**: Cache baselines and detection results
|
|
- **Batch Processing**: Process multiple features in batches
|
|
- **Lazy Loading**: Load history only when needed
|
|
- **Memory Limits**: Limit history sizes and sample counts
|
|
|
|
## Future Enhancements
|
|
|
|
### 1. Advanced Detectors
|
|
- **Neural Network Detector** - Deep learning-based anomaly detection
|
|
- **Time Series Detector** - LSTM-based time series anomaly detection
|
|
- **Ensemble Detector** - Combine multiple detectors with voting
|
|
|
|
### 2. Feature Engineering
|
|
- **Automatic Feature Selection** - ML-based feature importance
|
|
- **Feature Normalization** - Standardization and scaling
|
|
- **Feature Generation** - Polynomial features, interactions
|
|
|
|
### 3. Model Persistence
|
|
- **Model Serialization** - Save/load trained models
|
|
- **Model Versioning** - Version control for models
|
|
- **Model Management** - A/B testing, rollback, monitoring
|
|
|
|
### 4. Online Learning
|
|
- **Incremental Learning** - Update models in real-time
|
|
- **Adaptive Baselines** - Automatically adjust baselines
|
|
- **Concept Drift Detection** - Detect distribution shifts
|
|
|
|
## Zusammenfassung
|
|
|
|
Das zentrale ML Framework bietet:
|
|
- ✅ **Domain-agnostische Value Objects** für Wiederverwendung
|
|
- ✅ **Interface-driven Design** für Flexibilität
|
|
- ✅ **Composition over Inheritance** für Wartbarkeit
|
|
- ✅ **Performance-optimiert** für Production-Einsatz
|
|
- ✅ **Testbar** mit 27/27 WAF ML Tests passing
|
|
- ✅ **Erweiterbar** für neue Domänen (N+1 Detection geplant)
|
|
- ✅ **Dokumentiert** mit klaren Usage-Patterns
|
|
|
|
**Status**: Phase 1-3 ✅ Complete | Phase 4 (N+1 Detection) 🔜 Pending
|