天天看點

推薦系統的Pipeline架構總結1. 召回2. 排序3. 業務調控思考

推薦系統的Pipeline架構

  • 1. 召回
    • 非個性化範式
    • 完全個性化範式
    • 群組個性化範式
    • 标的物關聯标的物範式
    • 笛卡爾積範式
  • 2. 排序
    • logistic回歸模型
    • GBDT模型
    • Wide & deep模型
    • DeepFM模型
  • 3. 業務調控
  • 思考

推薦的流程一般分為召回、排序、業務調控3個階段,召回就是将使用者可能會感興趣的标的物通過算法從全量标的物庫中取出來,一般會采用多個算法來召回,比如熱門召回、協同過濾召回、标簽召回等,排序階段将召回階段的标的物清單根據使用者可能的點選機率大小排序(即所謂的CTR預估)。在實際業務中,在排序後還會增加一層調控邏輯,根據業務規則及營運政策對排序後的清單進一步增補微調,滿足特定的營運需求。

1. 召回

推薦召回算法又分為5種範式,下面根據每種範式來結束對應的算法政策

非個性化範式

非個性化範式就是所有使用者推薦一樣的标的物清單,一般各種榜單就是這類推薦,如微網誌上的最新榜、最熱榜等等。這類排行榜就是基于某個規則來對标的物降序排列,将排序後的标的物取topN推薦給使用者。比如最新榜可以根據标的物上線的時間順序來倒序排列,取前面的topN推薦給使用者。最熱榜可以根據使用者播放量(點選量)降序排列。這裡面可能需要考慮标的物的多品類特性,甚至還會考慮地域、時間、價格等各個次元。在具體實施時會比較複雜,需要根據具體的産品及業務場景來設計。

非個性化範式實作起來很簡單,可解釋性也很強。雖然每個使用者推薦的内容都一樣,但是(從生物進化上)人都是有從衆心理的,大家都喜歡的東西,我們也喜歡的機率還是很大的,是以這類推薦效果還是非常不錯的。

但是每個人的推薦内容一緻,也可能會降低部分使用者的體驗,另外這類算法也可以作為冷啟動者預設的推薦算法。

完全個性化範式

完全個性化範式就是為每個使用者提供個性化的推薦,每個使用者的推薦結果都不相同,這是粒度最細的一種推薦範式,精确到了每個使用者。可用的推薦方法非常多。

  • 基于内容的個性化推薦算法

    這類推薦算法隻依賴于使用者自己的曆史行為而不必知道其他使用者的行為。該算法的核心思想是:标的物是有描述屬性的,使用者對标的物的操作行為為使用者打上了相關屬性的烙印,這些屬性就是使用者的興趣标簽,那麼我們就可以基于使用者的興趣來為使用者生成推薦清單。該類推薦算法是非常自然直覺的,可解釋性強。同時可以較好地解決冷啟動,隻要使用者有一次行為,就可以基于該行為做推薦。但是,該類算法往往新穎性不足,給使用者的推薦往往局限在一個狹小的範圍中,如果使用者不主動拓展自己的興趣空間,該方法很難為使用者推薦新穎的内容。

  • 基于協同過濾的推薦算法

    基于協同過濾的推薦算法,核心思想是很樸素的“物以類聚、人以群分”的思想。所謂物以類聚,就是計算出每個标的物最相似的标的物清單,我們就可以為使用者推薦使用者喜歡的标的物相似的标的物,這就是基于物品的協同過濾。所謂人以群分,就是我們可以将與該使用者相似的使用者喜歡過的标的物(而該使用者未曾操作過)的标的物推薦給該使用者,這就是基于使用者的協同過濾。

    推薦系統的Pipeline架構總結1. 召回2. 排序3. 業務調控思考

    協同過濾的核心是怎麼計算标的物之間的相似度以及使用者之間的相似度。我們可以采用非常樸素的思想來計算相似度。我們将使用者對标的物的評分(或者隐式回報,如點選等)建構矩陣,矩陣的某個元素代表某個使用者對某個标的物的評分(如果是隐式回報,值為1),如果某個使用者對某個标的物未産生行為,值為0。其中行向量代表某個使用者對所有标的物的評分向量,列向量代表所有使用者對某個标的物的評分向量。有了行向量和列向量,我們就可以計算使用者與使用者之間、标的物與标的物之間的相似度了。具體來說,行向量之間的相似度就是使用者之間的相似度,列向量之間的相似度就是标的物之間的相似度。相似度的計算可以采用cosine餘弦相似度算法。

    在網際網路産品中一般會采用基于物品的協同過濾,因為對于網際網路産品來說,使用者相對于标的物變化更大,使用者是增長較快的,标的物增長相對較慢(這也不是絕對的,像新聞短視訊應用,标的物數量增長就比較快),利用基于物品的協同過濾算法效果更穩定。協同過濾算法思路非常直覺易懂,計算也相對簡單,易于分布式實作,也不依賴于使用者及标的物的其他資訊,效果也非常好,也能夠為使用者推薦新穎性内容,是以在工業界得到非常廣泛的應用。

  • 基于模型的推薦算法

    基于模型的推薦算法種類非常多,最常用的有矩陣分解算法、分解機算法等。目前深度學習算法、強化學習算法、遷移學習算法也在推薦系統中得到大規模采用。

    基于模型的推薦算法有三類預測方式,一類是預測标的物的評分,基于評分的大小表示對标的物的偏好程度。第二類是采用機率的思路,預測使用者對标的物的喜好機率,利用機率值的大小來預測使用者對标的物的喜好程度。另外一類是采用分類的思路,将每個标的物看成一類,通過預測使用者下一個(幾個)标的物所屬的類别來做推薦。矩陣分解算法就是預測使用者對标的物的評分,logistic回歸算法就是機率預測方法,而YouTube發表的深度學習推薦就是基于分類思路的算法。

