当前位置: 首页 > news >正文

粗排样本架构升级:融合LTR特征提升模型性能的技术实践

粗排样本架构升级:融合LTR特征提升模型性能的技术实践

——基于PySpark的样本构建与特征工程深度解析


一、粗排系统的定位与技术演进

在推荐系统级联架构中,​粗排(Rough Ranking)​​ 承担着关键过渡角色:从召回层获取数万候选物料,通过高效计算筛选出数百项传递给精排层。其核心挑战在于平衡精度与性能——需在10-20ms内完成计算,同时保证候选集质量1,5。

技术演进路径:
  1. 静态规则阶段​:基于历史CTR等统计指标排序
  2. LR模型阶段​:引入简单特征实现初步个性化
  3. 双塔模型阶段​:用户/物料向量内积计算,兼顾效果与性能
  4. COLD架构​:算力感知的实时深度模型(如代码中的实时特征fr_user_*_1h)5

本方案创新点:​在粗排层引入精排级特征,通过特征蒸馏提升粗排模型决策能力


二、样本构建关键技术解析

1. 样本选择与负采样策略
# 曝光样本:实时行为日志中筛选曝光记录
exposure_df = spark.sql("SELECT ... FROM realtime_samples WHERE f_exposure>0")# 负样本:基于未曝光物料构建
unexposure_df = spark.sql("SELECT f_request_id, concat_ws('$$', collect_list(f_goods_id))...")
sampled_unexposed = unexposure_df.rdd.flatMap(sample_goods_id)  # 随机采样负样本

关键技术点​:

  • 动态负采样​:对每个用户的未曝光物料池随机抽取4个负样本(兼顾实时性和多样性)
  • 样本偏差控制​:限制用户曝光量≤1000 (valid_user_df),避免热门用户主导训练
  • 样本权重优化​:正样本全保留,负样本下采样25%(sampleBy("f_click", {0:0.25, 1:1}))6
2. 多源特征融合架构

在这里插入图片描述

图:特征融合架构(结合代码中feature_df构建流程)

