| name | anomaly-detector |
| description | Anomaly and outlier detection using Isolation Forest, One-Class SVM, autoencoders, and statistical methods. Activates for "anomaly detection", "outlier detection", "fraud detection", "intrusion detection", "abnormal behavior", "unusual patterns", "detect anomalies", "system monitoring". Handles supervised and unsupervised anomaly detection with SpecWeave increment integration.
|
Anomaly Detector
Overview
Detect unusual patterns, outliers, and anomalies in data using statistical methods, machine learning, and deep learning. Critical for fraud detection, security monitoring, quality control, and system health monitoring—all integrated with SpecWeave's increment workflow.
Why Anomaly Detection is Different
Challenge: Anomalies are rare (0.1% - 5% of data)
Standard classification doesn't work:
- ❌ Extreme class imbalance
- ❌ Unknown anomaly patterns
- ❌ Expensive to label anomalies
- ❌ Anomalies evolve over time
Anomaly detection approaches:
- ✅ Unsupervised (no labels needed)
- ✅ Semi-supervised (learn from normal data)
- ✅ Statistical (deviation from expected)
- ✅ Context-aware (what's normal for this user/time/location?)
Anomaly Detection Methods
1. Statistical Methods (Baseline)
Z-Score / Standard Deviation:
from specweave import AnomalyDetector
detector = AnomalyDetector(
method="statistical",
increment="0042"
)
anomalies = detector.detect(
data=transaction_amounts,
threshold=3.0
)
IQR (Interquartile Range):
detector = AnomalyDetector(method="iqr")
anomalies = detector.detect(data=response_times)
2. Isolation Forest (Recommended)
Best for: General purpose, high-dimensional data
from specweave import IsolationForestDetector
detector = IsolationForestDetector(
contamination=0.05,
increment="0042"
)
detector.fit(X_train)
predictions = detector.predict(X_test)
anomaly_scores = detector.score(X_test)
Why Isolation Forest works:
- Fast (O(n log n))
- Handles high dimensions well
- No assumptions about data distribution
- Anomalies are easier to isolate (fewer splits)
3. One-Class SVM
Best for: When you have only normal data for training
from specweave import OneClassSVMDetector
detector = OneClassSVMDetector(
kernel='rbf',
nu=0.05,
increment="0042"
)
detector.fit(X_normal)
predictions = detector.predict(X_new)
4. Autoencoders (Deep Learning)
Best for: Complex patterns, high-dimensional data, images
from specweave import AutoencoderDetector
detector = AutoencoderDetector(
encoding_dim=32,
layers=[64, 32, 16, 32, 64],
increment="0042"
)
detector.fit(
X_normal,
epochs=100,
validation_split=0.2
)
anomaly_scores = detector.score(X_test)
How autoencoders work:
Input → Encoder → Compressed → Decoder → Reconstructed
Normal data: Low reconstruction error (learned well)
Anomalies: High reconstruction error (never seen before)
5. LOF (Local Outlier Factor)
Best for: Density-based anomalies (sparse regions)
from specweave import LOFDetector
detector = LOFDetector(
n_neighbors=20,
contamination=0.05,
increment="0042"
)
detector.fit(X_train)
predictions = detector.predict(X_test)
Anomaly Detection Workflows
Workflow 1: Fraud Detection
from specweave import FraudDetectionPipeline
pipeline = FraudDetectionPipeline(increment="0042")
pipeline.fit(normal_transactions)
fraud_scores = pipeline.predict_proba(new_transactions)
Fraud Detection Best Practices:
pipeline.add_signals([
'amount_vs_user_average',
'distance_from_home',
'merchant_risk_score',
'velocity_24h'
])
explanation = pipeline.explain_prediction(suspicious_transaction)
Workflow 2: System Anomaly Detection
from specweave import SystemAnomalyPipeline
pipeline = SystemAnomalyPipeline(increment="0042")
pipeline.fit(normal_metrics)
anomalies = pipeline.detect(current_metrics)
System Monitoring Best Practices:
pipeline.add_time_windows([
'5min',
'1hour',
'24hour'
])
pipeline.detect_correlations([
('high_cpu', 'slow_response'),
('memory_leak', 'increasing_errors')
])
pipeline.set_alert_rules(
min_severity='medium',
min_duration='5min',
max_alerts_per_hour=5
)
Workflow 3: Manufacturing Quality Control
from specweave import QualityControlPipeline
pipeline = QualityControlPipeline(increment="0042")
pipeline.fit(good_product_sensors)
defect_scores = pipeline.predict(production_line_data)
Workflow 4: Network Intrusion Detection
from specweave import IntrusionDetectionPipeline
pipeline = IntrusionDetectionPipeline(increment="0042")
pipeline.fit(normal_network_traffic)
intrusions = pipeline.detect(network_traffic_stream)
Evaluation Metrics
Anomaly detection metrics (different from classification):
from specweave import AnomalyEvaluator
evaluator = AnomalyEvaluator(increment="0042")
metrics = evaluator.evaluate(
y_true=true_labels,
y_pred=predictions,
y_scores=anomaly_scores
)
Key Metrics:
-
Precision @ K - Of top K flagged anomalies, how many are real?
precision_at_100 = evaluator.precision_at_k(k=100)
-
Recall @ K - Of all real anomalies, how many did we catch in top K?
recall_at_100 = evaluator.recall_at_k(k=100)
-
ROC AUC - Overall discrimination ability
roc_auc = evaluator.roc_auc(y_true, y_scores)
-
PR AUC - Better for imbalanced data
pr_auc = evaluator.pr_auc(y_true, y_scores)
Evaluation Report:
# Anomaly Detection Evaluation
## Dataset
- Total samples: 100,000
- Anomalies: 500 (0.5%)
- Features: 25
## Method: Isolation Forest
## Performance Metrics
- ROC AUC: 0.94 ✅ (excellent)
- PR AUC: 0.78 ✅ (good for 0.5% anomaly rate)
## Precision-Recall Tradeoff
- Precision @ 100: 85% (85 true anomalies in top 100)
- Recall @ 100: 17% (caught 17% of all anomalies)
- Precision @ 500: 62% (310 true anomalies in top 500)
- Recall @ 500: 62% (caught 62% of all anomalies)
## Business Impact (Fraud Detection Example)
- Review budget: 500 transactions/day
- At Precision @ 500 = 62%:
- True fraud caught: 310/day ($155,000 saved)
- False positives: 190/day ($950 review cost)
- Net benefit: $154,050/day ✅
## Recommendation
✅ DEPLOY with threshold for top 500 (62% precision)
Integration with SpecWeave
Increment Structure
.specweave/increments/0042-fraud-detection/
├── spec.md (detection requirements, business impact)
├── plan.md (method selection, threshold tuning)
├── tasks.md
├── data/
│ ├── normal_transactions.csv
│ ├── labeled_fraud.csv (if available)
│ └── schema.yaml
├── experiments/
│ ├── statistical-baseline/
│ ├── isolation-forest/
│ ├── one-class-svm/
│ └── autoencoder/
├── models/
│ ├── isolation_forest_model.pkl
│ └── threshold_config.json
├── evaluation/
│ ├── precision_recall_curve.png
│ ├── roc_curve.png
│ ├── top_anomalies.csv
│ └── evaluation_report.md
└── deployment/
├── real_time_api.py
├── monitoring_dashboard.json
└── alert_rules.yaml
Best Practices
1. Start with Labeled Anomalies (if available)
detector.fit(X_train)
metrics = evaluator.evaluate(y_true_test, detector.predict(X_test))
2. Tune Contamination Parameter
for contamination in [0.01, 0.05, 0.1, 0.2]:
detector = IsolationForestDetector(contamination=contamination)
detector.fit(X_train)
metrics = evaluator.evaluate(y_test, detector.predict(X_test))
3. Explain Anomalies
explainer = AnomalyExplainer(detector, increment="0042")
for anomaly in top_anomalies:
explanation = explainer.explain(anomaly)
print(f"Anomaly: {anomaly.id}")
print(f"Reasons:")
print(f" - {explanation.top_features}")
print(f" - Similar cases: {explanation.similar_cases}")
4. Handle Concept Drift
monitor = AnomalyMonitor(increment="0042")
monitor.track_daily_performance()
if monitor.performance_degraded():
detector.retrain(new_normal_data)
5. Set Business-Driven Thresholds
optimizer = ThresholdOptimizer(increment="0042")
optimal_threshold = optimizer.find_optimal(
detector=detector,
data=validation_data,
false_positive_cost=5,
false_negative_cost=500
)
Advanced Features
1. Ensemble Anomaly Detection
ensemble = AnomalyEnsemble(increment="0042")
ensemble.add_detector("isolation_forest", weight=0.4)
ensemble.add_detector("one_class_svm", weight=0.3)
ensemble.add_detector("autoencoder", weight=0.3)
anomalies = ensemble.detect(X_test)
2. Contextual Anomaly Detection
detector = ContextualAnomalyDetector(increment="0042")
detector.fit(data, contexts=['user_id', 'time_of_day', 'location'])
3. Sequential Anomaly Detection
detector = SequenceAnomalyDetector(
method='lstm',
window_size=10,
increment="0042"
)
Commands
/ml:train-anomaly-detector 0042
/ml:evaluate-anomaly-detector 0042
/ml:explain-anomalies 0042 --top 100
Summary
Anomaly detection is critical for:
- ✅ Fraud detection (financial transactions)
- ✅ Security monitoring (intrusion detection)
- ✅ Quality control (manufacturing defects)
- ✅ System health (performance monitoring)
- ✅ Business intelligence (unusual patterns)
This skill provides battle-tested methods integrated with SpecWeave's increment workflow, ensuring anomaly detectors are reproducible, explainable, and business-aligned.