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.
View on GitHubanton-abyzov/specweave
sw-ml
January 25, 2026
Select agents to install to:
npx add-skill https://github.com/anton-abyzov/specweave/blob/main/plugins/specweave-ml/skills/anomaly-detector/SKILL.md -a claude-code --skill anomaly-detectorInstallation paths:
.claude/skills/anomaly-detector/# 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**:
```python
from specweave import AnomalyDetector
detector = AnomalyDetector(
method="statistical",
increment="0042"
)
# Flag values > 3 standard deviations from mean
anomalies = detector.detect(
data=transaction_amounts,
threshold=3.0
)
# Simple, fast, but assumes normal distribution
```
**IQR (Interquartile Range)**:
```python
# More robust to non-normal distributions
detector = AnomalyDetector(method="iqr")
# Flag values outside [Q1 - 1.5*IQR, Q3 + 1.5*IQR]
anomalies = detector.detect(data=response_times)
# Good for skewed distributions
```
### 2. Isolation Forest (Recommended)
**Best for**: General purpose, high-dimensional data
```python
from specweave import IsolationForestDetector
detector = IsolationForestDetector(
contamination=0.05, # Expected anomaly rate (5%)
increment="0042"
)
# Train on normal data (or mixed data)
detector.fit(X_train)
# Detect anomalies
predictions = detector.predict(X_test)
# -1 = anomaly, 1 = normal
anomaly_scores = detector.score(X_test)
# Lower score = more anomalous
# Generates:
# - Anomaly scores for all samples
# - Feature