為方便您快捷體驗PAI-Rec產品,本文提供了一份公開數據集,您可以按照文檔說明,按步驟體驗PAI-Rec推薦算法定制的特征工程、召回、精排等關鍵功能的配置,生成代碼并部署到DataWorks相應的業務流程中。
前提條件
在開始執行操作前,請確認您已完成以下準備工作:
已開通PAI,詳情請參見開通PAI并創建默認工作空間。
已創建專有網絡VPC和交換機,詳情請參見搭建IPv4專有網絡。
已創建Hologres實例,并創建自定義用戶和數據庫,詳情請參見購買Hologres、用戶管理和創建數據庫。
已開通MaxCompute服務,并創建MaxCompute項目project_mc,詳情請參見開通MaxCompute和創建MaxCompute項目。
創建OSS存儲空間(Bucket),詳情請參見創建存儲空間。
開通DataWorks服務,并完成以下操作:
已創建DataWorks工作空間,操作詳情請參見創建工作空間。
已購買獨享資源組,并綁定已創建的DataWorks工作空間,詳情請參見新增和使用獨享調度資源組。
配置DataWorks數據源:
創建并綁定OSS數據源,詳情請參見創建并管理數據源。
創建并綁定MaxCompute數據源,詳情請參見創建MaxCompute數據源。
創建并綁定Hologres數據源,詳情請參見創建Hologres數據源。
創建FeatureStore項目和特征實體,并使用DataWorks獨享資源組安裝FeatureStore Python SDK。詳情請參見二、創建并注冊FeatureStore和安裝FeatureStore Python SDK。
1.創建PAI-Rec實例并初始化服務
登錄全鏈路推薦系統開發平臺首頁,單擊立即購買。
在PAI-Rec實例購買頁面,配置以下關鍵參數,然后單擊立即購買。
參數
說明
地域和可用區
您的云服務部署的地域。
服務類型
本方案選擇高級版。
說明相較于標準版,高級版增加了數據診斷和推薦方案定制功能。
登錄PAI-Rec管理控制臺,在頂部菜單欄左上角處,選擇地域。
在左側導航欄選擇實例列表,單擊實例名稱,進入實例詳情頁面。
單擊操作指引區域的初始化,跳轉至系統配置>全鏈路服務頁面,單擊編輯,按照如下資源配置完成相應參數配置,然后單擊完成。
參數
說明
建模
機器學習平臺 PAI 工作空間
填寫已創建的PAI默認工作空間。
大數據開發治理平臺 DataWorks 工作空間
填寫自動生成的DataWorks工作空間。
大數據計算服務 MaxCompute 項目(工作)空間
填寫已創建的MaxCompute項目。
對象存儲 OSS Bucket
選擇已創建的OSS Bucket。
引擎
實時召回引擎
選擇已創建的Hologres實例和對應的數據庫。
實時特征查詢
選擇已創建的Hologres實例和對應的數據庫。
在左側導航欄選擇系統配置>權限管理,按照界面提示,在訪問服務頁簽檢查各項云產品授權情況,確保對應云產品訪問狀態正常。
2. 克隆公開數據集
1.同步數據表
本方案使用的數據為固定時間窗的數據,不支持任務例行調度執行。如果有執行需求,您需要部署特定的Python代碼以生成所需數據,詳情請參見通過代碼產出數據頁簽。
同步固定時間窗的數據
PAI-Rec在公開訪問的項目pai_online_project中提前準備了推薦算法中常用的三張表:
用戶表:pai_online_project.rec_sln_demo_user_table
物品表:pai_online_project.rec_sln_demo_item_table
行為表:pai_online_project.rec_sln_demo_behavior_table
本方案后續的操作均基于上述三張表,其數據均是隨機生成的模擬數據,沒有真實業務含義,因此訓練得到的AUC等指標較低。您需要在DataWorks中執行SQL命令,從pai_online_project項目中將上述表數據同步到您的DataWorks項目(例如DataWorks_a)中。具體操作步驟如下:
登錄DataWorks控制臺,在頂部菜單欄左上角處,選擇地域。
在左側導航欄單擊數據建模與開發>數據開發。
選擇已創建的DataWorks工作空間后,單擊進入數據開發。
鼠標懸停至新建,選擇新建節點>MaxCompute>ODPS SQL,按照如下資源配置完成相應參數配置,然后單擊確認。
參數
說明
引擎實例
選擇已綁定的MaxCompute數據源。
節點類型
選擇節點類型ODPS SQL。
路徑
選擇當前節點所在路徑。例如
業務流程/Workflow/MaxCompute
。名稱
自定義填寫,例如Data。
在新建節點區域運行如下代碼,將用戶表、物品表、行為表從pai_online_project項目同步到您已創建的MaxCompute項目(例如project_mc)中,并同步2023年1月1日到2023年2月16日之間的數據。
CREATE TABLE IF NOT EXISTS rec_sln_demo_user_table_v1( user_id BIGINT COMMENT '用戶唯一ID', gender STRING COMMENT '性別', age BIGINT COMMENT '年齡', city STRING COMMENT '城市', item_cnt BIGINT COMMENT '創作內容數', follow_cnt BIGINT COMMENT '關注數', follower_cnt BIGINT COMMENT '粉絲數', register_time BIGINT COMMENT '注冊時間', tags STRING COMMENT '用戶標簽' ) PARTITIONED BY (ds STRING) STORED AS ALIORC; INSERT OVERWRITE TABLE rec_sln_demo_user_table_v1 PARTITION(ds) SELECT * FROM pai_online_project.rec_sln_demo_user_table WHERE ds > "20221231" and ds < "20230217"; CREATE TABLE IF NOT EXISTS rec_sln_demo_item_table_v1( item_id BIGINT COMMENT '內容ID', duration DOUBLE COMMENT '視頻時長', title STRING COMMENT '標題', category STRING COMMENT '一級標簽', author BIGINT COMMENT '作者', click_count BIGINT COMMENT '累計點擊數', praise_count BIGINT COMMENT '累計點贊數', pub_time BIGINT COMMENT '發布時間' ) PARTITIONED BY (ds STRING) STORED AS ALIORC; INSERT OVERWRITE TABLE rec_sln_demo_item_table_v1 PARTITION(ds) SELECT * FROM pai_online_project.rec_sln_demo_item_table WHERE ds > "20221231" and ds < "20230217"; CREATE TABLE IF NOT EXISTS rec_sln_demo_behavior_table_v1( request_id STRING COMMENT '埋點ID/請求ID', user_id STRING COMMENT '用戶唯一ID', exp_id STRING COMMENT '實驗ID', page STRING COMMENT '頁面', net_type STRING COMMENT '網絡型號', event_time BIGINT COMMENT '行為時間', item_id STRING COMMENT '內容ID', event STRING COMMENT '行為類型', playtime DOUBLE COMMENT '播放時長/閱讀時長' ) PARTITIONED BY (ds STRING) STORED AS ALIORC; INSERT OVERWRITE TABLE rec_sln_demo_behavior_table_v1 PARTITION(ds) SELECT * FROM pai_online_project.rec_sln_demo_behavior_table WHERE ds > "20221231" and ds < "20230217";
通過代碼產出數據
使用固定時間窗的數據,不支持任務例行調度執行。如果有執行需求,您需要部署特定的Python代碼以生成所需數據。具體操作步驟如下:
在DataWorks控制臺創建PyODPS 3節點,詳情請參見創建并管理MaxCompute節點。
單擊并下載create_data.py,將文件內容粘貼到PyODPS 3節點中。
單擊右側的調度配置,并配置以下參數,然后單擊右上角的保存和提交。
配置調度參數:
配置調度依賴。
單擊運維中心,并選擇
。單擊目標任務操作列下的
。在補數據配置面板中,設置業務日期,并單擊提交并跳轉。
較好的補數據時間范圍為60天,建議您將業務日期設置為
任務定時調度日期-60
,以確保數據的完整性。
2.配置依賴節點
為了確保后續代碼生成與部署的順利進行,請預先在您的DataWorks項目中添加三個SQL代碼節點。請將這些節點的調度依賴配置為工作空間的根節點,完成所有設置后再發布節點。具體操作步驟如下:
鼠標懸停至新建,選擇新建節點>通用>虛擬節點,按照如下資源配置分別創建3個虛擬節點,然后單擊確認。
參數
說明
方案默認示例
節點類型
選擇節點類型。
虛擬節點
路徑
選擇當前節點所在路徑。
業務流程/Workflow/通用
名稱
分別填寫已同步的數據表名稱。
rec_sln_demo_user_table_v1
rec_sln_demo_item_table_v1
rec_sln_demo_behavior_table_v1
選中節點,分別將代碼節點內容設置為
select 1;
,然后單擊右側的調度配置,完成以下配置:在時間屬性區域,設置重跑屬性為運行成功或失敗后節課重跑。
在調度依賴>依賴的上游節點區域,輸入DataWorks工作空間名稱,選擇帶有_root后綴的節點,單擊添加。
3個虛擬節點均需配置。
單擊虛擬節點前的,提交該節點。
3.注冊數據
為了后續在推薦方案定制功能中配置特征工程、召回、排序算法,您需要先注冊同步到DataWorks項目中的三張表,具體操作步驟如下:
登錄PAI-Rec管理控制臺,在頂部菜單欄左上角處選擇地域。
在左側導航欄選擇實例列表,單擊實例名稱,進入實例詳情頁面。
在左側導航欄選擇推薦方案定制>數據注冊,在MaxCompute表頁簽單擊新增數據表,按照如下資源配置分別新增1個用戶表、1個物品表和1個行為表,然后單擊開始導入。
參數
說明
方案默認示例
MaxCompute項目
選擇已創建的MaxCompute項目。
project_mc
MaxCompute表
選擇已同步到DataWorks工作空間的數據表。
用戶表:rec_sln_demo_user_table_v1
物品表:rec_sln_demo_item_table_v1
行為表:rec_sln_demo_behavior_table_v1
數據表名稱
自定義填寫。
用戶表
物品表
行為表
4.創建推薦場景
在配置推薦任務之前需要先創建一個推薦場景。推薦場景的基本概念、流量編碼含義參考基本概念。
在左側導航欄選擇推薦場景,單擊創建場景,按照如下資源配置創建1個推薦場景,然后單擊確定。
5.創建并配置算法方案
如果您需要完整配置一個真實場景,建議配置的召回和精排如下。
全局熱門召回:日志數據中,全面熱門數據的統計排名取Top k。
全局熱門兜底召回:使用Redis作為兜底,防止推薦接口下發數據為空。
分組熱門召回:按照城市、性別區間等指標來分類召回,這對提高熱門物品的準確性有幫助。
etrec u2i召回:基于etrec協同過濾算法。
swing u2i召回:基于Swing算法。
冷啟動召回:dropoutnet算法的冷啟動召回。
精排:單目標可以選擇MultiTower排序;多目標可選擇DBMTL排序。
一般當召回比較全面之后再開啟向量召回或者PDN召回等算法。向量召回需要配合向量召回引擎,其中Hologres支持向量召回。
本文旨在體驗配置與部署流程,因此在召回配置環節只配置了全局熱門召回及RECommender(eTREC)的u2i召回策略。在排序配置上,選擇了精細化排名以優化體驗。具體操作步驟如下:
在左側導航欄選擇推薦方案定制>方案配置,選擇已創建的場景,并單擊創建推薦方案,按照如下資源配置創建1個方案,然后單擊保存并進入算法方案配置。
未說明的參數保持默認即可,詳情請參見數據表配置。
參數
說明
方案名稱
自定義填寫。
場景名稱
選擇已創建的推薦場景。
離線數據源
選擇推薦場景關聯的MaxCompute項目。
DataWorks工作空間
選擇推薦場景關聯的DataWorks工作空間。
業務流程名稱
該名稱為后續部署推薦方案腳本時,在DataWorks創建的業務流程名稱。可自定義填寫,例如Flow。
slim_mode
如果DataWorks選購版本對遷移助手中導入的代碼包有大小限制,可使用此功能,并將超出大小限制的代碼包手動上傳。本方案選擇否。
OSS Bucket
選擇推薦場景關聯的OSS Bucket。
在線數據源
選擇推薦場景關聯的Hologres實例。
項目
選擇已創建的FeatureStore項目。
用戶實體
選擇FeatureStore項目對應的user特征實體user。
物品實體
選擇FeatureStore項目對應的item特征實體item。
在數據表配置節點,單擊目標數據表右側的添加,按照如下資源配置分別設置行為日志表、用戶表和物品表,并設置相應的分區、事件、特征、時間戳等字段,然后單擊下一步。
未說明的參數保持默認即可,詳情請參見數據表配置。
在配置行為日志表時,應依據實際數據內容作出調整。以本文為例,行為日志包含諸如請求ID、用戶唯一標識符、行為發生的頁面、行為時間戳及行為類別等核心信息。若表中包含更豐富的數據維度,推薦將這些信息按用戶和物品分類,配置到用戶信息或物品信息中,以便于后續的特征工程處理。
參數
說明
方案默認示例
行為表名稱
選擇已注冊的行為表。
rec_sln_demo_behavior_table_v1
時間分區
行為表的分區字段。
ds
yyyymmdd
行為信息配置
請求ID
日志中標記每次推薦請求的ID,一般是程序生成的UUID。可不填。
request_id
行為事件
指日志中記錄行為事件的字段。
event
行為事件枚舉值
行為事件中包含的枚舉值,如曝光、點擊、加購或購買等行為。
expr,click,praise
行為的值
表示行為的深度,如成交價格、觀看時長等字段。
playtime
行為時間戳
日志發生的時間。
event_time
時間戳格式
和行為時間戳配合使用。
unixtime
行為場景
表示日志發生的場景字段,如首頁、搜索頁或商品詳情頁。
page
場景枚舉值
指使用了哪些場景的數據,在后續特征工程中可以分場景統計特征。
home,detail
用戶信息配置
用戶ID
行為表中用戶ID的標識。
user_id
用戶類別特征
行為表中存在的用戶類別特征,如網絡、操作平臺或性別等。
net_type
物品信息配置
物品ID
行為表中物品ID的標識。
item_id
參數
說明
方案默認示例
用戶表名稱
選擇已注冊的用戶表。
rec_sln_demo_user_table_v1
時間分區
用戶表的時間分區字段。
ds
yyyymmdd
用戶信息配置
用戶ID
用戶表中的用戶ID字段。
user_id
注冊時間戳
該用戶注冊的時間。
register_time
時間戳格式
和注冊時間戳配合使用。
unixtime
類別特征
用戶表的類別字段,如性別、年齡段或所屬城市等。
gender,city
數值特征
用戶表的數值字段,如作品數、積分等。
age,item_cnt,follow_cnt,follower_cnt
tag特征
tag特征字段名。
tags
參數
說明
方案默認示例
物品表名稱
選擇已注冊的物品表。
rec_sln_demo_item_table_v1
時間分區
物品表的時間分區字段。
ds
yyyymmdd
物品信息配置
物品ID
物品表中的物品ID字段。
item_id
作者ID
商品所屬的作者。
author
上架時間戳
物品上架時間戳字段名。
pub_time
時間戳格式
和上架時間戳配合使用。
unixtime
類別特征
物品表的類別字段,如類目。
category
數值特征
物品表的數值字段,如作價格、累計銷量或點贊量。
click_count,praise_count
在特征配置節點,按照如下資源配置完成相應參數配置,單擊生成特征,設置特征版本,然后單擊下一步。
單擊生成特征后,會在用戶和物品側衍生出多種統計特征,本方案不對衍生特征進行二次編輯,保持默認即可。您可以根據自身業務需求,對衍生特征進行編輯,詳情請參見特征配置。
參數
說明
方案默認示例
常用統計時間周期
該配置將用于批量生成特征。為了避免生成特征過多,本方案設置統計時間周期為3、7、15天,分別為了統計用戶和物品在最近3天、7天和15天內的統計特征。
如果用戶行為數量很少,可嘗試設置21天。
3,7,15
重點關注行為
選擇已配置的行為事件,建議添加次序為expr(曝光)、click(點擊)、praise(點贊)。
expr,click,praise
在召回配置節點,單擊目標分類右側的添加,完成相應參數配置,單擊確認,然后單擊下一步。
以下內容包含了多種召回配置方法,為了帶您快速體驗部署流程,您可以只配置全局熱門召回和etrec u2i召回。其他向量召回、協同度量召回等僅供參考。
全局熱門召回
全局熱門召回是根據點擊事件統計得到熱門的物品排行榜(top_n表示排行榜個數)。如果要修改熱門的得分公式或者訪問事件,您可在生成相關代碼后,將其部署到DataWorks平臺再進行修改。
打分公式為
click_uv*click_uv/(expr+adj_factor)*exp(-item_publish_days/fresh_decay_denom)
,其中click_uv:相同點擊率(CTR)時,點擊量越多,則越熱門。
click_uv/(expr+adj_factor):平滑后的點擊率(CTR),其中click_uv表示點擊用戶數量,expr表示曝光數量。增加調節因子adj_factor,一方面是為了防止分母為0,另一方面是當曝光數量很少的時候,CTR會接近于1,加上adj_factor之后CTR會遠離1,從而使得CTR更加趨近于真實的CTR。
exp(-item_publish_days/fresh_decay_denom):懲罰發布早的商品。其中item_publish_days表示從發布時間到當前的天數。
etrec u2i召回
etrec是基于item的協同過濾算法,詳情請參見協同過濾etrec。
參數
描述
訓練天數
表示使用多少天的行為日志來訓練。默認為30天,您可以根據日志量來增減。
召回數目
表示最終離線產出的用戶到物品的數量。
U2ITrigger
表示用戶有交互行為的物品。例如用戶點擊、收藏或購買的物品,一般不包含曝光物品。
行為時間窗口
表示收集多少天內的行為數據,默認為15,表示最近15天。
行為時間衰減系數
一般介于0-1之間,值越大表示過去的行為距離今天衰減越厲害,在構造trigger_item中其占比權重越小。
Trigger選取數目
指每個用戶取多少個物品ID去與etrec產出的i2i數據做笛卡爾積。建議取值在10到50之間。如果Trigger的數目太大會造成召回的候選物品數量太多。
u2i行為權重
其中注意曝光事件要么不設置,要么設置為權重0。建議不設置曝光事件,即跳過用戶曝光數據。
I2I模型設置
etrec的參數設置,詳情請參見協同過濾etrec。其中相關Item選取數目建議不要太多。
分組熱門召回
即可設置按照城市、性別等屬性來統計排行榜,能提供初步個性化的召回。如下示例中,使用性別和數值的分桶號組合作為分組。
swing u2i召回
Swing是一種item相關性計算方法,基于User-Item-User原理衡量Item的相似性。
向量召回
召回目標名稱:一般指是否點擊,設置為is_click。
召回目標選?。?設置為
max(if(event='click', 1, 0))
。該部分在執行的時候可以參考如下代碼:
select max(if(event='click',1,0)) is_click ,... from ${behavior_table} where between dt=${bizdate_start} and dt=${bizdate_end} group by req_id,user_id,item
其中:
${behavior_table}:表示行為表。
${bizdate_start}:是行為時間窗的開始日期。
event:是${behavior_table}表里面事件字段,需根據具體字段選擇。
is_click:即目標名稱。
其中維度計算的公式如下:
EMB_SQRT4_STEP8: (8 + Pow(count, 0.25)) / 8) * 8 EMB_SQRT4_STEP4: (4 + Pow(count, 0.25)) / 4) * 4 EMB_LN_STEP8: (8 + Log(count + 1)) / 8) * 8 EMB_LN_STEP4: (4 + Log(count + 1)) / 4) * 4
其中count表示特征枚舉值個數。當特征取值個數較多時,使用Log函數。
冷啟動召回
類似于DSSM的雙塔召回模型,分為user塔和item塔。DropoutNet是一種既適用于頭部用戶和物品,也適用于中長尾的、甚至全新的用戶和物品的召回模型。
全局熱門召回兜底
全局熱門召回兜底和全局熱門召回基本一致,主要是為了防止全局熱門召回引擎失敗情況下能夠召回足夠多的候選集,因此將其存放在Redis存儲中,該產出只有一行數據。
協同度量學習i2i召回
協同度量學習i2i召回,又稱Collaborative Metric Learning I2I召回模型,基于session點擊數據計算item與item的相似度。
在排序配置節點,單擊精排右側的添加,按照如下資源配置完成相應參數配置,單擊確認,然后單擊下一步。
本平臺提供多種排序模型,具體可參考排序模型。下面是按照多目標排序模型DBMTL來設置相關的排序參數。
單擊精排目標設置(labels)后的新增,新增如下兩個label:
目標1
目標2(注意ln中的l是L的小寫)
在生成腳本節點,單擊生成部署腳本。
重要腳本生成成功后,系統將生成一個如上圖所示的OSS地址,該OSS路徑存儲了待部署的所有文件。您可以將該地址保存到本地,方便后續使用手動方式部署腳本。
腳本生成完成后,在彈窗中單擊確定,跳轉至推薦方案定制>部署記錄頁面。
如果生成失敗,請查看運行日志,分析并解決具體報錯問題,然后重新生成腳本。
6.部署推薦方案
腳本生成完成后,您可以通過以下兩種方式,將該腳本部署至DataWorks。
方式一:通過推薦全鏈路深度定制開發平臺部署
單擊目標方案右側的前往部署。
在部署預覽頁面的文件diff區域,選擇要部署的文件。本方案為首次部署,單擊全選,然后單擊部署到DataWorks。
頁面自動返回到部署記錄頁面,顯示腳本部署運行中。
等待一段時間后,單擊刷新列表,查看部署狀態。
如果部署失敗,請單擊操作列下的查看日志,分析并解決具體報錯問題,然后重新生成腳本并部署。
當部署狀態變為成功,代表腳本已成功部署。您可以前往該方案配置的DataWorks工作空間下的數據開發頁面,查看部署好的代碼,詳情請參見數據開發:開發者。
查看任務補數據流程。
在
頁面,單擊已部署成功的推薦方案操作列下的詳情。在部署預覽頁面,單擊查看任務補數據流程,了解補數據流程和相關說明,確保數據的完整性。
方式二:通過遷移助手部署
腳本生成成功后,您也可以前往DataWorks控制臺,通過遷移助手功能手動部署腳本,其中關鍵參數說明如下,其他操作詳情,請參見創建和查看DataWorks導入任務。