群組個性化範式

群組個性化範式首先将使用者分組(根據使用者的興趣,進行聚類分組),每組使用者提供一個個性化的推薦清單,同一組的使用者推薦清單一樣,不同組的使用者推薦清單不一樣。

  • 基于使用者畫像圈人的推薦

    使用者畫像一般用于做精準的營運,通過顯示特征将一批人圈起來,對這批人做針對性的營運。如學生,程式員等。

  • 采用聚類算法的推薦

    聚類是非常直覺的一種思路,将行為偏好相似的使用者聚成一類,他們有相似的興趣。常用的聚類政策有如下兩類。将使用者相關特征嵌入向量空間的方式有很多,下面都是非常主流的做法。

    采用基于内容推薦的思路,可以建構使用者的特征向量(TF-IDF,LDA,标簽等,前面已經介紹過)。有了使用者的特征向量就可以聚類,該類所有使用者特征向量的權重平均就是該組使用者的特征向量,再利用群組特征向量與标的物特征向量的内積來計算群組與标的物的相似度,進而為該群組做個性化推薦。

    采用基于使用者的協同過濾的思路,可以建構使用者和标的物的行為矩陣,矩陣的元素就是使用者對标的物的評分,利用該矩陣的行向量就建構了一個衡量使用者特征的向量,基于該特征向量可以對使用者聚類。先對該組使用者所有的特征向量求均值,可以取k個最大的特征向量,其他特征向量忽略不計(設定為0),最終得到該組使用者的特征向量。最後就可以根據基于使用者協同過濾的思路來為該組使用者計算推薦清單了。

    利用矩陣分解可以得到每個使用者的特征向量,我們可以用該組使用者特征向量的均值來作為該使用者組的特征向量。再利用使用者組的特征向量與标的物特征向量的内積來計算群組對該标的物的偏好,所有偏好計算出來後,通過降序排列就可以為該組使用者推薦topN的标的物清單了。

标的物關聯标的物範式

