Two-way pAUC CVaR — tpAUC_CVaR_loss + STACO

Optimizes two-way partial AUC using a CVaR (Conditional Value-at-Risk) surrogate loss, paired with the STACO optimizer. The CVaR formulation provides a more robust upper bound on the pAUC loss, particularly useful when the score distribution has heavy tails.

Config

recipes/config_tpauc_cvar.yaml
dataset:
  name: cifar10
  eval_splits: [val, test]
  kwargs:
    imratio: 0.2

model:
  name: resnet18
  pretrained: false
  num_classes: 1
  in_channels: 3

metrics:
  - AUROC
metric_kwargs:
  - max_fpr: 0.3
    min_tpr: 0.7

training:
  project_name: libauc
  experiment_name: resnet18_tpAUC_CVaR_loss_cifar10
  SEED: 2026

  epochs: 60
  batch_size: 128
  eval_batch_size: 256
  sampling_rate: 0.5
  num_workers: 0
  decay_epochs: [0.5, 0.75]

  loss: tpAUC_CVaR_loss
  loss_kwargs:
    surr_loss: squared_hinge
  optimizer: STACO

  output_path: ./output
  resume_from_checkpoint: false
  save_checkpoint_every: 10

automax:
  deterministic: true
  n_trials: 5
  SEED: 42
  name: resnet18_tpAUC_CVaR_loss_cifar10
  output_directory: ./automax_output
  overwrite: true

Run

python -m src.auto_trainer \
  --config_file recipes/config_tpauc_cvar.yaml

Note

max_fpr: 0.3 and min_tpr: 0.7 define the rectangular region of the ROC curve being optimized — FPR ∈ [0, 0.3] and TPR ∈ [0.7, 1.0]. The squared_hinge surrogate loss is the default for CVaR-based pAUC optimization; it can be swapped for other surrogate losses supported by LibAUC.