Skip to content

FST4 4.2.0

Latest

Choose a tag to compare

@psomol psomol released this 25 Oct 11:26

The first public FST4 release. Feature Selection Toolbox 4 is a C++17 header-only library and command-line tool that finds near-optimal or provably optimal subsets of a large set under any subset-quality criterion: built-in feature selection filters and wrappers, your own C++ criterion class, or an external program used as a set function. Sequential, floating, oscillating and stochastic search heuristics (near-optimal), Branch & Bound and exhaustive search (provably optimal under a monotone criterion); deterministic and bit-identical at any thread count.

Version history at a glance

Publishing as v4.2 implies a 4.0 and a 4.1: those are internal development milestones — v4.2 is the first published FST4 version (the last public release of the toolbox was FST3). What distinguishes them:

  • 4.0 — the modernization. FST3's codebase brought to C++17 (Boost dependency removed), header-only, CMake-only; the fst4 command-line tool making the whole toolbox usable without writing C++; one merged implementation per search algorithm (sequential vs. threaded execution chosen by an injected evaluation engine, not by class choice); a full-codebase audit fully adjudicated; the byte-exact golden-output regression harness as the release gate; optional Eigen cross-validation of the linear-algebra core.
  • 4.1 — very-high-dimensional selection. The budgeted stochastic (sampled) sequential step evaluator with per-step evaluation cost independent of dimensionality; threaded evaluation made bit-identical to sequential at matched seed (sampled steps and streaming searches alike); the multinomial logistic-regression classifier; the SFFS frontier bound (--sffs-delta); DAF ranking consolidated to the published 2011 method plus opt-in pairwise group statistics; the cross-platform PRNG shim making seeded runs reproducible across Windows/macOS; ready-to-run parity configs for every published FST3 demo.
  • 4.2 — the practitioner wrapper expansion. Wrapper metrics beyond accuracy (balanced accuracy, F1, AUC, per-class cost weights, R²/RMSE/MAE); five new deterministic dependency-free wrapper models (Random Forest, linear SVM, RBF kernel SVM, ridge regression, LDA) plus the external-classifier bridge AND the external-criterion/set-function layers; LibSVM thereby demoted to an optional extension (and no longer distributed, per licensing policy); candidate-level threading for all B&B variants and the hybrid/ensemble step evaluators (every search and evaluator now threadable, bit-identical to sequential); the kNN decision-rule unification; the reliability hardening pass behind all of it.

What the 4.2 notes cover

The 4.2 section of RELEASE_NOTES.md details, in this order: the wrapper expansion; leakage-free normalization (--scaler-fit train); CSV input and ARFF robustness; the behavior changes of 4.2 (golden-recaptured); small fixes and hygiene; the three reliability passes (the 4.2 review, the second review pass, the live-code cleanup); and the distribution and repository shape.

Verification

The byte-exact golden-output regression gate (tests/golden.sh, 112 scenarios including the slow tier) passes on this tree on Linux arm64, macOS arm64 and Windows x64 with the per-platform baselines shipped in tests/.

Build

cmake -S . -B build -DCMAKE_BUILD_TYPE=Release
cmake --build build --parallel --target fst4
build/bin/fst4 --data data/wdbc_30.trn --criterion gmahalanobis --search sfs --target-d 7 --validate knn

C++17 compiler and CMake 3.16 or newer; no other dependencies. LibSVM and Eigen are optional extensions (see libsvm/readme.txt and the README).