boost: reconcile nns_boost with R 13.2 NNS.boost; version 2.0.0#137
Merged
Conversation
Port of the reconciled R/Boost.R (OVVO-Financial/NNS PR #58, commit bb878ad): * threshold is a probability supplied to LPM.VaR over the learner-trial objective distribution (defaults 0.80 max / 0.20 min; extreme selects 1/0), never a literal score cutoff; survivor selection and every epoch re-test use the distinct LPM.VaR objective cutoff. * learner trials fit genuine multivariate NNS.reg (dim_red_method=None) and draw a fresh validation holdout per cross-sectional trial; time-series trials keep the chronological terminal block. * epochs always run (exhaustive enumeration no longer disables them), re-testing only surviving combinations with R's survivor-permutation scheduling, fresh holdouts (chronological expanding windows for ts). * final estimate replicates the original keeper predictors by relative epoch frequencies into one multivariate nns_stack(method=1, stack=False, folds=5, balance=False) call; the synthetic X* path is removed. New public folds argument (default 5). * result gains class.levels (None for regression), matching R. All draws replicate R's Mersenne-Twister stream via RRNG, making every seeded path bit-for-bit identical to R - including balance=TRUE, closing the formerly xfail-characterized balanced-boost sampling gap (the iris classification vignette now matches installed R exactly and its gap test pins the closure). The three NNS.boost cache shards are regenerated from installed R NNS 13.2 at bb878ad (the automation run lost them to the reverted workflow); the sync manifest records that commit. The workflow fixes from #136 (sharded add-paths, shard-aware validation, manifest provenance, per-function cache diff in the PR body, CI dedupe) are restored - they were reverted by the workflow-baseline protection and need the workflow-change-approved label this time. Version bumps to 2.0.0: the threshold argument's meaning changed on an unchanged signature (probability, not score cutoff), and nns_boost output adds class.levels. Known pre-existing local-only failures (unchanged by this PR, skipped in CI): the two Boston-housing live-R NNS.stack practical examples diverge ~0.7 percent from installed R 13.2. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01AxBV5HmXHY5nCUvW9SwDvb
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
Port of the reconciled R
NNS.boost(OVVO-Financial/NNS PR #58, commitbb878ad), regenerated parity cache, restored automation fixes, and the 2.0.0 major bump.nns_boost reconciliation
thresholdis a probability supplied tolpm_varover the learner-trial objective distribution (defaults 0.80 max / 0.20 min;extremeselects 1/0) — never a literal score cutoff. Survivors and every epoch re-test use the distinct LPM.VaR objective cutoff.nns_reg(dim_red_method=None) and draw a fresh validation holdout per cross-sectional trial; time-series trials keep the chronological terminal block.nns_stack(method=1, stack=False, folds=5, balance=False)call; the synthetic X* path is removed. New publicfoldsargument (default 5).class.levels(None for regression), matching R.Every draw replicates R's Mersenne-Twister stream via RRNG — all seeded paths are bit-for-bit identical to R, including
balance=True, which closes the formerly xfail-characterized balanced-boost sampling gap (the iris classification vignette now matches installed R exactly; its gap test pins the closure).Cache
The three
NNS.boost.*shards are regenerated from installed R NNS 13.2 atbb878ad(the automation run lost them — see below);sync/nns_source.jsonrecords that commit. All 37 boost parity tests pass bit-for-bit.Restored workflow fixes (needs
workflow-change-approved)The #136 workflow improvements (sharded
add-paths, shard-aware validation, manifest provenance stamping, per-function cache-diff table in the PR body, CI matrix dedupe) were silently reverted by the workflow-baseline protection, which caused the post-#58 cache regeneration to commit nothing and delete its own branch. They are restored here — this PR needs theworkflow-change-approvedlabel before merge or the baseline will strip them again.Version 2.0.0
The
thresholdargument's meaning changed on an unchanged signature (probability, not score cutoff) and the output gains a key — semver major.Validation
NNS.stackpractical examples diverge ~0.7% from installed R 13.2.🤖 Generated with Claude Code
https://claude.ai/code/session_01AxBV5HmXHY5nCUvW9SwDvb
Generated by Claude Code