关于腾讯广告算法大赛2025项目分析1 - dataset.py

把原始 jsonl 用户行为序列,转成模型能直接吃的张量和特征字典

一、整体定位

  1. MyDataset 读取训练数据,产出:
    • 用户序列 seq
    • 正样本 pos
    • 负样本 neg
    • token 类型
    • 各类特征
    • 时间特征相关原始时间戳
  2. MyTestDataset 读取测试/推理数据,产出
    • 用户序列 seq
    • token 类型
    • 特征
    • user_id
    • 时间信息
    • 暴露未点击集合
  3. collate_fn 在 DataLoader 拼 batch 时,把"每条样本里的字典特征"整理成规则 tensor,并额外构造时间特征。
  4. model.py 里的 BaselineModel 再把这些 tensor 转成 embedding,送入序列模型(HSTU block)做训练/预测。

二、架构设计

MyDataset

  • init:加载索引、特征表、多模态向量和 schema
  • load_offsets:加载每个用户序列的文件偏移
  • load_user_data:按 uid 从 seq.jsonl 随机读取一条用户序列
  • random_neq:随机负采样
  • getitem:把单个用户序列转成训练样本
  • len:返回训练用户数
  • init_feat_info:定义特征类型、默认值、统计信息
  • get_time_diff_bin:把时间差映射到离散桶
  • fill_missing_feat:给特征字典补默认值和多模态 emb
  • collate_fn:把 batch 样本拼成 tensor,并构造时间特征

MyTestDataset

  • init:加载推理集索引和特征配置
  • load_data_and_offsets:加载推理集偏移
  • process_cold_start_feat:把冷启动 string 特征归零
  • getitem:把单个用户序列转成推理输入
  • len:返回推理用户数
  • collate_fn:拼 batch,并额外构造曝光未点击集合

工具函数

  • save_emb:把 embedding 存成二进制文件
  • load_mm_emb:加载多模态 embedding
相关推荐
写代码写到手抽筋1 小时前
5G上行DCI字段判定:端口 流数 PMI选择详解
java·算法·5g
WPF工业上位机1 小时前
YXGK.FakeVM深度学习之5语义分割
人工智能·深度学习
xieliyu.1 小时前
Java算法精讲:双指针(二)
java·开发语言·算法
落叶无情1 小时前
ICEF认知操作系统:四类约束全维度全覆盖,是全谱系系统化约束体系
人工智能
碳基硅坊2 小时前
Gemma 4 12B 让AI创作更私密更高效
人工智能·gemma-4-12b
weixin_468466852 小时前
大模型新手入门与实战指南
人工智能·深度学习·ai·大模型
装不满的克莱因瓶2 小时前
掌握 RNN 与 LSTM 模型结构
人工智能·python·rnn·深度学习·神经网络·ai·lstm
jeffer_liu2 小时前
Spring AI 生产级实战:裁判员
java·人工智能·后端·spring·大模型
wayz112 小时前
Momentum:PSL(心理线指标)技术指标详解
算法·金融·数据分析·量化交易·特征工程