# Final picks, fixed before confirmation (2026-11-11 01:36) Written before any score on half B alone was tabulated and before draws 5-11 existed for the ensemble members. ## What was used to choose - Half A of Amsterdam (checkerboard of 2 km blocks, `lab.half_A`), draws 0-4, `python tools/nnlab/lab.py board _A`. - Honest caveat: full-city scores (A + B together) of the single models and of ensembles e1-e3 were printed earlier in the night, so B was not perfectly blind. B on its own was never looked at. ## The picks | name | pipeline | decision | |---|---|---| | FINAL-AVG | `ens_e4__lp`: fixed-rule ensemble (zero-shot XGBoost+DANN with weight 10/(n+10); the rest shared equally by retrained LightGBM, met_protoda_maha, met_cos_maha, tab_dann_rz_ft), then label propagation with the shots clamped | rule + neighbour smoothing | | FINAL-PEAK | `ens_e2__lapshot`: zero-shot XGBoost+DANN (weight 10/(n+10)) + retrained LightGBM, then LaplacianShot-style graph refinement | rule + neighbour smoothing | | FINAL-SWITCH | n <= 50: FINAL-AVG; n >= 100: FINAL-PEAK (n is an input of modelCreate, so this is one method) | as above | Half A, draws 0-4 (the evidence): ens_e4__lp 0.7033 / 0.7109 / 0.7290 / 0.7355 / 0.7392; ens_e2__lapshot 0.6856 / 0.6952 / 0.7172 / 0.7376 / 0.7524. Why e4 and not e6 / e7 (which add a self-trained LightGBM or LDA): they differ from e4 by under 0.001 on half A, which is noise, and e4 is one stage simpler. ## Confirmation to be reported, whatever it shows 1. Half B, draws 0-11. 2. All pixels, draws 5-11 only (draws never used for choosing). 3. The same for the reference: retrained LightGBM with the rule (0.6563 average). ## Round 2 pick, fixed before its confirmation (2026-11-11 03:26) A LightGBM variant from round 2, `lgbm_feda` (Daume feature augmentation: shared, Madrid-only and Amsterdam-only copies of the top 120 features; everything else as the retrained LightGBM), scored well above the others on draws 0-4. | name | pipeline | decision | |---|---|---| | FINAL-2 | `ens_e12`: zero-shot XGBoost+DANN with weight 10/(n+10) + `lgbm_feda` with the rest | rule + neighbour smoothing | | FINAL-2 without coordinates | the same | rule only | | single model | `lgbm_feda` | rule + smoothing, and rule only | Evidence used: half A, draws 0-4. ens_e12 rule_smooth 0.7052 / 0.7161 / 0.7410 / 0.7481 / 0.7591 (avg 0.734) against ens_e4 0.7139 avg; lgbm_feda alone 0.7236 avg. Ensembles that keep the metric-learning and neural members next to lgbm_feda (e10, e11) were lower on half A (0.721, 0.724) and are not picked. Sanity check done before confirmation: training lgbm_feda with the shot labels shuffled collapses macro F1 to 0.32 (n=5) and 0.23 (n=200), so the gain comes from the shot labels. Confirmation to be reported whatever it shows: all pixels on draws 5-11, on which lgbm_feda has never been run, and half B on draws 0-11. `lgbm_fedaw100` (feda + shot weight 100) is exploratory only, draws 0-4.