Repository navigation
IDSLab 0.2.0: comparison and sweeps
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_yamlwrites 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 declarecost:. 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.jsonandcompare.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.mdwith 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 bydocs/img/make_figures.pyfrom a real run. - A project site (
docs/index.html, served by GitHub Pages fromdocs/). - 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.