New benchmark: Zoey-MetalGate on matbench_expt_gap (MAE 0.2775) - #364
Open
JeetuSK0808 wants to merge 4 commits into
Open
New benchmark: Zoey-MetalGate on matbench_expt_gap (MAE 0.2775)#364JeetuSK0808 wants to merge 4 commits into
JeetuSK0808 wants to merge 4 commits into
Conversation
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.
New benchmark submission: Zoey-MetalGate
Task:
matbench_expt_gap(composition-only, 4,604 samples)Score: MAE 0.2775 ± 0.0051 eV, RMSE 0.6825, on the official five-fold protocol
Authors: Satyajeeth Suresh Kannan, Tushar Chatterjee (high school students, Atlanta GA; independent work, no lab affiliation)
What it is
A two-stage metal-classifier-gated gradient-boosting blend. 53% of the labels in
matbench_expt_gapare exactly 0.0 eV because those compounds are metals, so a singleregressor spends much of its error budget smearing small positive predictions across that
zero mass. Instead:
P(metal)from composition, trained on the binaryindicator
gap == 0derived from the training fold's own labels.(1 - P_metal) * max(reg, 0)or hard(zero where
P_metal > 0.5).The submitted model averages three such gated models with fixed weights (0.50 / 0.25 / 0.25),
chosen by greedy forward selection on out-of-fold predictions from the training folds.
Features are 493 stateless matminer composition descriptors.
For reference, a plain single LightGBM on the same features with no gate and no blend
scores 0.3322 ± 0.0117.
The classify-then-regress idea is not new — two-stage metal/non-metal handling appears
in the band gap literature. What this submission adds is a carefully preregistered
evaluation of that combination on this benchmark plus an error analysis of where the gain
actually comes from.
Evaluation hygiene
The campaign was preregistered before any results existed, fixing the metric, success
criteria, model-selection procedure and leakage checks in advance.
internal 5-fold CV inside the official training folds only.
get_test_data(fold, include_target=False)and scored onlyvia
task.record(). The finalist was frozen to a file from validation scores before anytest evaluation, and the test splits were evaluated exactly once for it.
model_selection.pyin the submission directory documents and reproduces the selectionprocedure without touching test data.
Because this result came in below the existing leaderboard entries, our own preregistration
required an investigation before reporting it. Three checks:
arrays against dataset ground truth, bypassing matbench's scorer entirely, gives
0.27751 — matching the recorded score to five decimals.
exactly, and share zero normalized reduced formulas between any fold's train and test
splits. Per-fold test counts 921/921/921/921/920.
metal/non-metal label ~92% of the time, metals then carry ~0.15 eV residual error over
53% of rows and non-metals ~0.45 eV over the rest, and
0.53*0.15 + 0.47*0.45reconstructs the validation score.
Where the gain comes from, and what it costs
The improvement is concentrated in the zero-gap population and in wide-gap insulators; the
soft gate measurably hurts 0–1 eV semiconductors. We think that is the most useful thing
to know about this entry, so it is stated in
info.jsonas well.Compute
Whole campaign (featurization + 103-config search + final evaluation) ran overnight on 8 CPU
cores, no GPU. Reproducing just the submitted result via
run.pytakes ~45 min, mostlyfeaturization, which caches after the first run.
Files
Local run of
scripts/test_submission.pychecks passes:is_validtrue, all requiredinfo.jsonfields present, source.pyfiles present, no non-results file over 10 MB.Limitations
Composition-only, so polymorphs are indistinguishable and part of the remaining error is an
irreducible floor in the data that we have not quantified. No uncertainty estimates. Only
matbench_expt_gapwas run; nothing here demonstrates transfer to other tasks.Could a maintainer please apply the
new_benchmarklabel — we don't have permission to setit ourselves. Happy to make any changes needed.