一文搞定推薦系統及算法

我是智能取經人 2024-02-11 13:55:27
引言

近年來,深度學習技術的快速發展,大大加速了人工智能在傳統和互聯網領域的商業化落地。現如今,人工智能的應用已如雨後春筍般滲透到我們衣食住行的方方面面。比如無人超市的面世、無人駕駛汽車的正式上路、智能手機刷臉識別模式、醫療圖像技術等。

與此同時,面對時間的碎片化、信息的同質化/海量化、用戶選擇項的增多和用戶耐心的減退,如何滿足用戶需求、拓展用戶需求、驅動業務增長、優化行業生態等,成了各個行業亟待解決的問題。因此,個性化推薦系統便應運而生了。

推薦系統數據架構

在推薦系統搭建過程中,數據是非常重要的資産,也是驅動決策的燃料。這裏提及的數據,主要指的是基本信息、顯式反饋、隱式反饋這三種。

基本信息:主要指用戶的性別/年齡/地區、物品的分類/款式/重量等。

顯式反饋:一般指用戶對物品的真實評分,這類數據的特點是用戶操作成本高,數據量小,更真實。

隱式反饋:一般指除直接評分以外的若幹用戶行爲數據,包括點擊、加購、收藏、購買、浏覽時長等,這類數據特點是用戶操作成本低、數據量大、具有一定的不真實性。用戶行爲數據還可以進一步通過聚合、梳理形成用戶的行爲表現數據(如活躍度、回訪、複購情況等)。

而個性化推薦的過程,其實就是先對基本數據和反饋數據進行加工,再利用加工結果進行決策的過程。在數據流轉的過程中,個性化推薦體系被劃分爲數據采集層、數據加工層、數據決策層、效用評價層這 4 層。

從上圖可知,在數據采集階段,主要工作是全面了解産品和用戶。在數據加工階段,主要工作是對用戶和物品分門別類。在數據決策階段,主要工作是驅動分發方案和産品優化,這也是搜索和推薦等産品的工程和算法能力輸出階段。在效用評價階段,主要工作是評估流量分發的效果並形成數據反饋。

推薦系統算法架構

推薦系統的算法架構,通常分爲離線架構和在線架構這兩種

1.離線架構離線架構主要用來構建物品畫像和用戶畫像,因爲數據是算法的基礎,底層數據的豐富程度決定了推薦能力的天花板。

比如系統通常不了解未登錄用戶的行蹤,通過合適的引導,可以讓訪問推薦系統的用戶未登錄占比更低,從而大幅提升推薦系統的掌控力。再比如參考更豐富的用戶行爲(曝光、點擊、點贊、停留時長、下載時長等等)和更多的用戶特征(用戶年齡、性別、地域、商品店鋪、價格、類目等),也能大幅增強推薦系統的掌控力,而且這些參考因素越多越好。

從本質上來講,算法系統是用來預測未來,但是如果過去什麽都沒有發生,預測出來的結果也就可想而知了。

2.在線架構在線架構主要用來從海量物品池中選擇合適的推薦的對象匹配給對應用戶。在這個架構中,我們主要依靠檢索技術(如協同過濾、內容過濾、用戶偏好等)建立索引,然後根據索引生成第一步的結果。其中涉及的工程技術主要是用來提升系統整體的響應速度、吞吐效率等,使得整個推薦系統能一次性查得更多、更快。

下面我們以 58 同城本地服務推薦流程和算法架構爲例,如下圖所示。

從圖中可知,在線架構主要分爲召回層、粗排層、精排層、融合和重排層這四大部分。

召回層:從物品庫中根據多個維度篩選出潛在物品候選集,並將候選集傳遞給排序環節。在召回供給池中,我們可以看到多個召回集,整個召回環節的輸出量往往以萬爲單位。

粗排層:利用規則或者簡單模型對召回的物品進行排序,並根據配額進行截斷,截取出 Top N 條數據輸出給精排層,配額一般分業務場景,例如對 58 同城本地服務推薦分品類進行配額,整個粗排環節的輸出量往往以千爲單位。

精排層:利用大量特征的複雜模型,對物品進行更精准的排序,然後輸出給重排層(融合層),整個精排環節的輸出量往往以百爲單位。

融合和重排層:以産品策略爲導向進行融合和重排,例如 將商品、SKU、帖子、標簽等不同展示元素融合在一個列表中,並且經過去除已曝光、去重、打散等策略,並根據點擊回退在列表中插入新的信息來提升體驗,最後生成用戶可見的推薦列表,整個融合和重排環節的輸出量往往以幾十爲單位。

標簽與畫像

