RecSys:粗排模型和精排特征體系

粗排

在推薦系統鏈路中,排序階段至關重要,通常分為召回、粗排和精排三個環節。粗排作為精排前的預處理階段,需要在效果和性能之間取得平衡。
在這里插入圖片描述

雙塔模型
  • 后期融合:把用戶、物品特征分別輸入不同的神經網絡,不對用戶、物品特征做融合
  • 線上計算量小:
    • 用戶塔只需要做一次線上推理,計算用戶表征a
    • 物品表征b事先儲存在向量數據庫中,物品塔在線上不做推理。
  • 預估準確性不如精排模型。

在這里插入圖片描述

三塔模型

阿里巴巴2020年論文《COLD: Towards the Next Generation of Pre-Ranking System》(Zhe Wang et al., DIP.KDD 2020)的核心思想

在這里插入圖片描述

  • 用戶塔(很大)

    • 用戶特征和場景特征
    • 每次只有一個用戶,用戶塔只作一次推理,即使用戶塔很大,總計算量也不大
  • 物品塔(較大)

    • 物品特征(靜態)
    • 有n個物品,理論上物品塔需要做n次推理,PS緩存物品塔的輸出向量,避免絕大部分推理,
    • 由于用到緩存,物品塔只需要在遇到新物品的時候才需要計算,粗排給幾千個物品打分,粗排只需要給幾十個進行推理,物品塔規模可以比較大
  • 交叉塔(較小)

    • 統計特征,交叉特征(用戶特征與物品特征做交叉)
    • 統計特征動態變化,比如用戶的點擊率,物品的被點擊量,緩存不可行。
    • 有n個物品,交叉塔必須做n次推理,線上推理避免不掉,所以交叉塔必須足夠小,計算夠快,通常只有幾層,寬度也比較小。,

在這里插入圖片描述

  • 粗排上層介紹
  • 有n個物品,模型上層需要做n次推理。
  • 粗排推理的大部分計算都在模型上層

在這里插入圖片描述

三塔模型的推理
  • 從多個數據源提取特征:
    • 1個用戶的畫像、統計特征
    • n個物品的畫像、統計特征
  • 用戶塔:只做1次推理
  • 物品塔:實現緩存,未命中時需要做推理。實際上緩存命中率非常高
  • 交叉塔:必須做n次推理(統計特征都是動態特征)
  • 上層網絡必須做n次推理,給n個物品打分。

精排模型的特征體系

