hltv-tick-encoder / STAGE3.md
leminhohoho's picture
Upload STAGE3.md with huggingface_hub
9ecf64e verified
|
Raw History Blame Contribute Delete
2.39 kB
# 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.