Download v13/cmp10.py from Eric-Yyvuw/yeepee-ctr: direct link, hf CLI and curl.
- Browser
- Download file 2.16 kB
-
https://huggingface.co/Eric-Yyvuw/yeepee-ctr/resolve/main/v13/cmp10.py
- Command line
-
hf download hf://Eric-Yyvuw/yeepee-ctr/v13/cmp10.py
-
curl -L -o cmp10.py https://huggingface.co/Eric-Yyvuw/yeepee-ctr/resolve/main/v13/cmp10.py
2.16 kB
| """cmp10.py TAG [TAG...] [--w 0.2] [--sq DIR] [--ref trim] [--refw 0.2]: z=(b400+s500)/2, zf=(1-w)z+w*sq_logit (sq from DIR/val{c}.parquet, | |
| default v8 feat_sqv/all500); AUC overall, by staleness bucket, staleness-reweighted (66.6/16.6/16.8). ref = v8 trim at w 0.2 with all500 sq.""" | |
| import sys, json, numpy as np, polars as pl | |
| from sklearn.metrics import roc_auc_score as A | |
| V8='/workspace/huawei/v8'; EV=np.array([0.6662,0.1655,0.1682]); av=sys.argv[1:] | |
| def opt(k,d): | |
| if k in av: i=av.index(k); v=av[i+1]; del av[i:i+2]; return v | |
| return d | |
| w=float(opt('--w','0.2')); sqd=opt('--sq',f'{V8}/feat_sqv/all500'); ref=opt('--ref','trim'); refw=float(opt('--refw','0.2')); tags=av | |
| Y={};BK={};W={};SQ={};SQ8={} | |
| for c in (25,26,23): | |
| v=pl.read_parquet(f'/workspace/huawei/v10/feat_v3/val{c}.parquet',columns=['rowid','clicked']) | |
| Y[c]=v['clicked'].to_numpy() | |
| for D_,T_ in ((sqd,SQ),(f'{V8}/feat_sqv/all500',SQ8)): | |
| T_[c]=v.join(pl.read_parquet(f'{D_}/val{c}.parquet',columns=['rowid','sq_logit']),on='rowid',how='left',maintain_order='left')['sq_logit'].to_numpy() | |
| st=pl.read_parquet(f'/workspace/huawei/v10/feat_tmB2/val{c}.parquet')['tmR_stale_h'].to_numpy(); b=np.digitize(st,[24,48]); BK[c]=b | |
| sh=np.bincount(b,minlength=3)/len(b); pres=sh>0; tgt=np.where(pres,EV,0); tgt/=tgt.sum(); W[c]=(tgt/np.where(pres,sh,1))[b] | |
| def z(tag,c,w,sq): | |
| b=np.load(f'/workspace/huawei/v10/ens/{tag}_b_c{c}_s0.npy')[:,1]; s=np.load(f'/workspace/huawei/v10/ens/{tag}_s_c{c}_s0.npy')[:,2]; return (1-w)*(b+s)/2+w*sq[c] | |
| def stats(z,c): | |
| y=Y[c]; b=BK[c]; r=dict(auc=A(y,z),rw=A(y,z,sample_weight=W[c])) | |
| for k,nm in enumerate(('b0_24','b24_48','b48p')): | |
| m=b==k; r[nm]=A(y[m],z[m]) if m.sum()>1000 else np.nan | |
| return r | |
| if __name__=='__main__': | |
| for tag in tags: | |
| for c in (25,23,26): | |
| try: zz=z(tag,c,w,SQ) | |
| except FileNotFoundError: continue | |
| s=stats(zz,c); s0=stats(z(ref,c,refw,SQ8),c) | |
| r=dict(tag=tag,w=w,sq=sqd.split('/')[-1],cut=c,**{k:round(v,5) for k,v in s.items()},**{'d_'+k:round(s[k]-s0[k],5) for k in s}) | |
| print(json.dumps(r),flush=True); open('cmp10_results.jsonl','a').write(json.dumps(r)+'\n') | |