粗排樣本架構升級:融合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.pswp.cn/pingmian/88307.shtml
繁體地址,請注明出處:http://hk.pswp.cn/pingmian/88307.shtml
英文地址,請注明出處:http://en.pswp.cn/pingmian/88307.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

CCF-GESP 等級考試 2025年6月認證C++四級真題解析

1 單選題&#xff08;每題 2 分&#xff0c;共 30 分&#xff09;第1題 在C中&#xff0c;聲明一個指向整型變量的指針的正確語法是&#xff08; &#xff09;。A. int* ptr; B. *int ptr; C. int ptr*; D. ptr …

PlantUML 在 IDEA 中文版中的安裝與使用指南

目錄 摘要 一、安裝 PlantUML 插件 二、配置 PlantUML 運行環境 三、創建 PlantUML 文件 四、編寫 PlantUML 代碼 五、生成并查看圖表 六、自動生成類圖&#xff08;重點新增&#xff09; 6.1 從 Java 類生成類圖 6.2 類圖語法詳解 6.3 類圖高級技巧 七、常見問題及…

創客匠人:創始人 IP 打造中 “放下身段” 的深層邏輯

在 IP 經濟火熱的當下&#xff0c;無數創始人投身 IP 打造&#xff0c;卻鮮少有人意識到&#xff1a;真正能實現 IP 變現的核心&#xff0c;并非專業知識的堆砌&#xff0c;而是與用戶建立 “可交往” 的連接。創客匠人通過多年服務 IP 的實踐發現&#xff0c;那些穿越周期的創…

C語言<數據結構-鏈表>

鏈表是一種常見且重要的數據結構&#xff0c;在 C 語言中&#xff0c;它通過指針將一系列的節點連接起來&#xff0c;每個節點可以存儲不同類型的數據。相比數組&#xff0c;鏈表在插入和刪除元素時不需要移動大量數據&#xff0c;具有更好的靈活性&#xff0c;尤其適合處理動態…

基于Matlab多特征融合的可視化指紋識別系統

針對中小規模&#xff08;百級&#xff09;指紋模板庫中常見的脊線斷裂、噪聲干擾以及結果缺乏可解釋性等難點&#xff0c;本文提出并實現了一種基于多特征融合的可視化指紋識別系統。系統整體采用模塊化設計&#xff1a;在預處理階段&#xff0c;先通過改進的灰度歸一化與局部…

50天50個小項目 (Vue3 + Tailwindcss V4) ? | DoubleVerticalSlider(雙垂直滑塊)

&#x1f4c5; 我們繼續 50 個小項目挑戰&#xff01;—— DoubleVerticalSlider組件 倉庫地址&#xff1a;https://github.com/SunACong/50-vue-projects 項目預覽地址&#xff1a;https://50-vue-projects.vercel.app/ 使用 Vue 3 的 Composition API&#xff08;<scrip…

mysql join語句、全表掃描 執行優化與訪問冷數據對內存命中率的影響

文章目錄join執行邏輯Index Nested_Loop Join&#xff08;NLJ&#xff09;MMR(Mutli-Range Read) 優化BKA(Batched Key Access)算法Simple Nested_Loop JoinBlock Nested-Loop Join&#xff08;BLJ&#xff09;join buffer 一次放不下 驅動表join buffer優化的影響&#xff1a;…

【LeetCode100】--- 1.兩數之和【復習回滾】

題目傳送門 解法一&#xff1a;暴力枚舉&#xff08;也是最容易想到的&#xff09; class Solution {public int[] twoSum(int[] nums, int target) {int n nums.length;for(int i 0; i < n; i){for(int j i1; j<n; j){if(nums[i] nums[j] target){return new int…

opencv提取png線段

import cv2 import matplotlib.pyplot as plt import numpy as np# 讀取圖像 image cv2.imread(./data/1.png) if image is None:print("無法讀取圖像文件") else:# 轉換為灰度圖像gray cv2.cvtColor(image, cv2.COLOR_BGR2GRAY)# 使用Canny邊緣檢測edges cv2.Can…

計算機網絡:概述層---計算機網絡概念解析

計算機網絡的概念詳解 &#x1f4c5; 更新時間&#xff1a;2025年07月6日 &#x1f3f7;? 標簽&#xff1a;計算機網絡 | 網絡基礎 | 互聯網 | TCP/IP | 路由器 文章目錄前言一、計算機網絡的發展歷程二、什么是計算機網絡&#xff1f;1. 計算機網絡的基本功能2. 計算機網絡的…

