推薦系統雜談

2021-07-24 02:31:34 字數 2645 閱讀 5461

首先需要明確的就是推薦系統的目標,一般來說不外乎以下幾個:

基於這些目標,推薦系統包括四種推薦方式:

人工推薦:人工干預的推薦內容。相比於依賴熱門和演算法來進行推薦。一些熱點時事如世界盃、nba總決賽等就需要人工加入推薦列表。另一方面,熱點新聞帶來的推薦效果也是很高的。

其中,前三者是和機器學習沒有任何關係的,但卻是推薦效果最好的三種方式。一般說來,這部分內容應該佔到總的推薦內容的80%左右,另外20%則是對長尾內容的個性化推薦。

個性化推薦是機器學習應用的乙個典型場景。在本質上和搜尋引擎是一樣的,同樣是為了解決資訊過載的問題。搜尋引擎某種意義上也是乙個個性化推薦系統,但是其輸入特徵是可以從搜尋關鍵字直接可以得到的。而一般的推薦系統,輸入特徵則是需要機器學習才能得到。

個性化推薦系統一般由日誌系統、推薦演算法、內容展示ui三部分組成。

其中,個性化推薦中最為核心的推薦演算法,目前比較流行的有以下幾種:

個性化推薦系統的典型架構如下圖所示:

基於此框架,個性化推薦系統的典型流程如下所示:

可知,乙個推薦系統主要有以下模組組成:

對原始的使用者行為等資料進行清洗、加工,如欄位、屬性、格式化等,作為下一步推薦演算法的輸入。

對於個性化推薦系統來說,推薦演算法應該是其最核心的部分。目前有很多流行的演算法,比如:

推薦演算法的輸出結果一般是乙個使用者對應乙個item列表或者是乙個item對應乙個item列表。此部分主要考慮的是演算法的時間複雜度,不管是哪一種演算法,一旦使用者或者內容資料上了百萬級別,都需要通過分布式計算如mapreduce、spark等來進行解決。

推薦演算法的基本流程如下圖所示:

對推薦演算法產生的結果進行清洗、格式化等,作為下一步儲存模組的輸入。

儲存使用者的偏好以及行為資料等資訊。對於偏好,採用標籤量化來表示,是一種隨著時間衰減的值。對於使用者畫像,是批量寫入、實時讀取,所以儲存要著重考慮讀的效能。可以選擇使用redis集群作為技術方案,能夠最大滿足讀的效能,缺點是redis的成本昂貴且不支援auto index。也可使用hbase作為儲存,使用elasricsearch構建二級索引,以應對根據多種維度聚集使用者的需求(比如過濾某乙個標籤下的所有使用者)。

對各種推薦演算法計算出的推薦結果的儲存。儲存空間要求大,格式複雜。對於儲存的容量和讀寫效能要求都比較高。可以選擇使用redis集群作為此部分的儲存方案。

整合使用者畫像和推薦結果兩部分資料,向外提供推薦呼叫的介面。主要是資料庫io呼叫開銷。

根據使用者id,獲取推薦的item列表。

根據item,獲取相關聯的item列表。

根據使用者id, 獲取使用者畫像。

該模組需要採取一定的策略聚合多種推薦演算法的推薦結果,直接面向業務。策略由於會隨著面向的業務不同而不同,需要可配置化。同時也提供對外暴露使用者畫像的介面,使得業務方可以使用使用者畫像做針對性的處理。可以採用rpc機制對外暴露服務介面。

對於乙個推薦系統,結合其實現目標,還有一些需要注重考慮的問題。

由於計算使用者、item矩陣或者進行矩陣分解是需要離線進行且比較耗時,因此協同的推薦演算法是很難達到實時性的。實時部分的推薦主要依靠基於使用者畫像的推薦來進行。最終的推薦列表是根據一定的策略對這兩部分進行聚合的結果。

時效性內容指的是那些與時間強相關的內容,比如新聞、時事等。如果一條10天前xx球員獲得冠軍的新聞現在被推薦了出來,可想使用者肯定是莫名其妙或者是很失望的。因此,對於時效性內容,需要與普通的待推薦的內容區分開,做單獨的推薦或者不走個性化推薦。

不管使用何種推薦演算法,都會面臨冷啟動問題:當使用者是新使用者,如何給使用者推薦item呢?當內容是新內容,如何推薦給使用者?

對於內容,可以將內容分為新內容池和待推薦內容池。新內容產生時,首先進入新內容池。每次推薦的時候,先從新內容池做候選推薦,並給此內容的傳播度+1,直到其傳播度大於乙個閾值的時候,將其移至待推薦內容池。這樣既可以解決新內容的冷啟動問題也在一定程度上可以保證新內容的**量。

在基於使用者畫像的推薦演算法中,取出使用者的多個標籤,然後根據相關度從不同的標籤中取不同數量的內容,這樣既兼顧了使用者的多種興趣也能夠在一定程度上解決多樣性的問題。

如:使用者具有tag:a b c d,相關度為wa wb wc wd,total推薦為總共需要推薦的條數,那麼

recommendlist(u

)=a[

total推薦*

wa]+b

[total推薦*

wb]+c

[total推薦*

wc]+d

[total推薦*

wd]

當使用者對內容的喜好不一樣,可以按照興趣度來排序;但當無法區分興趣度的時候(比如:使用者是新使用者;內容都是新內容;使用者對於某一標籤下的內容興趣度一樣),可以使用內容質量來做排序。click/pv是一種評判內容質量的方式。此外,使用卷積神經網路相關演算法也可以構建內容質量模型。

驚喜問題借用推薦系統的那點事一文的幾句話做為結語:

以上是推薦系統實踐的一些經驗

**:後端技術雜談

推薦系統雜談

驚喜度 和新穎性類似,但新穎性只是使用者沒看到過的但是確實是和他行為是相關的,而驚喜度是使用者既沒有看過和他之前的行為也不相關,但使用者看到後的確是喜歡的。實時性 推薦系統要根據使用者的上下文來實時更新推薦內容,使用者的興趣也是隨著時間而改變的,需要實時更新。人工推薦 人工干預的推薦內容。相比於依賴...

推薦系統架構 推薦系統(1) 業界推薦系統架構

1.1業界主流推薦系統架構 業界推薦系統通用架構 1.2使用者本身資料 1.3物品本身資料 1.4使用者行為資料 2.1基於離線訓練的推薦系統架構設計 常用演算法 邏輯回歸 logistics regression 梯度提公升決策樹 gbdt 和因式分解 fm 架構設計 2.2面向深度學習的推薦系統...

推薦系統(1) 推薦系統概述

推薦系統是主動從大量資訊中找到使用者可能感興趣的資訊的工具。推薦系統的核心問題是如何實現推薦個性化 如何向使用者推薦匹配度高的產品 商品 或專案,本質是通過一定的方式將使用者和專案聯絡起來。自從xerox palo alto研究中心於1992年研發出了基於協同過濾的實驗系統tapestry以來 主要...