Download STAGE3.md from leminhohoho/hltv-tick-encoder: direct link, hf CLI and curl.
- Browser
- Download file 2.39 kB
-
https://huggingface.co/leminhohoho/hltv-tick-encoder/resolve/main/STAGE3.md
- Command line
-
hf download hf://leminhohoho/hltv-tick-encoder/STAGE3.md
-
curl -L -o STAGE3.md https://huggingface.co/leminhohoho/hltv-tick-encoder/resolve/main/STAGE3.md
Stage 3 - do tick embeddings add to the shipped pre-match P4 model?
Setup
- tools/t3_enc.py: per (match,map,player) mean of the frozen encoder z over all ticks of the map, random-projected to 64 dims. Plus 4 behavioural summaries of the same ticks (mean speed, alive fraction, mean z, mean sin(yaw)) so the embedding can be separated from "he was alive longer".
- tools/t3_prof.py: causal (expanding) per-player profile, exactly the Phase-1 protocol: p_ = mean over EARLIER maps, m_ = mean over earlier maps on the same map, ordered by match timestamp.
- tools/t3_eval_cov.py: base = 88 shipped features, +beh = + 4 behavioural profiles, +emb = + 64 embedding profiles, +both. Expanding-origin by quarter (folds Q>400 rows, first 3 dropped), xgb 2 seeds + logistic .5/.5, and a map-clustered bootstrap on the NON-TIE accuracy delta, which is the shipped gate metric (+0.3pp).
Coverage is the whole story
Tick data exists for 3.3k of 6182 pairs6 maps. Only 11.4% of the 154,550 pairs have BOTH players covered (17,556 pairs). p1_prof_eval.py on the full set therefore evaluates a treatment that is NaN-imputed for 89% of rows (it reported cov 0.092 and produced no improvement - meaningless). t3_eval_cov.py restricts fitting and scoring to the 17,556 covered pairs, which is the only honest test.
Results (covered pairs only, 15,368 scored on the expanding-origin folds)
14k checkpoint 30k checkpoint base 88 feats acc .5911 auc .6310 base .5911 / .6310 (identical) +4 behavioural acc .5904 auc .6303 -0.12pp [-0.42, +0.17] +64 embedding acc .5897 auc .6321 -0.50pp [-1.02, +0.01] +both acc .5897 auc .6309 -0.44pp [-0.93, +0.07]
Gate is +0.30pp. Every CI excludes the gate and none is positive. VERDICT: FAIL, clearly - and this is now measured twice with two different encoders.
Reading
On the 11% of pairs where we have tick data the shipped 88-feature model already gets .5911, and a per-player profile of a 192-d SSL embedding adds nothing measurable. This is the same answer Phase 1 gave for every other embedding family (a_gru/b_gru +0.12pp, all others ~0): the per-player information in a pre-match kill pair is already saturated by the aggregate features, and the tick encoder's skill is in within-round state prediction (Stage 2, AUC .78) not in stable cross-match player traits.