ecg-fm-benchmark-eval
Benchmarking ECG Foundational Models: A Reality Check Across Clinical Tasks — Al-Masud et al. (2025) (arXiv:2509.25095, 2025)
What this evaluates
Evaluates the clinical utility and label efficiency of ECG foundation models across diverse tasks including adult/pediatric ECG interpretation, cardiac structure prediction, clinical outcome forecasting, and patient characteristic regression. It probes cross-domain generalization, fine-tuning adaptability, and the quality of frozen/linear representations compared to strong supervised baselines.
Datasets
- PTB-XL — total ?; splits: test (-1)
- EchoNext — total ?; splits: test (-1)
- MIMIC-IV (ECG) — total ?; splits: test (-1)
- CPSC2018 — total ?; splits: test (-1)
- PTB — total ?; splits: test (-1)
- Ningbo — total ?; splits: test (-1)
- Georgia — total ?; splits: test (-1)
- Chapman — total ?; splits: test (-1)
- SPH — total ?; splits: test (-1)
- CODE-15% — total ?; splits: test (-1)
- ZZU pECG — total ?; splits: test (-1)
Metrics
macro-AUROC (primary) — range: [0, 1]
- Area Under the Receiver Operating Characteristic curve, averaged across all classes (macro-averaged). Higher values indicate better classification performance.
average z-normalized MAE (primary) — range: [0, inf)
- Mean Absolute Error computed on z-normalized target and prediction vectors: MAE(z(y_true), z(y_pred)). Normalization mitigates scale differences across regression targets.
label efficiency ratio — range: [0, 1]
- Ratio r = N*/N, where N* is the training set size required for a pretrained model to match the performance of a supervised baseline trained on N samples. Derived from parametric scaling curve fits.
Input / output format
Input: ECG time-series signals (typically 12-lead), optionally with patient metadata for regression tasks.
Output: Class labels for interpretation/outcome tasks; continuous values for biometric/clinical regression tasks.
Scoring recipe
def macro_auroc(y_true, y_pred):
scores = [roc_auc_score(y_true[:, i], y_pred[:, i]) for i in range(y_true.shape[1])]
return np.mean(scores)
def z_norm_mae(y_true, y_pred):
z_true = (y_true - np.mean(y_true)) / np.std(y_true)
z_pred = (y_pred - np.mean(y_pred)) / np.std(y_pred)
return np.mean(np.abs(z_true - z_pred))
Common pitfalls
- Comparing frozen/linear evaluation directly with finetuning without acknowledging that they measure different aspects of representational quality.
- Using raw MAE instead of z-normalized MAE for regression tasks, which unfairly penalizes models on targets with high variance or different scales.
- Ignoring stratified subsampling protocols when evaluating label efficiency, leading to biased scaling curves.
Evidence (verbatim from paper)
Table 2: Comparison of macro-AUROC (classification) and average z-normalized MAE (regression) under finetuning with linear prediction head. ... We use the parametric form of the fits to work out a label efficiency ratio r=N*/N, i.e., the fraction of samples N* required for the pretrained model to reach the same performance as the supervised baseline for given N.
Citation
@misc{almasud2025ecgfmbenchmarking,
title={Benchmarking ECG Foundational Models: A Reality Check Across Clinical Tasks},
author={Al-Masud et al. (2025)},
year={2025},
note={arXiv:2509.25095}
}
1---2name: ecg-fm-benchmark-eval3description: Evaluates the clinical utility and label efficiency of ECG foundation models across diverse tasks including adult/pediatric ECG interpretation, cardiac structure prediction, clinical outcome forecasting, and patient characteristic regression. It probes cross-domain generalization, fine-tuning adaptability, and the quality of frozen/linear representations compared to strong supervised baselines. Use when the user wants to benchmark on PTB-XL, EchoNext, MIMIC-IV (ECG), CPSC2018, PTB, Ningbo, Georgia, Chapman, SPH, CODE-15%, ZZU pECG, or asks about evaluating this task. Reports macro-AUROC, average z-normalized MAE.4---56# ecg-fm-benchmark-eval78> Benchmarking ECG Foundational Models: A Reality Check Across Clinical Tasks — Al-Masud et al. (2025) (arXiv:2509.25095, 2025)910## What this evaluates1112Evaluates the clinical utility and label efficiency of ECG foundation models across diverse tasks including adult/pediatric ECG interpretation, cardiac structure prediction, clinical outcome forecasting, and patient characteristic regression. It probes cross-domain generalization, fine-tuning adaptability, and the quality of frozen/linear representations compared to strong supervised baselines.1314## Datasets1516- **PTB-XL** — total ?; splits: test (-1)17- **EchoNext** — total ?; splits: test (-1)18- **MIMIC-IV (ECG)** — total ?; splits: test (-1)19- **CPSC2018** — total ?; splits: test (-1)20- **PTB** — total ?; splits: test (-1)21- **Ningbo** — total ?; splits: test (-1)22- **Georgia** — total ?; splits: test (-1)23- **Chapman** — total ?; splits: test (-1)24- **SPH** — total ?; splits: test (-1)25- **CODE-15%** — total ?; splits: test (-1)26- **ZZU pECG** — total ?; splits: test (-1)2728## Metrics2930- `macro-AUROC` **(primary)** — range: [0, 1]31 - Area Under the Receiver Operating Characteristic curve, averaged across all classes (macro-averaged). Higher values indicate better classification performance.32- `average z-normalized MAE` **(primary)** — range: [0, inf)33 - Mean Absolute Error computed on z-normalized target and prediction vectors: MAE(z(y_true), z(y_pred)). Normalization mitigates scale differences across regression targets.34- `label efficiency ratio` — range: [0, 1]35 - Ratio r = N*/N, where N* is the training set size required for a pretrained model to match the performance of a supervised baseline trained on N samples. Derived from parametric scaling curve fits.3637## Input / output format3839**Input**: ECG time-series signals (typically 12-lead), optionally with patient metadata for regression tasks.4041**Output**: Class labels for interpretation/outcome tasks; continuous values for biometric/clinical regression tasks.4243## Scoring recipe4445```python46def macro_auroc(y_true, y_pred):47 scores = [roc_auc_score(y_true[:, i], y_pred[:, i]) for i in range(y_true.shape[1])]48 return np.mean(scores)4950def z_norm_mae(y_true, y_pred):51 z_true = (y_true - np.mean(y_true)) / np.std(y_true)52 z_pred = (y_pred - np.mean(y_pred)) / np.std(y_pred)53 return np.mean(np.abs(z_true - z_pred))54```5556## Common pitfalls5758- Comparing frozen/linear evaluation directly with finetuning without acknowledging that they measure different aspects of representational quality.59- Using raw MAE instead of z-normalized MAE for regression tasks, which unfairly penalizes models on targets with high variance or different scales.60- Ignoring stratified subsampling protocols when evaluating label efficiency, leading to biased scaling curves.6162## Evidence (verbatim from paper)6364> Table 2: Comparison of macro-AUROC (classification) and average z-normalized MAE (regression) under finetuning with linear prediction head. ... We use the parametric form of the fits to work out a label efficiency ratio r=N*/N, i.e., the fraction of samples N* required for the pretrained model to reach the same performance as the supervised baseline for given N.6566## Citation6768```bibtex69@misc{almasud2025ecgfmbenchmarking,70 title={Benchmarking ECG Foundational Models: A Reality Check Across Clinical Tasks},71 author={Al-Masud et al. (2025)},72 year={2025},73 note={arXiv:2509.25095}74}75```7677- arXiv: 2509.25095