cloudano-bench-eval
Towards Generalizable Context-aware Anomaly Detection: A Large-scale Benchmark in Cloud Environments — Zou et al. (2025) (arXiv:2508.01844, 2025)
What this evaluates
Evaluates the ability of systems to detect context-aware anomalies in cloud environments by jointly analyzing system logs and performance metrics, and to classify the specific anomaly scenario. It also tests generalization to point-level anomalies using log-only or metric-only data.
Datasets
- CloudAnoBench — total 1252; splits: test (-1)
- BGL — total ?; splits: test (-1)
- Thunderbird — total ?; splits: test (-1)
- HDFS_v1 — total ?; splits: test (-1)
Metrics
F1-score (primary) — range: [0, 1]
- Harmonic mean of Precision and Recall: F1 = 2 * (Precision * Recall) / (Precision + Recall). Standard for imbalanced anomaly detection.
Precision — range: [0, 1]
- Ratio of true positive predictions to all positive predictions: TP / (TP + FP).
Recall — range: [0, 1]
- Ratio of true positive predictions to all actual positives: TP / (TP + FN).
FPR — range: [0, 1]
- False Positive Rate: ratio of false alarms to all actual negatives: FP / (FP + TN).
Accuracy — range: [0, 1]
- Proportion of correctly identified anomaly scenarios: Acc = |{i | ŷ_i = y_i}| / N, where N is total cases.
Input / output format
Input: Multimodal cloud telemetry per instance: system logs (text) and performance metrics (time-series). For baseline comparisons, inputs are restricted to either metrics-only (ML baselines) or logs-only (log-specific baselines).
Output: Binary anomaly decision (anomalous/normal) and, for scenario identification, a categorical label specifying the anomaly scenario type.
Scoring recipe
def compute_metrics(preds, golds):
tp = sum(p == 1 and g == 1 for p, g in zip(preds, golds))
fp = sum(p == 1 and g == 0 for p, g in zip(preds, golds))
fn = sum(p == 0 and g == 1 for p, g in zip(preds, golds))
tn = sum(p == 0 and g == 0 for p, g in zip(preds, golds))
prec = tp / (tp + fp) if (tp + fp) > 0 else 0.0
rec = tp / (tp + fn) if (tp + fn) > 0 else 0.0
fpr = fp / (fp + tn) if (fp + tn) > 0 else 0.0
f1 = 2 * prec * rec / (prec + rec) if (prec + rec) > 0 else 0.0
acc = sum(p == g for p, g in zip(preds, golds)) / len(golds)
return {'Precision': prec, 'Recall': rec, 'FPR': fpr, 'F1-score': f1, 'Accuracy': acc}
Common pitfalls
- ML baselines are restricted to metric-only inputs and cannot process log text, making direct comparison with multimodal methods unfair without input alignment.
- Log-only baselines are evaluated on point-anomaly datasets (BGL, Thunderbird, HDFS_v1) but cannot handle the context-aware, multimodal scenarios in CloudAnoBench.
- FPR is explicitly reported alongside F1-score, which is critical for highly imbalanced anomaly detection datasets where accuracy is misleading.
Evidence (verbatim from paper)
For anomaly detection, the task is modeled as a binary classification problem. We report Precision, Recall, FPR, and F1-score, which together capture the reliability of positive alerts, the ability to identify true anomalies, the tendency to produce false alarms, and the overall balance between precision and recall. For scenario identification (SI), we formulate the task as a multi-class classification problem and evaluate performance using accuracy (Acc).
Citation
@misc{zou2025cloudanobench,
title={Towards Generalizable Context-aware Anomaly Detection: A Large-scale Benchmark in Cloud Environments},
author={Zou et al. (2025)},
year={2025},
note={arXiv:2508.01844}
}
1---2name: cloudano-bench-eval3description: Evaluates the ability of systems to detect context-aware anomalies in cloud environments by jointly analyzing system logs and performance metrics, and to classify the specific anomaly scenario. It also tests generalization to point-level anomalies using log-only or metric-only data. Use when the user wants to benchmark on CloudAnoBench, BGL, Thunderbird, HDFS_v1, or asks about evaluating this task. Reports F1-score.4---56# cloudano-bench-eval78> Towards Generalizable Context-aware Anomaly Detection: A Large-scale Benchmark in Cloud Environments — Zou et al. (2025) (arXiv:2508.01844, 2025)910## What this evaluates1112Evaluates the ability of systems to detect context-aware anomalies in cloud environments by jointly analyzing system logs and performance metrics, and to classify the specific anomaly scenario. It also tests generalization to point-level anomalies using log-only or metric-only data.1314## Datasets1516- **CloudAnoBench** — total 1252; splits: test (-1)17- **BGL** — total ?; splits: test (-1)18- **Thunderbird** — total ?; splits: test (-1)19- **HDFS_v1** — total ?; splits: test (-1)2021## Metrics2223- `F1-score` **(primary)** — range: [0, 1]24 - Harmonic mean of Precision and Recall: F1 = 2 * (Precision * Recall) / (Precision + Recall). Standard for imbalanced anomaly detection.25- `Precision` — range: [0, 1]26 - Ratio of true positive predictions to all positive predictions: TP / (TP + FP).27- `Recall` — range: [0, 1]28 - Ratio of true positive predictions to all actual positives: TP / (TP + FN).29- `FPR` — range: [0, 1]30 - False Positive Rate: ratio of false alarms to all actual negatives: FP / (FP + TN).31- `Accuracy` — range: [0, 1]32 - Proportion of correctly identified anomaly scenarios: Acc = |{i | ŷ_i = y_i}| / N, where N is total cases.3334## Input / output format3536**Input**: Multimodal cloud telemetry per instance: system logs (text) and performance metrics (time-series). For baseline comparisons, inputs are restricted to either metrics-only (ML baselines) or logs-only (log-specific baselines).3738**Output**: Binary anomaly decision (anomalous/normal) and, for scenario identification, a categorical label specifying the anomaly scenario type.3940## Scoring recipe4142```python43def compute_metrics(preds, golds):44 tp = sum(p == 1 and g == 1 for p, g in zip(preds, golds))45 fp = sum(p == 1 and g == 0 for p, g in zip(preds, golds))46 fn = sum(p == 0 and g == 1 for p, g in zip(preds, golds))47 tn = sum(p == 0 and g == 0 for p, g in zip(preds, golds))48 prec = tp / (tp + fp) if (tp + fp) > 0 else 0.049 rec = tp / (tp + fn) if (tp + fn) > 0 else 0.050 fpr = fp / (fp + tn) if (fp + tn) > 0 else 0.051 f1 = 2 * prec * rec / (prec + rec) if (prec + rec) > 0 else 0.052 acc = sum(p == g for p, g in zip(preds, golds)) / len(golds)53 return {'Precision': prec, 'Recall': rec, 'FPR': fpr, 'F1-score': f1, 'Accuracy': acc}54```5556## Common pitfalls5758- ML baselines are restricted to metric-only inputs and cannot process log text, making direct comparison with multimodal methods unfair without input alignment.59- Log-only baselines are evaluated on point-anomaly datasets (BGL, Thunderbird, HDFS_v1) but cannot handle the context-aware, multimodal scenarios in CloudAnoBench.60- FPR is explicitly reported alongside F1-score, which is critical for highly imbalanced anomaly detection datasets where accuracy is misleading.6162## Evidence (verbatim from paper)6364> For anomaly detection, the task is modeled as a binary classification problem. We report Precision, Recall, FPR, and F1-score, which together capture the reliability of positive alerts, the ability to identify true anomalies, the tendency to produce false alarms, and the overall balance between precision and recall. For scenario identification (SI), we formulate the task as a multi-class classification problem and evaluate performance using accuracy (Acc).6566## Citation6768```bibtex69@misc{zou2025cloudanobench,70 title={Towards Generalizable Context-aware Anomaly Detection: A Large-scale Benchmark in Cloud Environments},71 author={Zou et al. (2025)},72 year={2025},73 note={arXiv:2508.01844}74}75```7677- arXiv: 2508.01844