用戶標簽是用戶的結構化基礎,物品標簽是物品的結構化基礎,爲後續用戶畫像和物品畫像的産出提供必要的材料和關聯基礎。推薦算法依據結構化數據對用戶和物品進行理解,從而提高流量分發的精度。

用戶結構化基礎:用戶標簽

因爲用戶標簽面向各個業務,所以用戶標簽被應用到實際業務之前,我們需要先深刻理解各個業務,再通過標簽加工的方式找到該業務體系下有區分度的標簽,這裏所說的有區分度的標簽指的就是用戶標簽。

一般來說,用戶標簽分爲基本信息、統計標簽、偏好標簽、分類標簽這四類。

基本信息:比如用戶 ID、注冊時間、設備類型等標簽,這些標簽都是通過線上系統或其他方式直接獲取的,不需要任何加工。

統計標簽:指的是基于事實數據的直接統計結果,比如超市最近三個月日均支付金額、最近三個月登錄次數、曆史累計好評數等標簽通過彙總曆史數據即可生成。

偏好標簽:指通過彙總用戶一段時間內的相關行爲,並按行爲加權生成的標簽。這類標簽主要根據用戶行爲計算而得,反應了用戶一段時間內的興趣點,比如用戶的品牌偏好、各級類目偏好等。這些標簽並不涉及複雜的機器學習算法,但是不同標簽的加工過程存在差異化和個性化。

分類標簽:比如預測性別、預測是否有車有房、預測是否已婚已育等標簽,它們的每個類別都有明確的定義。因爲這類標簽的生成一般涉及複雜的算法邏輯,所以常常需要借助機器學習算法。

物品結構化基礎:物品標簽

在浏覽信息時,用戶往往希望看到自己鍾愛的標簽,然後挑選鍾愛標簽對應的商品,再進入烙印了自己鍾愛標簽的店鋪。在這個過程中,用戶不斷沉澱了個人的行爲標簽。

而物品標簽就是通過標簽這個維度將商品清單等泛內容、 C 端/B 端等泛用戶及前台導購投放等運營手段串聯起來,再利用標簽能力實現對不同商品圈集、不同 B 端圈集、不同 C 端圈集。

物品標簽結構

物品標簽的標簽結構按照標簽的組合粒度可以分成基礎標簽、合成標簽、概念標簽。

(1)基礎標簽

基礎標簽分成內容標簽、用戶標簽、賣家標簽、商品標簽、業務標簽等。

以商品標簽爲例,商品標簽的基礎標簽指的是文本類標簽,主要取自商品的標題、屬性等各種用于描述商品的文本信息,類似于屬性-屬性值。爲了方便管理和應用,我們需要對屬性進行優化,最終沉澱出一套在整個標簽體系中不可再分、最基礎的標簽。

因此,基礎標簽是平台最重要、最核心的資産,我們通過基礎標簽實現了商品——>B 端——>C 端——>內容的串聯。

(2)合成標簽

合成標簽是對基礎標簽進一步加工的産物。以商品爲例,合成標簽定義爲相似商品的集合,比如歐美高領毛衣、高腰碎花連衣裙等,它們各自由三個基礎標簽構成(注意:它們是相似商品集,並不僅僅是一條短文本)。

對于商品而言,使用多個標簽描述這批商品時,其優點在于可理解、可編輯,因爲它是一個中間産物。就像一個積木,我們基于它搭出更多好玩的應用。

雖然合成標簽是相似商品的集合,不過也同樣適用于用戶身上,因此我們也可以使用合成標簽對用戶進行更細粒度的切分。

(3)概念標簽

概念標簽的定義範圍比較寬,指的是跨品類、跨類目商品的合理組合。

目前,概念標簽主要應用在商品上,用來強調商品的合理性。概念標簽可以通過基礎標簽的交並集關系聚合而成,也可以由多個合成標簽聚合而成。比如“青春學院風”這個概念標簽包含了破洞牛仔褲、韓版T恤、帆布鞋以及斜挎帆布包等商品。

在實際業務中,概念標簽的最大價值在于將行業的經驗、用戶群體的購物偏好等統統沉澱下來,從而爲更多用戶服務,真正做到了知識的沉澱和複用。

構建用戶畫像

用戶畫像說白了就是一個人的標簽集合

構建用戶畫像需要從用戶基礎信息和動機信息出發,再從不同類型用戶中抽取出一個典型特征來還原一個用戶的特征,而這個特征抽取的過程就是用戶畫像構建的過程。

1)用戶動機

在選擇和使用媒體時,用戶往往具備很強的主動權和目的性,因此用戶動機其實指的就是用戶使用互聯網的目的,它通常分爲社交、消磨時間、查找信息、分享、表達、娛樂……這幾種。

