Software

Starfold held-out benchmark

Starfold 0.2.0 was tested on ten tables with known classes and lost to the library defaults on two of the four held-out tables.

Starfold chooses UMAP and HDBSCAN settings without labels and reports how far its groups can be trusted. The benchmark checks whether the chosen setting recovers known classes better than the library defaults. Six development tables informed the selection rules, and four held-out tables were not used until the rules were fixed.

Recovery is the adjusted Rand index (floored at zero) against the true classes on the assigned rows, times the share of rows assigned. The defaults score is the median over eight seeds, and a difference below 0.02 counts as a match. Starfold matched or beat the defaults on 6 of 6 development tables and on 2 of 4 held-out tables, losing on COIL-20 and Isolet.

Results per table

TableSetRowsFeaturesClassesStarfoldDefaultsResult
Ricedevelopment3,810720.2920.008starfold
Dry Beandevelopment13,6111670.5000.445starfold
Landsatdevelopment6,4303660.3540.048starfold
Digitsdevelopment1,79764100.7400.637starfold
PenDigitsdevelopment10,99216100.8190.753starfold
Waveformdevelopment5,0004030.1110.000starfold
COIL-20held-out1,4401,024200.5180.581defaults
Isoletheld-out7,797617260.1980.453defaults
Gas driftheld-out13,91012860.0380.023match within 0.02
Letterheld-out20,00016260.2030.108starfold

Recorded at tag v0.2.0 (commit f93dea0) in bench/results/summary.json. The CSV lists each table's source, and the provenance record is in JSON.

Figures

0.512510-0.3-0.2-0.10+0.1+0.2+0.3mean class size in a resample, over recovery minus default recovery0.512510-0.4-0.20+0.2+0.4+0.6mean class size in a resample, over Spearman of trial score against recoverygroup of rowsgroup of rowsRice: 0.283RiceDry Bean: 0.055Dry BeanLandsat: 0.305LandsatDigits: 0.102DigitsPenDigits: 0.066PenDigitsWaveform: 0.111WaveformCOIL-20: -0.063COIL-20Isolet: -0.255IsoletGas drift: 0.015Gas driftLetter: 0.095LetterRice: 0.482RiceDry Bean: 0.380Dry BeanLandsat: 0.385LandsatDigits: 0.159DigitsPenDigits: 0.576PenDigitsWaveform: 0.624WaveformCOIL-20: 0.066COIL-20Isolet: 0.063IsoletGas drift: -0.427Gas driftLetter: 0.529Letterdevelopment tableheld-out tableCreator: Andreas W. Neitzel. © Andreas W. Neitzel. All rights reserved. https://andreaswneitzel.github.io
Starfold gains most where the classes are large compared with the finest structure its graph can resolve. Left, recovery minus default recovery; right, correlation of the label-free score with recovery. Data: resolution.json.
0.20.51200.20.40.60.81injected group in a resample, over fraction of injected groups retrieved00.20.40.60.800.20.40.60.81recurrence support thresholdpurity (solid) and completeness (dashed)group of rows30 rows: 0% retrieved30 rows60 rows: 0% retrieved60 rows120 rows: 100% retrieved120 rows240 rows: 100% retrieved240 rows480 rows: 100% retrieved480 rows120 rows per group240 rows per group480 rows per groupdashed: completeness of the injected rowsCreator: Andreas W. Neitzel. © Andreas W. Neitzel. All rights reserved. https://andreaswneitzel.github.io
Groups smaller than the resolution scale are not found; those found stay pure as the support threshold rises. A method check on synthetic groups injected into a real table and never kept. Data: injection.json, provenance.