st-grok46
kaggle-spaceship-titanic · worker grok:grok-4.6 (xhigh) · finished (patience)
打开交互式搜索树 · REPORT.md · INSIGHTS.md · DEADENDS.md · rsi.toml
叙述
本次实验面向 Kaggle Spaceship Titanic,以官方验证准确率 score(越高越好)为优化目标。搜索在约 37 分 47 秒后因耐心阈值停止,共探索 16 个节点量级的树(宽度根 3、宽度 2、深度 4、并行 2)。根节点基线为 0.7717;最终最优节点是 n008,官方分为 0.8189,已略高于公开榜参考水平 solid_public_lb 0.81,held-out kaggle 种子集上最优为 0.8034。
真正拉开差距的是第一层从逻辑回归换到 LightGBM,并加入舱位甲板/编号/舷侧、团体规模与消费相关特征:n001 官方分直接到 0.8177。机制上,树模型能吃到甲板、舷侧、冷冻睡眠与消费长尾的非线性交互;同时把“有消费则不可能处于 CryoSleep”这类硬约束写进特征,也能理顺训练里约百行的矛盾。后续路径几乎都在这条 LightGBM 主干上打补丁:团体内缺失填充与甲板→星球映射(n004)、姓氏频率与舱位占用(n006),再到 n008 把剩余零消费的 CryoSleep 缺失填为 True,并加入奢侈消费占比与餐饮购物占比。官方验证上 n008 相对父节点 n006 的 0.8166 仅再抬约 0.0023,仍落在噪声带内,但成为整棵搜索里最高的官方分;worker 快速集上为 0.80748,相对未改动父节点快速分 0.80417 约 +0.00331,且五折全升。
未站住的方向同样清晰。团体运输率先验与固定概率混合(n003)在按团体划分、训练/测试团体不重叠时,预测端会塌成全局均值,无法把组内相关带到未见团体。全局姓氏计数容易跨团体干扰舱位信号;舱位占用与团体规模高度冗余。宽泛的位置填充、组内共享标志、更深 HGB 或线性模型,要么官方不升,要么只在 worker 快速集上有小幅抖动却带不走验证。同思路的花费占比在另一条支路(n009)甚至会因与已有 log1p 消费列共线而失效,说明特征价值依赖整条特征栈,而非单点技巧。
相对 0.81 的公开参考,当前最优已略超;相对更强公共方案仍可能只是小数点后第三位的空间。较有希望的下一步是:在保留 n008 冷冻填充与花费占比的前提下剔除易过拟合的整数 GroupId;用组内同姓计数替换全局 LastNameSize;并消融 LastNameSize/CabinOccupancy,确认它们是否只是在拖累已接近天花板的 LightGBM 栈。
结果
| 项目 | 值 |
|---|---|
| 指标 | score,higher is better |
| baseline(root) | 0.7717 |
| 最佳节点(validation) | 0.8189(n008) |
| 最佳节点(kaggle,held-out) | 0.8034 |
| 参考 solid_public_lb | 0.81 |
| 节点 完成/失败 | 14/0 |
| 搜索参数 | width_root 3, width 2, depth 4, max_nodes 16, parallel 2, patience 5 |
| 总耗时 | 37m47s |
| token 输入/输出 | 2,925,114 / 359,335(CLI 估算成本 $2.46) |
最佳路径
root0.7717 — baseline:Baseline starter code. Official score: 0.7717.n0010.8177 — Gradient boosting + cabin/group features:Switched from logistic regression to LightGBM with cabin deck/num/side, group id/size, categoricals, log1p spends, Age median, and CryoSleep-from-spend. Official validation score 0.81771 (n=1739) vs parent 0.7717 (+0.046). Worker quick-set: 0.80331 vs baseline quick 0.76335.n0040.8137 — Group-consistent missing imputation:Added per-frame unique group-mate fill for HomePlanet/Cabin/Destination plus hard deck→planet map (A/B/C/T→Europa, G→Earth) in LightGBM features. Official validation score 0.81369 (n=1739, sem=0.00934) vs parent 0.8177 (Δ−0.00401). Worker's quick-set: 0.80331→0.80732.n0060.8166 — Surname and cabin occupancy:Added per-frame LastNameSize and CabinOccupancy to LightGBM features. Official validation score 0.81656 (n=1739, sem=0.00928) vs parent 0.8137; |Δ|=0.00286 within noise. Worker's quick-set: 0.80417 vs untouched parent 0.80732 (Δ=−0.00315).n0080.8189 — CryoSleep remaining NA and spend mix:Added CryoSleep NA→True when spend=0 plus LuxuryShare and FoodShopShare in features.py; LightGBM unchanged. Official validation score 0.81886 (n=1739, sem=0.00924) vs parent 0.8166 (Δ+0.00226, within no_change band). Worker quick-set: 0.80748 vs untouched parent 0.80417 (+0.00331).
所有节点
| id | parent | 深度 | 状态 | 分数 | Δparent | 假设 | 用时 | 文件 |
|---|---|---|---|---|---|---|---|---|
| root | - | 0 | baseline | 0.7717 | - | baseline | - | |
| n001 | root | 1 | improved | 0.8177 | 0.046 | Gradient boosting + cabin/group features | 5m55s | handoff summary progress |
| n002 | root | 1 | improved | 0.8125 | 0.04083 | CryoSleep-consistent spend imputation + rules | 12m23s | handoff summary progress |
| n003 | root | 1 | improved | 0.8016 | 0.0299 | Group-level transported prior features | 12m10s | handoff summary progress |
| n004 | n001 | 2 | no_change | 0.8137 | -0.00402 | Group-consistent missing imputation | 9m58s | handoff summary progress |
| n005 | n001 | 2 | no_change | 0.8097 | -0.00805 | Surname and cabin occupancy counts | 8m30s | handoff summary progress |
| n006 | n004 | 3 | no_change | 0.8166 | 0.00287 | Surname and cabin occupancy | 8m13s | handoff summary progress |
| n007 | n006 | 4 | no_change | 0.8148 | -0.00172 | Within-group family flag | 6m55s | handoff summary progress |
| n008 | n006 | 4 | no_change | 0.8189 | 0.0023 | CryoSleep remaining NA and spend mix | 8m00s | handoff summary progress |
| n009 | n004 | 3 | no_change | 0.8108 | -0.00288 | CryoSleep remaining NA and spend mix | 6m44s | handoff summary progress |
| n010 | n002 | 2 | no_change | 0.8079 | -0.0046 | Group size, cabin side, within-group sharing | 15m17s | handoff summary progress |
| n011 | n002 | 2 | no_change | 0.8068 | -0.00575 | Luxury vs essential spend and IsChild | 11m34s | handoff summary progress |
| n012 | n009 | 4 | no_change | 0.8154 | 0.0046 | Ablate integer GroupId | 5m29s | handoff summary progress |
| n013 | n009 | 4 | improved | 0.8183 | 0.00748 | F-deck leftover HomePlanet from spend mix | 12m24s | handoff summary progress |
| n014 | n005 | 3 | no_change | 0.8148 | 0.00518 | Group-consistent missing imputation | 7m35s | handoff summary progress |
Insights(审计员从各节点核实后记录)
- GBDT on cabin/group + spend features beats linear spend/age/CryoSleep because trees capture non-linear deck/side/cryo and spend-tail interactions. [n001, score 0.8177]
- Forcing CryoSleep=False when any spend>0 removes a real train contradiction (~100 rows) and clarifies the cryo–transport signal. [n001, score 0.8177]
- GroupSize and Deck/Side are strong tabular levers on this task; fixed 500 trees at lr=0.05 already landed in the hypothesized 0.80–0.81 band. [n001, score 0.8177]
- CryoSleep=True always has zero amenity spend, and missing CryoSleep splits by spend like awake vs cryo, so spend-based Cryo imputation aligns features with a hard domain rule. [n002, score 0.8125]
- Under the same cryo/one-hot features, logistic regression gains little (worker quick +0.006) while depth-3 HGB captures spend×planet/deck interactions and drives most of the lift. [n002, score 0.8125]
- Worker same-fold probes show cryo rules add only ~0.001–0.004 once HGB is used on baseline columns, so the booster—not imputation alone—explains most of the jump. [n002, score 0.8125]
- With group-aware CV and zero train/test group overlap, LOO group label priors collapse to the global mean at predict, so they cannot transfer the within-group outcome dependence they encode on train. [n003, score 0.8016]
- Most of the jump from worker quick-set 0.76 to 0.80 came from LightGBM plus GroupSize and group-filled planet/cabin location features, not from GroupTransportedMean. [n003, score 0.8016]
- A fixed predict-time blend of row probabilities toward the in-batch group mean is the only label-free way to use outcome correlation on unseen groups, but fixed weights 0.30/0.50 stayed inside fold noise. [n003, score 0.8016]
- Unique-only group fill plus hard A/B/C/T/G deck→planet cuts HomePlanet NA a lot (worker: 152→49) but ~55% singletons only get the deck map, so location NA-fill has limited leverage. [n004, score 0.8137]
- A worker quick-set lift of +0.004 below fold std (~0.008) did not carry to official validation—treat small quick gains on location imputation as noise unless validation moves. [n004, score 0.8137]
- Destination is mixed in many multi-groups; unique-only Destination fill barely moves score (worker ablation −0.00058) and is not the driver. [n004, score 0.8137]
- Global surname frequency can cancel a useful cabin signal because LightGBM spends splits on name counts that span unrelated groups (corr with GroupSize ~0.35). [n005, score 0.8097]
- CabinOccupancy ≠ GroupSize on many rows (groups split across cabins / missing Cabin), so room-sharing is a distinct co-travel cue from booking-group size. [n005, score 0.8097]
- Global surname frequency is a weak family proxy because many last names span multiple passenger groups, so the count mostly ranks common names and can raise fold variance. [n006, score 0.8166]
- CabinOccupancy is near-redundant with GroupSize (high correlation; occupancy never exceeds group size), so LightGBM gains little from the extra integer once GroupSize is present. [n006, score 0.8166]
- Sharing a last name inside the same group is a clearer family signal than global LastNameSize and was not tested here. [n006, score 0.8166]
- Within-group surname counts add little once GroupSize exists: FamilyInGroup equals GroupSize on most rows (worker: 84.9%, corr 0.830), so trees mostly relearn group size. [n007, score 0.8148]
- A small worker quick lift vs n006 can come from dropping LastNameSize/CabinOccupancy, not from FamilyInGroup itself (worker ablation without it: quick 0.80732 > 0.80603). [n007, score 0.8148]
- Spend composition shares can beat raw amenity magnitudes as signals: luxury share corr with Transported was −0.446 vs −0.275 for raw Spa+VRDeck, and LightGBM used both new shares (ranks 6 and 8). [n008, score 0.8189]
- Combining a small domain fill with composition features can stabilize folds even when the fill alone is weak: cryo-fill-only quick mixed folds/higher std, shares-only had two folds down, both together lifted all five. [n008, score 0.8189]
- Spend-mix shares can rank high in LightGBM splits yet still fail to raise accuracy when five log1p amenity columns already encode the same structure (collinearity). [n009, score 0.8108]
- After spend>0→CryoSleep=False, remaining zero-spend CryoSleep NA looks cryo-like on average but overlaps many awake non-spenders (esp. children), so a blanket True fill stays near noise. [n009, score 0.8108]
- Quick-set gains from cabin side and within-group sharing (~+0.008 worker quick) can fail to transfer to official validation when fold variance also rises (worker quick std 0.00745→0.00909), so treat share flags as provisional until validation confirms. [n010, score 0.8079]
- For depth-3 HGB, cabin side appears to carry most of the quick lift; GroupSize/IsAlone add little once Side is present (worker ablations). [n010, score 0.8079]
- Within-group sharing flags without target encoding still risk acting as noise on held-out validation, similar to prior group-fill/surname dead ends. [n010, score 0.8079]
- Luxury vs essential spend is a real axis (LuxurySpend dominates tree splits), but depth-3 HGB already recovered most of it from the five raw logs, so accuracy barely moves. [n011, score 0.8068]
- IsChild is a true domain fact (Age<13 never spend) but is redundant for shallow HGB once Age and ZeroSpend exist—ablations matched sums-only fold-for-fold. [n011, score 0.8068]
- Linear models harvest the composition (+0.017 worker LR) because they cannot recombine five logs; HGB still wins overall, so shipping LR for this alone is not worth it. [n011, score 0.8068]
- Integer GroupId is largely redundant with CabinNum (worker corr 0.681); after removal, LightGBM shifts splits onto CabinNum and other existing numerics, so accuracy stays flat. [n012, score 0.8154]
- Consecutive gggg groups do not share Deck/Side above chance (worker), so sequential GroupId is not a cabin-block proxy worth keeping as a numeric split feature. [n012, score 0.8154]
- Unique group-mate fill plus A/B/C/T/G→planet cuts location NA a lot (worker: HomePlanet 152→49, Side 164→80) but does not reliably raise LightGBM accuracy once GroupSize/CabinOccupancy exist, because ~55% of rows are singletons and NA itself is already a usable split. [n014, score 0.8148]
- Recomputing CabinOccupancy after filling Cabin changes many rows (worker: 226) and was the weakest occupancy timing on quick folds—reconstructed roommates are a noisier sharing signal than raw missing-cabin occupancy=1. [n014, score 0.8148]
- Leftover F-deck HomePlanet NA is Earth/Mars-separable by spend mix (Mars luxury ~0.15 vs Earth ~0.40; zeros mostly Mars), and filling only those 33 train rows moved official validation +0.00749 despite near-noise quick delta—small targeted location fills can still help holdout. [n013, score 0.8183]
- Spend-mix planet guesses largely duplicate amenity axes LightGBM already sees, so the fill’s ceiling is tiny (33/6954 rows) and can leak Transported signal via HomePlanet. [n013, score 0.8183]
- Unique last-name→planet among known F has perfect group-LOO planet accuracy but still spans unrelated groups, so it is a bad imputation feature even when planet labels look pure. [n013, score 0.8183]
Dead ends
- LogisticRegression on cryo-imputed + one-hot features: worker quick 0.76910 vs 0.76335; C tuning did not help. [n002]
- Raw vs log1p spends under HGB both scored worker quick 0.79655. [n002]
- Depth-4 HGB reached worker quick 0.80061 but raised fold std (0.010 vs 0.007) and was not shipped. [n002]
- LOO GroupTransportedMean / GroupOtherTransportedCount as tree features: worker local ablation 0.80073 (on) vs 0.80163 (off); no reliable gain because predict values are constant. [n003]
- Fixed group-proba blend strength 0.30 or 0.50: worker |delta| ≤ 0.002 vs no blend on the same folds. [n003]
- Group-consistent HomePlanet/Cabin/Destination fill + deck→planet map: official 0.81369 vs parent 0.8177 (Δ−0.00401 within no_change band); does not beat parent on validation. [n004]
- Hard-mapping deck F to Earth was correctly avoided; remaining HomePlanet NA are mostly F (Earth vs Mars), so majority guess is not an almost-hard rule. [n004]
- Frame-wide SurnameFreq with CabinOccupancy: worker quick both 0.80374 ≈ parent quick 0.80331; surname alone mixed folds—do not retry global surname counts. [n005]
- CabinOccupancy alone lifted worker quick (+0.00487) but official validation 0.80966 did not beat parent 0.8177. [n005]
- LastNameSize+CabinOccupancy together: worker quick 0.80417 vs parent 0.80732 (three folds down); official validation flat vs parent. [n006]
- CabinOccupancy alone: worker quick 0.80460 with all five folds down vs parent. [n006]
- LastNameSize alone: worker quick 0.80534 with fold-0 −0.01278 and higher fold std (0.01351 vs parent 0.00812). [n006]
- Integer FamilyInGroup on LightGBM: official 0.81484 vs parent 0.8166 (|Δ|<0.01085); worker's quick also below n004-like ablation (0.80603 vs 0.80732). [n007]
- Cryo remaining-NA→True alone: worker quick 0.80562 vs parent 0.80417 (+0.00145) with mixed folds and std 0.01274—extra cryo rules add little once spend features exist. [n008]
- Adding RoomService share is redundant: on spenders it equals 1−LuxuryShare−FoodShopShare (residual ~2e-16). [n008]
- Cryo zero-spend True fill + continuous Luxury/FoodShopping shares: official 0.81081 vs parent 0.8137; worker quick 0.80718 vs 0.80732. [n009]
- Continuous LuxuryShare+FoodShoppingShare alone: worker same-fold 0.80503 vs parent-like 0.80732 (Δ −0.00229). [n009]
- Full GroupSize+Side+SharesLastName+Shared{HomePlanet,Destination,Deck,CryoSleep} set: official validation 0.80794 vs parent 0.8125 (no meaningful improvement). [n010]
- Worker side-only quick 0.80304 missed their 0.007 bar vs parent quick 0.79655, so shipping side alone was not justified even on quick. [n010]
- Keeping five raw amenity logs plus the two sums (sums+raw): worker quick 0.79918 with higher fold std; collinear and not better than sums-only. [n011]
- Adding IsChild or AgeBin on top of Age/ZeroSpend under depth-3 HGB: identical folds to the matching spend config. [n011]
- Dropping TotalSpend once Luxury+Essential exist: worker quick 0.79859, slightly worse than keeping it. [n011]
- Ablating GroupId alone does not improve the official score beyond noise (0.81541 vs parent 0.8108, |Δ| 0.00461 < 0.009201); worker quick also flat (+0.00043). [n012]
- Shipped stack (unique HomePlanet/Cabin/Destination fill + deck→planet + occupancy-after-fill): worker quick 0.80460 vs parent 0.80818 (4/5 down); official 0.81484 stays within |Δ|<0.008682 of parent 0.8097—no meaningful gain to retry. [n014]
- Fill with occupancy counted on raw Cabin still lost on quick (worker 0.80530); skipping Destination fill (0.80617) or dropping occupancy under fill (0.80732) also stayed below the occupancy-only parent. [n014]
- Unique F-deck last-name→planet fill: worker same-fold quick 0.80475 vs parent quick 0.80718 (Δ −0.00243). [n013]
- Last-name map plus spend-mix LR: official quick 0.80660 vs parent quick 0.80718 (Δ −0.00058); last name was the drag. [n013]