2)特征

用戶畫像由大量的特征組成,比如基本特征、統計特征、偏好特征等,而特征的特點分爲以下三點,也可參考下圖進行理解。

特征最直觀的一個屬性是有特征值,而這個特征值可以是單值,也可以是多值,它具有具體數據類型、數據分布,比如枚舉範圍、日期類、真實值等。

同時,特征還有生成邏輯,它主要通過規則或者算法模型産生,且在不同條件下它還會産生新的特征。

除此之外,特征還能區分類目城市。

構建物品畫像

物品畫像同用戶畫像一樣,我們可以把物品畫像構建簡單地理解爲物品信息標簽化的過程。

在這個過程中,我們首先需要挖掘物品結構化標簽,再通過各個維度把結構化標簽進行有序組織,最終形成物品畫像。

物品畫像主要分爲基本信息、供給側信息、存儲側信息、消費側信息這 4 個層面,下面我們以 58 同城到家精選服務畫像爲例,

基本信息包括類目屬性、價格信息、店鋪信息、商家信息等;

供給側信息包括商家供給數、商家服務能力分等;

存儲側信息包括庫存數、庫存金額等;

消費側信息包括訂單數、下單用戶數、銷量信息、優惠券金額、實付金額等,這些信息經過不同維度提取後,最終構成了完整的物品畫像。

簡單推薦算法

在個性化推薦系統中,簡單推薦策略主要分爲:基于熱門推薦推薦、基于基本信息推薦、基于內容推薦、基于關聯規則推薦這幾種。

1.基于熱門推薦

熱門推薦,顧名思義就是使用統計的方法將最熱門的物品進行推薦,越熱門的物品被點擊的可能性越大。這個比較容易理解,因此我們就不過多贅述了。

2.基于基本信息推薦

基于基本信息推薦是根據用戶的基本信息如:領域、職位、工作年齡、性別和所在地等給用戶推薦感興趣或者相關的內容,比如年齡-關聯電影表、收入-關聯商品類型表,性別-文章關聯表等等。

因爲基于熱門推薦與基于基本信息推薦使用比較簡單,所以這兩個推薦策略應用比較廣泛。

3.基于內容推薦

基于內容推薦是指(Content Based Recommandation)利用用戶和物品的相關信息,例如前述用戶和物品畫像信息及用戶對物品的行爲構建的模型,例如浏覽、點擊、打電話、收藏、評論、下單等。內容推薦算法根據用戶行爲推斷用戶偏好,並爲用戶推薦相同偏好的物品。

基于內容推薦的計算過程一般分爲四個步驟:

找到用戶曆史感興趣的物品集合;

找到物品集合的具化屬性;

抽象具化屬性的共性屬性;

由這些共性屬性查找其他物品,並實施推薦。

4.基于關聯規則推薦

基于關聯規則推薦(Association Rules)是通過數據挖掘的方法找到物品之間的相關關系,再進行標簽推薦,比如大家所熟知的“啤酒”和“尿布”,就是某超市工作人員通過對顧客的購物清單進行分析後,才發現了啤酒和尿布之間的共現關系。

而衡量物品之間的關聯性時,主要看支持度、置信度和提升度這三大指標

傳統機器學習推薦算法

推薦算法本質上是一一種信息處理方法,它將用戶信息和物品信息處理後,最終輸出了推薦結果。基于熱門推薦、基于內容推薦、基于關聯規則推薦等方法比較粗放,所以推薦結果往往不夠精准。如果我們想打造一個千人千面、真正符合用戶個性化推薦需求的推薦系統,就需要使用到更爲複雜的運算邏輯——推薦算法

推薦算法又分爲傳統機器學習算法和深度學習算法,本章節主要介紹傳統機器學習算法

傳統機器學習算法分爲了基于鄰域的方法和基于特征的方法這兩類

基于鄰域的推薦算法——協同過濾算法

把用戶編號作爲縱坐標,帖子編號作爲橫坐標,並通過將用戶與帖子是否存在交互過程進行標記,然後填寫到如下所示表格中。這時,一個用戶與物品的行爲矩陣就這樣搭建成功了。

針對上表中的內容,如果我們對行爲分類進行打分(比如點擊浏覽 1 分、打電話 3 分、 微聊 3 分、收藏 5分等),再把對應分數填充到矩陣中,就可以得到一個評分矩陣,具體細節這裏不作描述。

如果我們需要對用戶 A 進行推薦,根據如下所示表格,我們發現用戶 A、用戶 B 與用戶 C 都對帖子 1、帖子 2、帖子 3 感興趣,因此我們認爲用戶 A、用戶 B、用戶 C 比較相似。

