Skip to content

IDSLab 0.2.0: comparison and sweeps

Choose a tag to compare

@hashtagRR hashtagRR released this 17 Oct 13:36
· 13 commits to main since this release

Visual pipeline builder; cost objectives and stage cost; greedy_fixed selection; plugins; idslab compare with paired per-seed differences and idslab sweep; fixes for chained score dependencies and external-score freshness. Runs from 0.1.0 rerun.

Changes

Finished run units from 0.1.0 are not reused: the version is part of every unit's fingerprint, and the
fixes below change what a fingerprint covers.

Added:

  • Visual pipeline builder in the dashboard: drag stages onto a canvas, wire outputs to stages or
    terminals, drag score edges for features, and edit every stage setting in a panel (models from a
    catalog with parameter forms, search spaces, pipeline steps, decisions, training rows). A dataset
    panel reads a sample of the data and suggests the label, type and categorical columns. The config is
    written with the loader's rules and validated on every change; node positions are saved next to the
    config (idslab.config.dump_yaml writes configs that read back unchanged).
  • Cost objectives: protocol.objective: {cost: {missed_attack: A, false_alarm: B}} chooses on VAL by
    the lowest average cost per flow; {recall_at_fpr: X} by the highest recall within a false alarm
    cap. The objective appears as its own column in every report.
  • Stage cost: each run records the share of TEST flows reaching every stage and its scoring time; a
    stage may declare cost:. Reports add the expected cost per flow of the cascade against its first
    stage alone.
  • protocol.search: greedy_fixed: later stages with a fixed decision stay on while earlier stages are
    judged. On the synthetic R2 example it raised VAL and TEST accuracy in each of 3 seeds.
  • Plugins through the entry point group idslab.plugins: models and pipeline steps for the builder
    catalog, and named objectives.
  • idslab compare: experiments side by side, and for experiments on the same data and splits a
    paired comparison per unit on the same TEST flows, with paired bootstrap intervals. Writes
    compare.md, compare.json and compare.html.
  • idslab sweep: one base config with named variants or a grid of dotted-key changes; every variant
    is checked first, written as its own config, run, reported and compared.
  • Dashboard: Compare and Sweeps pages; compare and sweep run as dashboard jobs.

Fixed:

  • Chained score dependencies (a stage that feeds another stage while using a third stage's scores)
    are refused at config load. Their out-of-fold scores were not fully out of fold: the inner stage's
    fold refits used features from models that had seen the held-out fold.
  • External score sidecars (.json) are part of the unit fingerprint, so editing a sidecar reruns the
    unit and its provenance is checked again; before, the finished unit was skipped.
  • Reports check each unit's external score files against the current ones and leave out units whose
    files changed, naming the reason; before, stale results from replaced files stayed in the report.
  • Dashboard on Windows: Stop ends the job's worker processes too, and a path on another drive or with
    a colon is refused with a message instead of an error.

Documentation:

  • A short README with an overview figure and a table of guides; INSTALL.md with step-by-step guides
    for Windows, macOS and GNU/Linux from the download to the dashboard; docs/architecture.md,
    docs/limitations.md, docs/compare-and-sweeps.md; mini READMEs for the example designs and the
    dashboard source. Figures are drawn by docs/img/make_figures.py from a real run.
  • A project site (docs/index.html, served by GitHub Pages from docs/).
  • IDSLab is not on PyPI yet; the guides install it from GitHub
    (pip install git+https://github.com/hashtagRR/IDSLab.git).

Install

This version is not on PyPI; install it from its tag:

pip install "git+https://github.com/hashtagRR/IDSLab.git@v0.2.0"

The current version installs with pip install idslab. Every change is in CHANGELOG.md.