标的物關聯标的物範式為每個标的物關聯一組相關或者相似的标的物,作為使用者在通路标的物詳情頁時的推薦,每個使用者看到該标的物關聯推薦的标的物都是一樣的。當使用者浏覽一個電影時,可以通過關聯相似的電影,為使用者提供更多的選擇空間。該推薦範式的核心是怎麼從一個标的物關聯到一組标的物。這種關聯關系可以是相似的,也可以是基于其他次元的關聯。常用的推薦政策是相似推薦。下面給出4種常用的生成關聯推薦的政策。

  • 基于内容的推薦

    這類方法一般可以利用已知的資料和資訊利用向量來描述标的物,如果每個标的物都被向量化了,那麼我們就可以利用向量之間的相似度來計算标的物之間的相似度。如果标的物是新聞等文本資訊,可以采用TF-IDF将标的物映射為詞向量,我們可以通過詞向量的相似度來計算标的物之間的相似度。

  • 基于使用者行為的推薦

    在一個成熟的推薦産品中,會包含很多使用者的行為,如使用者的收藏、點贊、購買、播放、浏覽、搜尋等,這些行為代表了使用者對标的物的某種偏好。我們可以基于該使用者行為來進行關聯推薦。比如常用的矩陣分解算法,可以将使用者的行為矩陣分解為使用者特征矩陣和物品特征矩陣,物品特征矩陣可以看成是衡量物品的一個向量,利用該向量我們就可以計算兩個标的物之間的相似度了。

  • 基于标簽推薦

    如果标的物是包含标簽的,比如視訊推薦。我們就可以利用标簽來建構向量,每個标簽代表一個次元。總标簽的個數就是向量的次元,這樣每個标的物就可以利用标簽的向量來表示了。一般标的物的标簽個數遠遠小于總标簽的個數,是以這個向量是稀疏向量。這樣我們就可以基于稀疏向量的表示來計算标的物之間的相似度了。

  • 基于标的物聚類的推薦

    我們可以将标的物按照某個次元聚類(如果标的物可以嵌入到向量空間,那麼就很容易聚類了),同一類具備某些相似性,那麼我們在推薦時,就可以将同一類的其他标的物作為關聯推薦。我們需要解決的問題是,某些類可能數量很小,不夠做推薦,這時可以采用一些政策來補充(如補充熱門推薦等)不足的數量。

笛卡爾積範式

笛卡爾積範式是每個使用者跟每個标的物的組合産生的推薦結果都不相同。笛卡爾積範式的推薦算法一般可以先采用标的物關聯标的物範式計算出待推薦的标的物清單。再根據使用者的興趣來對該推薦清單做重排(調整标的物清單的順序)、增補(增加使用者的個性化興趣)、删除(比如過濾掉使用者看過的)等。笛卡爾積範式的推薦算法在真實業務場景中使用不多。

2. 排序

推薦系統排序子產品将召回子產品産生的标的物清單(一般幾百個标的物),通過排序算法做重排,更好的反應使用者的點選偏好,通過排序優化使用者的點選行為,将使用者更可能點選的标的物(一般幾十個)取出來推薦給使用者,最終提升使用者體驗。排序子產品會用到很多特征,基于這些特征建構排序模型,排序特征在排序的效果中起到非常關鍵的作用,常用的特征可以抽象為如下5大類:

  • 使用者側的特征,如使用者的性别、年齡、地域、購買力、家庭結構等。
  • 商品側的特征,如商品描述資訊、價格、标簽等。
  • 上下文及場景特征,如位置、頁面、是否是周末節假日等。
  • 交叉特征,如使用者側特征與商品側特征的交叉等。
  • 使用者的行為特征,如使用者點選、收藏、購買、觀看等。

排序架構需要充分利用上述五大類特征,以便更好的預測使用者的點選行為。

  1. logistic回歸模型
  2. GBDT模型
  3. Wide & deep模型
  4. DeepFM模型

logistic回歸模型

logistic回歸模型

GBDT模型

Wide & deep模型

DeepFM模型

https://blog.csdn.net/weixin_41744192/article/details/119854338

3. 業務調控

思考

是否一定需要排序子產品?

工業上的推薦算法一般分為召回和排序子產品,召回的作用是從全量标的物集合(幾萬甚至上億)中将使用者可能喜歡的标的物取出來(幾百個),排序階段将召回的标的物集按照使用者點選的可能性再做一次排序。但是排序階段不是必須的,特别是對于标的物池不大的産品及團隊資源較少的情形,沒必要一開始就開發出排序架構。召回算法一般也會對标的物做排序(如果是評分預測模型,如矩陣分解,可以按照評分大小排序,如果是機率模型,可以按照對标的物的偏好機率大小排序)。缺失了排序子產品的推薦系統可能精準度沒有那麼高,但是工程實作上相對更加簡單,可以快速落地上線。

兩種推薦算法的服務形式

推薦算法計算出的推薦結果可以直接插入資料庫(如Redis等),直接為使用者提供服務,另外一種方式是将核心特征計算好存儲下來,當使用者請求推薦業務時,推薦web服務通過簡單計算将特征轉化為最終給使用者的推薦結果傳回給使用者。這兩種方式一個是事先計算好,拿來就用,另外一種是準備好核心資料,在請求時實時計算最終結果。

推薦系統的評估

推薦系統是服務于公司商業目标的(盈利目标,提升使用者體驗、使用時長、DAU等,最終也是為了盈利),是以推薦系統落地到真實業務場景中一定要定義推薦系統的優化目标,隻有目标具體而清晰,并可量化,才能更好的通過不斷疊代優化推薦效果。