天天看點

告别1人年,教你21天搭建推薦系統!

本文作者為阿裡雲技術專家鄭重(盧梭),主要分享内容是如何在21天内快速搭建推薦系統。推薦系統的搭建是個複雜工程,涉及到實時計算、離線計算,以及各種資料采集、流轉等,對自建推薦系統來說,1人年是跑不掉的。

本文介紹的内容還包括如何搭建一個個性化推薦系統所需的環境準備、基本配置和離線技術等基本功能的搭建,也有效果報表、算法優化和實時修正等進階功能的剖析。

推薦系統一般包括展現子系統、日志子系統和算法子系統三個部分,三者互為一體。

告别1人年,教你21天搭建推薦系統!

“展現”部分不僅要負擔展現,還是資料采集的視窗,使用者在展現系統的所有行為通過日志錄入,采集到的資料經過算法子系統的計算,可以得到使用者的偏好或者個性化興趣,然後回過頭來指導“展現”部分怎樣做的更聚焦。

阿裡雲推薦引擎(receng)是推薦系統的一部分,主要實作的是算法子系統,需要和其他子系統配合工作。使用阿裡雲推薦引擎分為兩大階段

day1. 環境準備

告别1人年,教你21天搭建推薦系統!

環境準備分為兩部分。圖中左側為雲上資源的準備,我們需要擁有阿裡公有雲賬号,然後開通雲監控服務(可選)和阿裡雲數加服務(必選);開通數加賬号後,大資料計算服務(maxcompute,原名odps)和大資料開發data ide就預設開通了(data ide相當于maxcompute的可視化包裝),最後開通推薦引擎。未來客戶在推薦引擎中用到的資料,以及相關離線計算,都在客戶自己的maxcompute項目中完成。右側為客戶側的準備,前端的展現,以及日志的采集和管理都需要客戶自己完成,通過推薦引擎提供的api與推薦引擎進行互動。通常情況下,客戶側的背景相關功能會集中在推薦伺服器中實作,這也是阿裡雲推薦引擎牆裂建議的方案。推薦伺服器可以是客戶自己的實體機,也可以是阿裡雲的虛拟機ecs,都是可以的。

day2-3. 資料準備

day4-5. 基本配置和離線計算

告别1人年,教你21天搭建推薦系統!

環境和資料都準備好了之後,接下來需要進入阿裡雲推薦引擎産品,真正開始使用推薦引擎了。不過在此之前,還需要對産品中的一些關鍵概念進行必要的說明。

第一個概念是業務。在阿裡雲推薦引擎中,業務指的是一組可被用來進行推薦算法計算的完備資料集,包括物品表、行為表、使用者表這三張表。也可以簡單的認為這三張表就構成了一個業務。

第二個概念是場景,所謂場景就是推薦的上下文。換句話說,就是在進行推薦時有哪些可用的參數。比如在進行首頁推薦的時候,可用的參數隻有使用者的id;在進行詳情頁推薦的時候,可用的參數除了使用者id,還可以由詳情頁上展示的物品id,這樣首頁推薦和詳情頁推薦就是兩個推薦的場景。一個業務可以包括多個場景。

第三個概念是算法流程,算法流程指的是資料端到端的處理流程,從客戶的輸入資料開始,到産出最終結果為止。推薦算法流程從屬于場景,一個場景可以包含多個算法流程。每個推薦算法流程都包括兩部分,離線計算流程和線上計算流程。離線計算流程負責從原始的業務資料(使用者、物品、行為)開始,計算使用者對物品的興趣,輸出本場景下使用者可能會感興趣的物品集合;線上計算流程實時接受推薦請求,從離線計算流程得到的物品集合中根據業務規則挑選出最合适的若幹個物品傳回給請求方。一個場景包含多個推薦算法流程這種設定使得我們在做效果對比變的比較容易,後面會介紹a/b testing,在a/b testing中,每個推薦算法流程都是一個可被效果名額度量的最小單元。在做完a/b testing之後,通常隻會在一個場景下保留一個效果最好的推薦算法流程。

告别1人年,教你21天搭建推薦系統!

産品裡的配置都比較簡單,配置業務基本資訊、配置業務依賴的雲資源、配置業務資料表,接着配置場景、配置api參數,最後配置算法流程,阿裡雲推薦引擎提供了兩個預設的推薦算法流程模闆,分别針對首頁場景和詳細頁場景,圖為首頁場景的離線計算流程模闆,圖中每一個節點就是一個算法,最終産出離線計算結果。

day6-8. 推薦api內建

告别1人年,教你21天搭建推薦系統!

到了這一步,雲端推薦引擎裡的推薦算法邏輯已經配置完成,剩下的事情就是把系統串起來,讓推薦引擎和日志、展示兩個子系統結合起來,成為推薦系統。阿裡雲推薦引擎提供了一組api,這裡要做的就是把這些api內建到推薦伺服器中。

首先需要把離線資料傳上來,可以用前面提到的方法,tunnel啊,datax啊,都可以,但是一定要是定時任務,我們總不能每天都去手工執行資料上傳。上傳完成之後首先調用資料預處理api,對資料做一些預處理;然後調用離線計算api,啟動離線計算。待離線計算完成後,通過推薦api就可以實時擷取使用者的推薦結果了。在離線計算的過程中,還可以通過檢視計算任務狀态api實時擷取計算任務的狀态,便于及時發現異常。

上圖也展示了我們對推薦伺服器的一些基本建議。諸如資料上傳、啟動離線計算這些功能建議由一個相對獨立的資料管理元件來負責;而實時性要求比較高的推薦結果擷取建議由專門的推薦管理元件來負責。推薦管理元件和資料管理元件為什麼要有一個互動呢?這是因為從推薦引擎傳回的結果中可能隻包括了物品的id,展示時不能隻展示一個id,還有很多材料,這些東西可以放在推薦伺服器中,由資料管理子產品負責管理。ui可以提供人工管理資料的界面,比如新錄入了一個物品,或者某個物品賣完了要下線,需要做實時修正時就可以用到了。

這些工作都完成之後,一個具備最基本功能的推薦系統就可以運作起來了。

繼續閱讀