同時,我們還發現用戶 B 還看過帖子 4,用戶 C 還看過帖子 5,而這 2 個帖子用戶 A 都沒看過。基于相似性原則,我們認爲用戶 A 很大概率上會對帖子 4 和帖子 5 感興趣。因此,生成推薦時,我們也會向用戶 A 推薦帖子 4 和帖子 5。

以上就是協同過濾算法的基本思想

協同過濾算法分類

在互聯網應用場景中,存在大量用戶看了又看、買了又買、買過還買等情況,因此,我們需要利用集體智慧將用戶和物品的所有交互行爲實現個性化推薦,此時就可以考慮使用協同過濾算法。

協同過濾算法(Collaborative Filtering,簡稱 CF)是推薦算法中最成熟、應用最廣的一種算法。根據模型相似度計算的對象,我們把協同過濾算法(CF)分爲了 UserCF、ItemCF 、ModelCF 這 3 種,下面我們逐一展開說明。

1. 基于用戶的協同過濾算法(UserCF)

通過分析用戶喜歡的物品,我們發現如果兩個用戶(用戶A 和用戶 B)喜歡過的物品差不多,則這兩個用戶相似。此時,我們可以將用戶 A 喜歡過但是用戶 B 沒有看過的物品推薦給用戶 B。

基于用戶的協同過濾算法(UserCF)的具體實現思路如下:

(1)計算用戶之間的相似度;

(2)根據用戶的相似度,找到這個集合中用戶未見過但是喜歡的物品(即目標用戶興趣相似的用戶有過的行爲)進行推薦。

2. 基于物品的協同過濾算法(ItemCF)

通過分析用戶喜歡的物品,我們發現如果兩個物品被一撥人喜歡,則這兩個物品相似。此時,我們就會將用戶喜歡相似物品中某個大概率物品推薦給這群用戶。

基于物品的協同過濾算法的具體實現思路如下:

(1)計算物品之間的相似度;

(2)根據物品的相似度和用戶的曆史行爲進行推薦。

3. 基于模型的協同過濾算法(ModelCF)

基于模型的協同過濾算法也叫基于學習的方法,通過定義一個參數模型,我們可以描述用戶和物品、用戶和用戶、物品和物品之間的關系,然後將已有的用戶與物品評分矩陣(例如矩陣分解、隱語義模型 LFM 等)作爲樣本優化求解,最終得到模型參數。

基于特征的機器學習算法

協同過濾(CF)算法通過用戶行爲構建用戶物品共現矩陣,然後通過 CF 算法預測結果實現個性化推薦。其實,除了利用用戶行爲特征之外,我們還可以利用用戶、物品自身特征等輔助信息進行結果預測。

基于物品特征的推薦問題,我們一般通過回歸模型進行實現。首先,回歸模型會通過算法預測出一個介于 0~1 之間的連續值,這個值代表一種可能性,然後推薦系統將得到的可能性通過排序的方式推薦給用戶,最終實現個性化推薦。基于特征的機器學習模型相比協同過濾模型而言,它不單單考慮了用戶的行爲特征,還加入了年齡、性別等用戶特征和時間、地點等物品特征,從而大大提升了模型表達能力。

此類模型比如:LR,SVM,隨機森林,GDBT,Random forest,Xgboost,Catboost等算法模型都可用于推薦算法,此外還可以利用複雜模型如GDBT,Xgboost等模型 自動進行特征篩選和組合,進而生成新的離散特征向量,然後我們將該特征向量當作邏輯回歸(LR)模型的輸入,最終産出預測結果。

此時,我們看到了端到端訓練及隱向量技術等深度學習模型的影子,也就是說 GBDT+LR 開啓了特征工程模型化的趨勢。

深度學習推薦算法

深度學習在推薦算法中的應用與深度學習在圖像處理、NLP中的應用是類似,主要是應用深度學習算法特征提取功能。具體應用形式有以下兩種:

1、利用深度網絡範式進行用戶和物品的表征或者高階交互特征提取(雙塔模型),再將隱向量表征集成到推薦系統模型當中,這裏集成方式又分爲以下兩種。

松耦合:信息呈單向流動,將隱向量表征作爲推薦模型的輸入。

緊耦合:將深度學習部分作爲單獨的組件接入模型,再加上其他傳統或者深度模型組件,同時進行學習和預測。這種情況下,隱向量表征是跟隨模型學習而變化的。

2、利用深度網絡範式直接擬合效用函數,這種方式直接利用一個或多個深度網絡範式,産出預測結果。