springMVC04-Filter過濾器與攔截器

一、Filter&#xff08;過濾器&#xff09;和 Interceptor&#xff08;攔截器&#xff09;在 SpringMVC 中&#xff0c;Filter&#xff08;過濾器&#xff09;和 Interceptor&#xff08;攔截器&#xff09;都是對請求和響應進行預處理和后處理的重要工具&#xff0c;但它們存在…

STM32第十九天 ESP8266-01S和電腦實現串口通信(2)

1&#xff1a;UDP 傳輸UDP 傳輸不不區分 server 或者 client &#xff0c;由指令 ATCIPSTART 建?立傳輸。 1. 配置 WiFi 模式 ATCWMODE3 // softAPstation mode 響應 : OK 2. 連接路路由器? ATCWJAP"SSID","password" // SSID and password of router 響…

大健康IP如何用合規運營打破“信任危機”|創客匠人

一、行業亂象下的信任裂痕當前大健康領域私域直播亂象頻發&#xff0c;部分機構利用“假專家義診”“限量搶購”等話術&#xff0c;將低成本保健品高價賣給老人&#xff0c;甚至有技術公司提供“全鏈路坑老方案”&#xff0c;加劇行業信任危機。這種短視行為不僅損害消費者權益…

MySQL(122)如何解決慢查詢問題?

解決慢查詢問題通常涉及到多種技術和方法&#xff0c;以確保數據庫查詢的高效性和響應速度。以下是詳細步驟和示例代碼&#xff0c;闡述如何解決慢查詢問題。 一. 慢查詢的常見原因 缺少索引&#xff1a;查詢未使用索引或索引未優化。查詢不當&#xff1a;查詢語句本身書寫不合…

esp32在vscode中仿真調試

此方法可以用在具有usb serial jtag功能的esp32芯片用&#xff0c;支持型號&#xff1a; ESP32-C3 ESP32-S3 ESP32-C6 ESP32-H2 ESP32-C5 USB Serial JTAG功能介紹&#xff1a; 從硬件角度&#xff1a; 它是ESP32芯片內置的硬件功能 不是一個獨立的物理接口 是通過USB接口實…

藍橋云課 矩形切割-Java

目錄 題目鏈接 題目 解題思路 代碼 題目鏈接 競賽中心 - 藍橋云課 題目 解題思路 找最大的正方形就是大邊-n個小邊&#xff0c;直至相等或者小于1 代碼 import java.util.Scanner; // 1:無需package // 2: 類名必須Main, 不可修改public class Main {public static voi…

PostgreSQL 鎖等待監控,查找等待中的鎖

直接貼SQLWITH RECURSIVE l AS (SELECT pid, locktype, mode, granted, ROW(locktype,database,relation,page,tuple,virtualxid,transactionid,classid,objid,objsubid) objFROM pg_locks ), pairs AS (SELECT w.pid waiter, l.pid locker, l.obj, l.modeFROM l wJOIN l ON l.…

Elasticsearch 字符串包含子字符串:高級查詢技巧

作者&#xff1a;來自 Elastic Justin Castilla 想要獲得 Elastic 認證&#xff1f;看看下一次 Elasticsearch Engineer 培訓什么時候開始吧&#xff01; Elasticsearch 擁有大量新功能&#xff0c;可以幫助你為你的使用場景構建最佳的搜索解決方案。深入了解我們的示例 noteb…

Vue、Laravel 項目初始化命令對比 / curl 命令/ CORS 機制總結與案例

前言一個疑問衍生出另一個疑問再衍生出又一個疑問&#xff0c;于是有了這篇文章。一、Vue 項目初始化命令 基于 Vite 創建 Vue 項目 命令&#xff1a;npm create vitelatest my-project -- --template vue適用場景&#xff1a;需輕量級、高速開發環境關鍵點&#xff1a;使用 Vi…

Jenkins 流水線配置

Jenkinsfile dsl文件:pipeline {// 指定任務在哪個集群節點執行agent any// 聲明全局變量environment {keyvalueAPPLICATION_NAMEspringboot-demo // 項目名稱HOST_PORT7777 // 宿主機暴露服務端口CONTAINER_PORT8080 // 容器內部服務端口…