用戶畫像
  • 用戶ID:
  • 人口統計屬性:年齡、性別等基本信息
  • 用戶賬號信息:新老、活躍度等等(模型需要對新用戶、低活用戶做優化
  • 感興趣的類目、關鍵詞、品牌(可以用是用戶填寫,也可以是算法自動提取,用戶興趣的信息對于排序是非常有幫助的)
物品畫像

現在業界的推薦系統都會使用用戶畫像和物品畫像

  • 物品ID(在召回、排序做Embedding)
  • 發布時間(或年齡),發布時間越久,價值越低
  • GeoHash(經緯編碼)、所在城市
  • 標題、類目、關鍵詞、品牌,通常做法是做Embedding
  • 字數、圖片數、視頻清晰度、標簽數
  • 內容信息量、圖片美學(算法打分),事先使用人工標注的數據集訓練cv和nlp模型,利用這些模型把內容信息量、圖片美學這些分數寫入物品畫像中
用戶統計特征
  • 用戶30天(7天、1天、1小時)的曝光數、點擊數、點贊數、收藏數等,各種時間粒度反應用戶的興趣,長期、中長期和短期。
  • 按照筆記圖文/視頻分桶(比如最近7天,該用戶對圖片的點擊率、對視頻筆記的點擊率)
  • 按照筆記類目分桶。(比如30天。用戶對美妝筆記的點擊率、對美食筆記的點擊率、對數碼科技筆記的點擊率)。可以反應用戶對哪些類目更感興趣如果一個用戶對美食筆記的點擊量和點擊率等指標都偏高。說明這個用戶對美食類目感興趣
筆記統計特征
  • 筆記 30天(7天、1天、1小時)的曝光數、點贊數、收藏數等指標,反應筆記的受歡迎程度,使用不同的粒度也是有道理的,某些筆記30天的點擊率都很高,但是最近一天指標變得很差,說明這些筆記已經過時了,不應該給過多流量
  • 按用戶性別分桶、按照用戶年齡、地域分桶
  • 作者的統計特征
    • 發布的筆記數量
    • 粉絲數
    • 消費指標(曝光數、點擊數、點贊數、收藏數)(反應作者受歡迎程度和平均筆記質量
場景特征
  • 用戶定位GeoHash(經緯度編碼)、城市(對召回和排序都有用,用戶可能對自己周圍發生的事情比較感興趣)
  • 當前時刻(分段做Embedding),一個人在一天不同時刻的興趣可能有所區別,在上班路上和晚上睡覺
  • 是否周某,是否節假日
  • 設備信息:手機品牌、手機型號、操作系統
特征處理
  • 離散特征做Embedding

    • 用戶ID、筆記ID、作者ID。(幾千萬、幾億級別)

    • 類目、關鍵詞、城市、手機品牌 (筆記的類目也就幾百個,關鍵詞就幾百萬個,給他們做embedding比較容易,消耗內存也不多)

  • 連續特征:分桶變成離散特征

    • 年齡(10個年齡段、one-hot)或者Embedding,筆記長度、視頻長度
  • 連續特征:其他變換

    • 曝光數、點擊數、點贊數等數值做 log?(1+x)\log (1+x)log(1+x)
    • 轉化為點擊率、點贊率等指標,并做平滑處理
特征覆蓋率
  • 很多特征無法覆蓋100%樣本,存在缺失
    • 很多用戶注冊的時候不填寫年齡,因此用戶年齡特征的覆蓋率遠小于100%
    • 例:很多用戶設置隱私權限,APP 不能獲得用戶地理定位,因此場景特征有缺失。
    • 做特征工程需要提高特征覆蓋率,讓排序模型更準,需要考慮當特征缺失的時候要用什么作為默認值
數據服務

排序服務器會從是三個數據源取回所需要的數據

  1. 用戶畫像(User Profile)
  2. 物品畫像(Item profile)
  3. 統計數據

用戶發送請求給主服務器,主服務器發生召回請求給召回服務器,召回服務器把幾千個召回結果發回主服務器,主服務器把物品ID、用戶ID、場景特征(用戶地點、當前時刻、是否節假日、手機型號,操作系統)發往排序服務器。排序服務器從三個源中獲取 用戶畫像、物品畫像、統計數據。排序服務器把特征打包傳遞給TF serving tensorflow會給筆記打分,把分數返回給排序服務器,排序服務會用排序融合分數,業務規則給筆記做排序。把排名最高的幾十篇筆記返回給主服務器

  • 用戶畫像壓力比較小,每次只提取一個用戶
  • 物品畫像壓力比較大,粗排要給幾千筆記做排序,讀取幾千筆記的特征
  • 存用戶統計的壓力小,存物品統計的壓力很大
  • 在工程實現里,用戶畫像可以存的很長很大,但是盡量不要在物品畫像存很大向量,否則物品畫像會承受很大的壓力
  • 用戶畫像較為靜態,只需要天刷新就好,物品畫像則是靜態,算法給物品內容打分基本不變,這兩類讀取需要快,有時候可以把物品畫像和用戶畫像緩存在排序服務器本地
  • 但是不能把統計數據緩存,統計數據是動態變化的,實效性很強 ,用戶刷了5篇筆記,用戶點擊,點贊等統計量都發生了變化,要盡快刷新數據庫
    在這里插入圖片描述

Reference

王樹森 推薦系統

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/pingmian/93679.shtml
繁體地址,請注明出處:http://hk.pswp.cn/pingmian/93679.shtml
英文地址,請注明出處:http://en.pswp.cn/pingmian/93679.shtml

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

相關文章

spring聲明式事務,finally 中return對事務回滾的影響

finally 塊中使用 return 是一個常見的編程錯誤,它會: 跳過正常的事務提交流程。吞掉異常,使錯誤處理失效 導致不可預測的事務行為Java 中 finally 和 return 的執行機制:1. finally 塊的基本特性 在 Java 中,finally …

WPF 打印報告圖片大小的自適應(含完整示例與詳解)

目標:在 FlowDocument 報告里,根據 1~6 張圖片的數量, 自動選擇 2 行 3 列 的最佳布局;在只有 1、2、4 張時保持“占滿感”,打印清晰且不變形。規則一覽:1 張 → 占滿 23(大圖居中)…

【AI大模型前沿】百度飛槳PaddleOCR 3.0開源發布,支持多語言、手寫體識別,賦能智能文檔處理

系列篇章💥 No.文章1【AI大模型前沿】深度剖析瑞智病理大模型 RuiPath:如何革新癌癥病理診斷技術2【AI大模型前沿】清華大學 CLAMP-3:多模態技術引領音樂檢索新潮流3【AI大模型前沿】浙大攜手阿里推出HealthGPT:醫學視覺語言大模…

迅為RK3588開發板Android12 制作使用系統簽名

在 Android 源碼 build/make/target/product/security/下存放著簽名文件,如下所示:將北京迅為提供的 keytool 工具拷貝到 ubuntu 中,然后將 Android11 或 Android12 源碼build/make/target/product/security/下的 platform.pk8 platform.x509…

Day08 Go語言學習

1.安裝Go和Goland 2.新建demo項目實踐語法并使用git實踐版本控制操作 2.1 Goland配置 路徑**:** GOPATH workspace GOROOT golang 文件夾: bin 編譯后的可執行文件 pkg 編譯后的包文件 src 源文件 遇到問題1:運行 ‘go build awesomeProject…

Linux-文件創建拷貝刪除剪切

文章目錄Linux文件相關命令ls通配符含義touch 創建文件命令示例cp 拷貝文件rm 刪除文件mv剪切文件Linux文件相關命令 ls ls是英文單詞list的簡寫,其功能為列出目錄的內容,是用戶最常用的命令之一,它類似于DOS下的dir命令。 Linux文件或者目…

RabbitMQ:交換機(Exchange)

目錄一、概述二、Direct Exchange (直連型交換機)三、Fanout Exchange(扇型交換機)四、Topic Exchange(主題交換機)五、Header Exchange(頭交換機)六、Default Exchange(…

【實時Linux實戰系列】基于實時Linux的物聯網系統設計

隨著物聯網(IoT)技術的飛速發展,越來越多的設備被連接到互聯網,形成了一個龐大而復雜的網絡。這些設備從簡單的傳感器到復雜的工業控制系統,都在實時地產生和交換數據。實時Linux作為一種強大的操作系統,為…

第五天~提取Arxml中描述信息New_CanCluster--Expert

?? ARXML描述信息提取:挖掘汽車電子設計的"知識寶藏" 在AUTOSAR工程中,描述信息如同埋藏在ARXML文件中的金礦,而New_CanCluster--Expert正是打開這座寶藏的密鑰。本文將帶您深度探索ARXML描述信息的提取藝術,解鎖汽車電子設計的核心知識資產! ?? 為什么描述…

開源 C++ QT Widget 開發(一)工程文件結構

文章的目的為了記錄使用C 進行QT Widget 開發學習的經歷。臨時學習,完成app的開發。開發流程和要點有些記憶模糊,趕緊記錄,防止忘記。 相關鏈接: 開源 C QT Widget 開發(一)工程文件結構-CSDN博客 開源 C…

手寫C++ string類實現詳解

類定義cppnamespace ym {class string {private:char* _str; // 字符串數據size_t _size; // 當前字符串長度size_t _capacity; // 當前分配的內存容量static const size_t npos -1; // 特殊值,表示最大可能位置public:// 構造函數和析構函數string(…

C++信息學奧賽一本通-第一部分-基礎一-第3章-第2節

C信息學奧賽一本通-第一部分-基礎一-第3章-第2節 2057 星期幾 #include <iostream>using namespace std;int main() {int day; cin >> day;switch (day) {case 1:cout << "Monday";break;case 2:cout << "Tuesday";break;case 3:c…

【leetcode 3】最長連續序列 (Longest Consecutive Sequence) - 解題思路 + Golang實現

最長連續序列 (Longest Consecutive Sequence) - LeetCode 題解 題目描述 給定一個未排序的整數數組 nums&#xff0c;找出數字連續的最長序列&#xff08;不要求序列元素在原數組中連續&#xff09;的長度。要求設計并實現時間復雜度為 O(n) 的算法解決此問題。 示例 1&#x…

礦物分類系統開發筆記(一):數據預處理

目錄 一、數據基礎與預處理目標 二、具體預處理步驟及代碼解析 2.1 數據加載與初步清洗 2.2 標簽編碼 2.3 缺失值處理 &#xff08;1&#xff09;刪除含缺失值的樣本 &#xff08;2&#xff09;按類別均值填充 &#xff08;3&#xff09;按類別中位數填充 &#xff08;…

《UE5_C++多人TPS完整教程》學習筆記43 ——《P44 奔跑混合空間(Running Blending Space)》

本文為B站系列教學視頻 《UE5_C多人TPS完整教程》 —— 《P44 奔跑混合空間&#xff08;Running Blending Space&#xff09;》 的學習筆記&#xff0c;該系列教學視頻為計算機工程師、程序員、游戲開發者、作家&#xff08;Engineer, Programmer, Game Developer, Author&…

TensorRT-LLM.V1.1.0rc1:Dockerfile.multi文件解讀

一、TensorRT-LLM有三種安裝方式&#xff0c;從簡單到難 1.NGC上的預構建發布容器進行部署,見《tensorrt-llm0.20.0離線部署DeepSeek-R1-Distill-Qwen-32B》。 2.通過pip進行部署。 3.從源頭構建再部署&#xff0c;《TensorRT-LLM.V1.1.0rc0:在無 GitHub 訪問權限的服務器上編…

UniApp 實現pdf上傳和預覽

一、上傳1、html<template><button click"takeFile">pdf上傳</button> </template>2、JStakeFile() {// #ifdef H5// H5端使用input方式選擇文件const input document.createElement(input);input.type file;input.accept .pdf;input.onc…

《用Proxy解構前端壁壘:跨框架狀態共享庫的從零到優之路》

一個項目中同時出現React的函數式組件、Vue的模板語法、Angular的依賴注入時,數據在不同框架體系間的流轉便成了開發者不得不面對的難題—狀態管理,這個本就復雜的命題,在跨框架場景下更顯棘手。而Proxy,作為JavaScript語言賦予開發者的“元編程利器”,正為打破這道壁壘提…

MOESI FSM的全路徑測試用例

MOESI FSM的全路徑測試用例摘要&#xff1a;本文首先提供一個UVM版本的測試序列&#xff08;基于SystemVerilog和UVM框架&#xff09;&#xff0c;設計為覆蓋MOESI FSM的全路徑&#xff1b;其次詳細解釋如何使用覆蓋組&#xff08;covergroup&#xff09;來量化測試的覆蓋率&am…

git倉庫和分支的關系

1?? 倉庫分支&#xff08;Repository Branch&#xff09;每個 Git 倉庫都有自己的分支結構。分支決定你當前倉庫看到的代碼版本。示例&#xff1a;倉庫分支只是局部修改&#xff0c;項目分支才是全局管理所有倉庫分支的概念。wifi_camera 倉庫&#xff1a; - main - dev - fe…