ZeroHour's Site

Back

Experiment: retail_full_predict_behavior#

BehaviorNum_UsersRecall@5Recall@10Recall@20NDCG@5NDCG@10NDCG@20
Overall1478940.5580020.6767420.7918240.4309280.4693640.498486
pv1134270.5471080.6686180.7868380.4186840.4580030.487924
fav36960.5487220.6645470.7865150.4238980.4612730.492092
buy193400.6244890.7264850.8235610.5027320.5358220.560378
cart114310.5545570.6755540.7870430.4318190.4709790.49915
image image

MBGR#

问题定义#

给定用户历史序列,同时为 K 种业务类型生成下一个 item 的 Semantic ID:

P(Tu(1:K)Su)=k=1KP(Tu(k)Su,bk)P\left(T_u^{(1:K)} \mid S_u\right) = \sum_{k=1}^K P\left(T_u^{(k)} \mid S_u, b_k\right)

三个核心模块#

BID(Business-aware Semantic ID)#

解决问题:不同业务的 item 压缩到同一 SID 空间,各业务的语义被混淆

一个业务感知的自编码器:

输入 token embeddings [t_i, b_i]->Encoder(FFN + Gating)->业务感知的 item 表示 e_i->Decoder(FFN + Gating)->生成预测 token
plaintext

Encoder 和 Decoder 都把business embedding 拼进去

MBP(Multi-Business Prediction)#

做法是 MoE(混合专家)架构,为每种业务生成专属表示

LDR(Label Dynamic Routing)#

解决问题:训练时每个序列位置只有一个行为标签,其余业务的标签为空(稀疏),导致多业务预测缺乏监督信号。

做法极为简洁:从序列中向后查找同业务的下一个交互作为标签

iu,t+1(k)=iu,t,t=min{t>tbu,t=bk}i_{u,t+1}^{(k)} = i_{u,t'}, \quad t' = \min\{t'' > t \mid b_{u,t''} = b_k\}

把”下一个同类行为的 item”作为当前位置的标签,将稀疏标签变为密集标签。如果找不到则 mask 掉。

Experiment: retail_full_predict_behavior
https://zerohour.fun/blog/daily/0416
Author ZeroHour
Published at 2026年4月16日
Comment seems to stuck. Try to refresh?✨