具體的應用框架簡單介紹如下幾個:

深度矩陣分解(DMF)模型

該模型的輸入層爲交互矩陣 Y,其行、列分別對應爲對用戶和對物品的打分,並采用 multi-hot 形式分別表征用戶和物品

Yi* 指的是交互矩陣 Y 中的第 i 行,表示用戶 i 對所有物品的評分,即用戶 i 的表征;

Y*j指的是交互矩陣 Y 中的第 j 列,表示所有用戶對物品 j 的評分,即物品 j 的表征。

然後,我們將用戶表征 Yi* 和物品表征 Y*j 分別送入 MLP 雙塔結構,生成用戶隱向量表征 Pi 和物品隱向量表征 qj;

最後,對二者使用余弦點積匹配分數。

Tips:實際上,DMF 模型是由 MF+MLP 雙塔串聯而成的一種模型,其中 MF 主要負責線性部分,MLP 主要負責非線性部分。它主要以學習用戶和物品的高階表征向量爲目標。

神經網絡協同過濾(NFC)模型

傳統 MF 模型相當于把稀疏的用戶和物品 ID 向量轉化爲了稠密的隱向量表征,模擬了淺層神經網絡的作用。其中,p 代表用戶的隱因子矩陣,q 代表物品的隱因子矩陣。通過這兩個矩陣,我們就可以預測用戶對物品的評分。

了解了傳統的 MF 模型後,下面我們再來看看 NCF 模型,框架如下圖所示:

廣深(Wide&Deep)模型

廣深(Wide&Deep)模型最早由 Google 提出,自工業界誕生後,便爲在範式組合方式基礎上産生模型打開了一扇大門。因此,我們與其說廣深(Wide&Deep)模型是一種模型,倒不如說是一套通用的範式框架。

通過名字我們就知道,Wide&Deep 模型是由 Wide 和 Deep 兩大部分組成,它的框架圖如下所示:

Wide

屬于廣義線性部分,它對用戶或者物品 ID 這類高頻低階特征使用少量參數即可學習,故記憶能力好;但是對沒有見過的 ID 學習能力較差,故泛化能力差。這是因爲特征從輸入到輸出比較通透,保留了大量的原始信息,因此模型捕捉的特征更加具體。

Deep

屬于神經網絡 MLP 部分,它主要用于學習樣本中的長尾部分,因爲它對出現較少或者沒有出現過的特征組合都能夠做出預測,所以需要的人工參與較少,且泛化能力強。

總結:Wide&Deep 模型由 LR+MLP 兩部分並聯組成,綜合了傳統機器學習和深度學習的長處。

Wide 部分根據曆史行爲數據推薦與用戶已有行爲直接相關的物品;

Deep 部分負責捕捉新的特征組合,從而提高推薦的多樣性。

深度因子分解機(DeepFM)模型

深度因子分解機(Deep Factorization Machine,DeepFM)模型是從廣深(Wide&Deep)框架中演化出來的一種模型。

因爲 Wide&Deep 模型的廣義線性部分,挖掘到的用戶興趣對交叉信息仍然需要人工特征工程來人爲構建特征和特征間的組合,所以過程相當繁瑣且需要依賴人工經驗。使用 FM 模型替換掉了 LR 部分,從而形成了 FM&Deep 結構。

與 Wide&Deep 模型異曲同工,DeepFM 模型分爲 FM 部分和 Deep 部分。

FM 部分:它可以自動提取特征交叉信息,其中包含了加權求和的一階信息和向量內積的二階信息。相比 Wide&Deep 模型而言,它在低層特征的使用上更合理。

Deep 部分:DeepFM 模型與 Wide&Deep 模型的 Deep 部分本質上並無區別,然而,Wide&Deep 模型中的 Embedding 層是爲 Deep 部分專門設計的,而 DeepFM 模型中的Embedding 層由 Deep 部分與 FM 部分共享輸出。

算法演化趨勢

同深度學習在計算機視覺以及NLP領域的算法演化方向一樣,更深,更專注,同深度學習在計算機視覺方面的應用一樣,基于現有的Embedding + MLP範式,進行一些網絡結構的變化就得到了一些新的算法和模型框架,具體如下:

僅對 Embedding 部分改造:FNN 模型

借用 ResNet:Deep Crossing 模型

結合注意力機制:注意力因子分解機(AFM)模型

使用注意力機制:深度興趣網絡(DIN)模型

添加興趣提取層與興趣進化層:深度興趣進化網絡(DIEN)模型

引入會話概念:深度會話興趣網絡(DSIN)模型

0 阅读:0

我是智能取經人

簡介:感謝大家的關注