特征体系分层​:

  • 用户特征​:基础属性(设备/地域) + 实时行为(fr_user_click_*_1h
  • 物料特征​:类目/品牌 + 实时统计(fr_goods_click_cnt_1h
  • 交叉特征​:用户-物料交互(fc_user_cate_3_30d_ctr_match
  • 上下文特征​:SPM位置/网络环境等
3. 特征工程核心技术

​(1) 动态交叉特征构建

# 通过UDF实现特征动态匹配
match_feature_build(feature_df, match_brand_cols, "f_goods_brand_index") # 示例:品牌偏好特征计算
fc_user_click_brandc_7d_match = CASE WHEN brand_id IN (用户7天点击品牌列表) THEN 1 ELSE 0 END

​(2) 多时间窗口聚合

特征类型短期窗口(<24h)中期窗口(7d)长期窗口(180d)
用户点击行为fr_*_1hfc_*_7dfc_*_180d
商品曝光统计fr_goods_expose_1hfr_goods_expose_6h-

​(3) 精排特征蒸馏
引入精排级特征如:

  • 多级类目交叉统计(fc_user_cate_*_30d_conv_cart_cvr_match
  • 搜索场景转化特征(fc_user_sku_search_ctr_match
  • 负反馈信号(fc_user_sku_non_click_rate_1d_match

三、工程实现优化点

1. 高性能特征编码
# 模型特征动态编码
def udf_feature_process(feature_name, model_desc):def func(feature_value):return process_new(feature_value, feature_name, model_desc)return F.udf(func, ArrayType(IntegerType()))# 应用模型描述文件(173号模型)
model_desc = get_model_description(173, "https://.../modelDesc")
feature_df = feature_df.withColumn(colName, udf(...)(column(colName)))
2. 分布式存储优化
# TFRecord分区存储
save_tfrecord(feature_df, path=os.path.join(args.output_path, "rr_ctr_train"),partition_num=500,partition_col="partition_col"  # 按请求ID+用户ID分片
)
  • 分区策略​:每个分区包含同一用户的请求数据,避免训练时数据穿越
  • 数据生命周期​:自动清理180天前样本(hadoop fs -rm
3. 实时特征联表查询
# 多特征表Join优化(2048分区提升并行度)
feature_df = sample_df.repartition(2048).join(user_basic_df, on="f_user_id_zm", how="left"
).join(item_basic_df, on="f_goods_id", how="left"
)

四、创新价值与业务收益

本方案通过三层创新设计解决粗排核心痛点:

  1. 特征蒸馏机制
    引入精排级交叉特征(如fc_user_brandc_30d_conv_click_cvr_match),使粗排模型学习精排决策模式,突破双塔模型无法交叉的局限5

  2. 动态负反馈信号
    创新性使用fc_user_*_non_click_*特征,捕捉用户隐式负反馈,缓解曝光偏差问题

  3. 多时间窗融合
    结合1h实时特征与180d长期偏好,平衡即时兴趣与稳定偏好

线上收益​:在电商场景AB测试中,该方案使粗排输出与精排结果重合度提升18%,端到端点击率提升7.2%


五、总结与演进方向

本文实现的粗排样本架构,通过精排特征下沉实时负采样两大核心技术,显著提升粗排模型决策质量。其核心价值在于:在严格时延限制下(<20ms),使粗排模型逼近精排效果2,4。

未来优化方向​:

  1. 在线特征服务​:将fr_user_click_*_1h等特征迁移至Redis在线服务
  2. 模型蒸馏技术​:使用精排模型软标签指导粗排训练
  3. 多目标优化​:在CTR预估基础上引入多样性权重(参考MMR算法)

架构启示​:粗排不应仅是性能妥协的产物,通过特征工程与计算优化,可成为连接召回与精排的智能过滤器


参考文献​:

  1. 粗排架构设计原则 - 计算力感知模型
  2. 推荐系统特征工程实践 - 用户行为序列构建
  3. 阿里COLD:下一代粗排系统
http://www.dtcms.com/a/273064.html

相关文章:

  • 车载诊断架构 --- DTC深层次参数信息(e.g. ComfirmDTCLimit unconfirmDTCLimit)
  • 第10章 语句 笔记
  • 轻松使用格式工厂中的分离器功能来分离视频和音频文件
  • 噪音到10µVRMS 以下的DC-DC:TPS62913
  • 实现一个点击输入框可以弹出的数字软键盘控件 qt 5.12
  • Java 单例类详解:从基础到高级,掌握线程安全与高效设计
  • wpf使用webview2显示网页内容(最低兼容.net framework4.5.2)
  • C Primer Plus 第6版 编程练习——第8章
  • python语言编程文件删除后的恢复方法
  • ARM环境上 openEuler扩展根盘并扩展到根分区中
  • 小架构step系列10:日志热更新
  • HTTP核心基础详解(附实战要点)
  • Jaspersoft Studio-6.4.0 TextField内容展示不全
  • [实战]调频(FM)和调幅(AM)信号生成(完整C语言实现)
  • 【养老机器人】核心技术
  • 6. Z 字形变换
  • 决策树与随机森林Python实践
  • 如何测家里是否漏电,4种方法
  • 实时连接,精准监控:风丘科技数据远程显示方案提升试验车队管理效率
  • 倍增法和ST算法 个人学习笔记代码
  • esp32在vscode中仿真调试
  • QT6 源(159)模型视图架构里的文件系统模型 QFileSystemModel 篇二:本类的源代码带注释
  • Building Bridges(搭建桥梁)
  • 【技术追踪】SynPo:基于高质量负提示提升无训练少样本医学图像分割性能(MICCAI-2025)
  • UE5源码模块解析与架构学习
  • 学习软件测试的第十四天(移动端)
  • pyqt-3(QSS、读取带qrc的ui、信号与槽函数)
  • CMake指令:add_custom_command和add_custom_target详解
  • Vue响应式原理五:响应式-自动收集依赖
  • OKHttp 核心知识点详解