工業界推薦系統整體架構瞭解

工業推薦系統一般分三部分:在線+近線+離線部分

在這裏插入圖片描述
A、在線部分,一般要經歷幾個階段:
召回環節: 將給用戶推薦的物品降到千以下規模;
粗排階段:可選階段。如果召回階段返回的物品還是太多,可以加入粗排階段,該階段通過一些簡單排序模型進一步減少往後續環節傳遞的物品;
精排階段: 這裏可以使用複雜的模型來對少量物品精準排序;
上業務策略: 對某個用戶來說,即使精排推薦結果出來了,一般並不會直接展示給用戶,可能還要上一些業務策略,比如:去已讀,推薦多樣化,加入廣告等;
展示給用戶:形成最終推薦結果,將結果展示給用戶。

B、近線部分, 主要目的是實時收集用戶行爲反饋,並選擇訓練實例,實時抽取拼接特徵,並近乎實時地更新在線推薦模型。這樣做的好處是:用戶的最新興趣能夠近乎實時地體現到推薦結果裏。

C、離線部分
歷史用戶行爲log——》離線模型訓練
通過對線上用戶點擊日誌的存儲和清理,整理離線訓練數據,並週期性地更新推薦模型。
對超大規模數據和機器學習模型來說,往往需要高效地分佈式機器學習平臺來對離線訓練進行支持。

在這裏插入圖片描述

召回的主要職責是什麼?

從千萬量級的候選物品裏,採取簡單模型將推薦物品候選集合快速篩選到千級別甚至百級別,這樣將候選集合(即給用戶推薦的物品)數量降下來,之後在排序階段就可以上一些複雜模型,細緻地對每個候選集進行個性化排序。

爲什麼要做召回?

在具備一定規模的公司裏,對每一個用戶,可供推薦的物品是百萬到千萬級別的,甚至上億。對每一個用戶,如果對千萬級別的物品都使用先進的模型進行挨個進行排序打分,明顯速度上是算不過來的,資源投入考慮這麼做也不划算。所以先做一個召回,先將可推薦的候選物品數量規模降下來。

爲什麼召回上的是簡單模型?排序階段上的是複雜模型?

召回上簡單模型是因爲:一,爲了保證速度快;二是爲了保證泛化能力
因爲召回階段需要計算的候選集合太大,百萬千萬級別的,所以要想速度快,就只能上簡單模型,使用少量特徵,保證泛化能力,儘量讓用戶感興趣的物品在這個階段能夠被篩選到,被都找回來。【全】
而排序階段核心目標是要精準,因爲它處理的物品數據量小,所以可以採用儘可能多的特徵,上比較複雜的模型,一切以精準爲目標。【準】

在搜索類問題中,是在保證召回率的情況下,提升準確率; 而比方垃圾郵件檢測之類的問題,是要保證準確率的情況下,提升召回率。
這與我們在機器學習中講到的,在分類任務中常用的性能度量指標之“查全率/召回率”“查準率/查全率”思想相似。

多路召回怎麼做?

目前工業界的推薦系統,召回階段,一般都採用多路召回策略。
下圖是一個簡化版本的例子,以weibo信息流排序爲例:
在這裏插入圖片描述
不同業務召回路數不太一樣,但是常用的召回策略,基本都會包含,比如興趣標籤,興趣topic,興趣實體,協同過濾,熱門,相同地域等,多者幾十路召回,少者7/8路召回。 對於每一路召回,會拉回k條相關物料,這個k值是個超參,需要通過線上AB測試來確定合理的取值範圍。
會發現這裏有些潛在的問題,如果召回路數太多,對應的超參就越多,這些超參組合空間很大,如何設定合理的各路召回數量是個問題。
另外,如果是多路召回,這個超參往往是不太可能用戶個性化的,而是對於所有用戶,每一路拉回的數量都是固定的,這裏明顯有優化空間。
不同用戶也許對於每一路內容感興趣程度是不一樣的,更感興趣的那一路就應該多召回一些,所以要是能把這些超參改爲個性化配置,就更好了,有什麼好辦法解決嗎?有。【待續】

概念補充:

協同過濾:

是誕生最早較爲著名的推薦算法。通過對用戶歷史行爲數據的挖掘發現用戶的偏好,基於不同的偏好對用戶進行羣組劃分並推薦品味相似的商品。
分爲兩類:基於用戶的協同過濾算法、基於物品的協同過濾算法。簡單的說就是:人以類聚,物以羣分

基於用戶的協同過濾算法 User-based
簡單說,如果a、b兩個用戶都買了x,y,z三本書,並都給出了5星好評,那麼a和b就被認爲是同一類用戶。可以將a看過的書也推薦給b。
1)尋找偏好相似的用戶(用戶間的相似度),方法有:歐幾里得距離評價(簡單評價用戶關係);皮爾遜相關度評價(另一種計算用戶關係的方法,比歐幾計算更復雜一些,但對評分數據不規範時,它能給出更好的結果);皮爾遜相關係數(用戶之間聯繫的強弱程度);2)爲相似用戶提供推薦物品。
缺陷:冷啓動問題。因爲這個算法是依靠用戶的歷史行爲數據來計算相關度的,也就是必須要有一定的數據積累(冷啓動問題)。對於新網站或者數據量較少的網站,還有一種方法是基於物品的協同過濾算法。

基於物品的協同過濾算法 Item-based
通過計算不同用戶對不同物品的評分獲得物品間的關係。基於物品建的關係對用戶進行相似物品的推薦。
1)尋找相似的物品(商品間的相似度),方法同上;2)爲用戶推薦相似物品。

A/B測試:

對產品進行測試,可以爲同一個優化目標指定兩個方案(比如兩個頁面),讓一部分用戶使用A方案,同時另一部分使用B方案,統計並對比不同方案的轉化率、點擊量、留存率等指標,來判斷不同方案的優劣並進行決策,從而提升轉化率。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章