AI產品經理必修課:如何構建推薦系統

3 評論 9838 瀏覽 106 收藏 22 分鐘

本文簡單介紹了什么是推薦系統、如何構建推薦系統,適合希望成為人工智能產品經理的產品新人閱讀。

內容框架

一、什么是推薦系統

推薦系統在我們的生活中無處不在:淘寶shopping時的相關物品、一刷就讓人停不下來的抖音短視頻、百度地圖的導航路線……

既然推薦系統與我們的生活密不可分,那么什么是推薦系統呢?

1.1 推薦系統的定義

根據維基百科的定義,推薦系統是一種信息過濾系統,用于預測用戶對物品的“評分”或“偏好”,廣泛應用于電影、音樂、新聞、書籍、學術論文、搜索查詢等行業。

從本質上來說,推薦是特定場景下人與信息更有效率的連接。

1.2 為什么要有推薦系統

據IDC《數字宇宙》的研究報告表明,2020?年全球新建和復制的信息量將超過40ZB,是2012年的12倍;中國的數據量在2020年超過8ZB,比2012年增長22倍。

單位換算是這樣的:

  • 1ZB = 1024 EB;
  • 1EB = 1024 PB;
  • 1PB = 1024 TB;
  • 1TB = 1024 GB;
  • 1GB = 1024 MB;

信息量的指數化增長反映了用戶需求的變化,為了更好地滿足用戶的需求,互聯網從門戶網站時代發展到了搜索引擎時代。

作為門戶網站的代表,雅虎以分類目錄滿足了早期互聯網用戶的需求。

作為搜索引擎的代表,谷歌以智能化的搜索解決了信息不斷增長與門戶網站內容有限之間的矛盾。

1.3 推薦與搜索的異同

1.3.1 相同點

  1. 和搜索引擎一樣,推薦系統是一種幫助用戶快速發展有用信息的工具;
  2. 二者目的都是實現信息與用戶意圖之間的匹配;
  3. 推薦系統的架構與搜索系統的架構具有一定的相似度。

1.3.2 不同點

二、如何構建推薦系統

2.1 基礎:物品標簽與用戶畫像

只有更好地了解待推薦的內容和要推薦的人,推薦系統才能更加高效地完成內容與人之間的對接。

2.1.1 物品標簽

(1)定義

標簽是我們對多維事物的降維理解,以抽象出事物更具有表意性、更為顯著的特點。

(2)標簽與分類

通常來說,分類是樹狀的,是自上而下依次劃分的。在分類體系中,每個節點都有嚴格的父子繼承關系,在兄弟節點層都具有可以被完全枚舉的屬性值。

考慮到分類權威性和信息完備性問題,建議由專家系統進行編輯分類。

標簽是網狀的,更強調表達屬性關系而非繼承關系,只有權重大小之分,不強調包含和被包含的關系。這就使得相對于分類而言,標簽的靈活性更強,權威性更弱,每個用戶都可以參與。

(3)標簽與聚類

標簽適用文字表意歧義較小、可以枚舉的類型。其它很難準確地表意或概括地不適用。這時候就需要有聚類的協助。

聚類是指基于某一維度地特征將相關物品組成一個集合,并告訴你這個新的物品同哪個集合相似。

(4)標簽生產方式

常見的標簽生產方式有兩種:PGC(專家系統產出),例如潘多拉音樂基因工程;UGC(普通用戶產出),例如豆瓣音樂標簽系統。

2.1.2 用戶畫像

用戶畫像數據,也稱為KYC(Know Your Customer),主要分為靜態數據和動態數據。

  1. 靜態數據指用戶基本信息,例如性別、學歷、年齡、婚育情況、常住位置、教育程度。
  2. 動態數據指用戶顯性或隱性行為,包括用戶物品偏好、行為路徑、點贊、評論、分享、關注等。

2.2 推薦系統架構

作為參照,我們先了解一下搜索引擎的架構。

2.2.1 搜索引擎架構

搜索系統架構,圖片來源:《內容算法》

我們通常將搜索系統劃分為離線和在線兩部分。

(1)離線部分專注于內容的搜集和處理。

  • 搜索引擎的爬蟲系統會從海量網站上抓取原始內容,并針對搜索系統的不同要求建立不同的索引體系。

(2)在線部分負責響應用戶的搜索請求,完成內容的篩選和排序,并最終把結果返回給用戶。

  • 當用戶輸入搜索詞后,系統會首先對搜索詞進行分詞、變換、擴充、糾錯等處理過程,以便更好地理解用戶地搜索意圖。
  • 經歷完搜索詞處理后,將進入召回環節。系統通過多種方式從不同地索引數據里獲得候選集合。
  • 召回得到地候選集合會繼續進入排序環節,通過更精細地計算模型對每一篇候選內容進行分值計算,從而獲得最終結果。
  • 在展示給用戶之前,搜索結果還需要經過規則干預這一環節。規則通常服務于特定地產品目的,對計算產出地內容進行最終地調整。
  • 在結果展示給用戶之后,用戶的點擊反饋會影響到排序環節地模型。

2.2.2 推薦系統架構

(1)推薦系統和其他系統之間的關系

推薦系統和其他系統之間的關系,圖片來源:《推薦系統實踐》

推薦服務通常由三部分組成:前臺展示子系統、日志子系統和算法子系統。

  • 推薦服務首先需要采集產品中記錄的用戶行為日志到離線存儲;
  • 然后在離線環境下利用推薦算法進行用戶和物品的匹配計算,找出每個用戶可能感興趣的物品集合后,將這些預先計算好的結果推送到在線存儲上;
  • 最終產品在有用戶訪問時通過在線API向推薦服務發起請求,獲得該用戶可能感興趣的物品,完成推薦業務。

(2)推薦系統架構
推薦系統需要由多個推薦引擎組成,每個推薦引擎負責一類特性和一種任務,推薦系統的任務是將推薦引擎的結果按照一定權重或者優先級合并,排序然后返回。如下圖:

推薦系統架構圖,圖片來源:《推薦系統實踐》

這樣做的優點是方便增加或刪除引擎,控制不同引擎對推薦結果的影響,可以實現推薦引擎級別的用戶反饋,對不同用戶給出不同引擎組合權重。

(3)推薦引擎架構

推薦引擎架構圖,圖片來源:《推薦系統實踐》

推薦引擎架構主要包括三部分:

  • 圖中A部分負責從數據庫或緩存中拿到用戶行為數據,通過分析不同行為,生成當前用戶的特征向量,如果使用非行為特征,就不需要行為提取和分析模塊了,該模塊的輸出就是用戶特征向量。用戶特性向量包括用戶行為的種類、用戶行為產生的時間、用戶行為的次數、物品的熱門程度。
  • 圖中B部分負責將用戶的特征向量通過特征-物品相關矩陣轉化為初始推薦物品列表。
  • 圖中C部分負責對初始的推薦列表進行過濾、排名等處理,從而生成該引擎的最終推薦結果。過濾模塊會過濾掉以下物品:用戶已經產生過行為的物品、候選物品以外的物品(不符合用戶篩選條件的物品)、某些質量很差的物品。

2.3 推薦算法

推薦系統產生推薦列表的方式通常有兩種:基于內容屬性的相似性推薦、協同過濾。

2.3.1 物以類聚:基于內容屬性的相似性推薦

基于內容推薦利用一些列有關物品的離散特征,推薦出具有類似性質的相似物品。

(1)優點:只依賴于物品本身地特征而不依賴用戶的行為,讓新的物品、冷僻的物品都能得到展示的機會。

(2)存在的問題:推薦質量優劣完全依賴于特征構建的完備性,但特征構建本身就是一項系統的工程,存在一定成本。沒有考慮用戶對物品的態度,用戶的品味和調性很難得到詮釋和表達。

(3)典型方式:TF-IDF,其基本思想:出現頻率越高的標簽區分度越低,反之亦然。

實例:Pandora?使用歌曲或者藝人的屬性(由音樂流派項目提供的400個屬性的子集)從而生成一個電臺,其中的樂曲都有相似的屬性。

用戶的反饋用于精化電臺中的內容。在用戶“不喜歡”某一歌曲時,弱化某一些屬性;在用戶喜歡某一歌曲時,強化另一些屬性。

Pandora?啟動時則僅需要很少信息,然而這種方法的局限性很大,只能得出與原始種子相似的推薦。

2.3.2 人以群分:協同過濾(collaborative filtering)

協同過濾方法根據用戶歷史行為(例如其購買的、選擇的、評價過的物品等)結合其他用戶的相似決策建立模型。作為目前應用最為廣泛的推薦機制,其基于用戶行為的特點使我們不需要對物品或信息進行完整的標簽化分析和建模,可用于預測用戶對哪些物品可能感興趣(或用戶對物品的感興趣程度)。

(1)基礎:把用戶的消費行為作為特征,以此進行用戶相似性或物品相似性的計算,進行信息匹配。

(2)子類1:基于物品(item-based)的協同

基礎思路:先確定你喜歡什么物品,再找到與之相似的物品推薦給你。

(3)子類2:基于用戶(user-based)的協同

基礎思路分為兩步:第一步,找到那些與你在某一方面口味相似的人群;第二步,將這一人群喜歡的新東西推薦給你。

(4)子類3:基于模型(model-based)的協同

基礎思路:用用戶的喜好信息來訓練算法模型,實時預測用戶可能的點擊率。

實例:Last.fm?建立通過觀察用戶日常收聽的樂隊或歌手,并與其它用戶的行為進行比對,建立一個“電臺”,以此推薦歌曲。

Last.fm?會播放不在用戶曲庫中,但其他相似用戶經常會播放的其它音樂。為了提供精準推薦,Last.fm?需要大量用戶信息。這是一個冷啟動問題,在協同過濾系統中非常常見。

2.3.3 交互界面>數據>算法

雖然推薦算法是推薦系統的核心要素,但是交互界面對于推薦系統來說也至關重要。

例如“推薦理由”,從工程角度出發,推薦理由提升了推薦系統的透明性,讓用戶明白為什么會推薦該種類型的內容。站在業務的角度,會更多地從促成轉化入手,即什么樣的推薦理由可以增加說服力,引發用戶認同。

因此,對于推薦系統而言,有著“交互界面>數據>算法”的說法。

2.3.4 內容分發常見的3種方式

作為內容分發常見的3種方式,編輯、算法與社交分發各有千秋,互相補充。

(1)編輯分發指中心個人主導的分發機制,常見于紙媒、門戶網站等。

(2)算法分發指機器主導的分發機制,常見于今日頭條等內容APP,形成了真正的千人千面。

ACM世界冠軍,第四范式創始人戴文淵在2009年加入百度時,百度基于1w條專家規則進行內容分發,而機器分析數據之后得到了更加精細化的1000億條規則。相對應的,百度的收入提升了8倍。

(3)社交分發指離散人工主導的分發機制,常見于Facebook等社交網站,用戶給出負面評價過多的內容,Facebook審核人員會優先處理。

三、如何評價推薦系統

正如管理學大師彼得德魯克所言:”if you can’t measure it, you can‘t improve it.”

3.1 推薦系統測評

常見的推薦系統評估指標有用戶滿意度、預測準確度、覆蓋率、多樣性、新穎性、驚喜度、信任度、實時性、健壯性、商業目標。

3.1.1 用戶滿意度

用戶滿意度是評測推薦系統的重要指標,無法離線計算,只能通過用戶調查或者在線實驗獲得。在線系統中,我們可以用用戶付費率、點擊率、停留時間、轉化率等指標度量用戶的滿意度。

3.1.2 預測準確度

預測準確度,度量的是推薦系統預測用戶行為的能力。是推薦系統最重要的離線評測指標。包括了評分預測、TopN推薦兩種。

對應到內容推薦系統中,表現為對用戶點擊地預判和對消費情況地預判。由于準確度評估是可以復用既有數據進行離線計算的,故通常用于各種算法的迭代。

網站提供推薦服務時,一般是給用戶一個個性化的推薦列表,這種推薦叫做TopN推薦。

TopN推薦的預測準確率,一般通過2個指標度量:精度(precision)和召回(recall)

推薦系統中的精度(precision)和召回(recall)本質上和二元分類中的概念是一樣的。

推薦系統往往只推薦有限個(如k個)物品給某個用戶。真正相匹配的物品我們稱之為相關物品(也就是二元分類中的陽性)。

k召回(recall?at?k)=所推薦的k個物品中相關物品的個數/所有相關物品的個數

k精度(precision?at?k)=所推薦的k個物品中相關物品的個數/k

比如說,根據你的喜好,我們推薦了10個商品,其中真正相關的是5個商品。在所有商品當中,相關的商品一共有20個,那么

k召回 = 5 / 20

k精度 = 5 / 10

3.1.3 覆蓋率

也稱為多樣性,能夠給用戶提供視野范圍之外的內容,豐富度越高代表個體體驗的多樣性越好;

從內容角度可以評估有推薦展示的內容占整體內容量的比例,或整個內容分發體系的基尼系數。

3.1.4 多樣性

為了滿足用戶廣泛的興趣,推薦列表需要能夠覆蓋用戶不同興趣的領域,即需要具有多樣性。

3.1.5 新穎性

新穎性也是影響用戶體驗的重要指標之一。它指的是向用戶推薦非熱門非流行物品的能力。

3.1.6 驚喜度

推薦結果和用戶的歷史興趣不相似,但卻讓用戶滿意,這樣就是驚喜度很高。

3.1.7 信任度

如果用戶信任推薦系統,就會增加用戶和推薦系統的交互。

提高信任度的方式有兩種:增加系統透明度:提供推薦解釋,讓用戶了解推薦系統的運行機制;利用社交網絡,通過好友信息給用戶做推薦。度量信任度的方式,只能通過問卷調查。

3.1.8 實時性

實時性包括兩方面:實時更新推薦列表滿足用戶新的行為變化;將新加入系統的物品推薦給用戶;

3.1.9 健壯性

任何能帶來利益的算法系統都會被攻擊,最典型的案例就是搜索引擎的作弊與反作弊斗爭。

健壯性(robust,魯棒性)衡量了推薦系統抗擊作弊的能力。

3.1.10 商業目標

設計推薦系統時,需要考慮最終的商業目標。不同網站具有不同的商業目標,它與網站的盈利模式息息相關。

3.2 推薦的常見問題

前美國總統奧巴馬的法律顧問凱斯·桑斯在2006年出版了《信息烏托邦——眾人如何生產知識》,書中提出了“信息繭房”的概念。信息繭房指在信息傳播中,由于公眾自身的信息需求并非全方位的,公眾只注意自己選擇的東西和使自己愉悅的領域,久而久之,會將自己桎梏在像蠶繭一般的“繭房”中。

推薦系統存在著“信息繭房”等諸多問題:

  1. 推薦重復,指大量內容高度重復,缺乏新意。
  2. 推薦密集,指同一類內容的占比過高,導致局部多樣性喪失。
  3. 易反感內容,包括詳情頁和列表頁的不好體驗。
  4. 時空限定內容,指不同類內容有不同的時效性。
  5. 稀疏性問題,實際場景中,用戶和物品的交互信息往往是非常稀疏的。

如電影推薦中,電影往往成千上萬部,但是用戶打過分的電影往往只有幾十部。使用如此少的觀測數據來預測大量的未知信息,會極大增加過擬合的風險。

3.3 如何冷啟動

3.3.1 用戶冷啟動

指一個新用戶,沒有任何歷史行為數據,怎么做推薦?

解決辦法:一種選擇是利用用戶注冊信息等基礎用戶數據,另一種選擇是新用戶第一次訪問推薦系統時,不立即給用戶展示推薦結果,而是給用戶提供一些物品讓用戶反饋他們對物品的興趣,然后根據反饋提供個性化推薦。

3.3.2 物品冷啟動

指一個新上線的物品,沒有用戶對它產生過行為,怎么推薦給感興趣的用戶?

解決辦法:利用物品本身的屬性,UserCF算法對于物品冷啟動不是非常敏感。

3.3.3 系統冷啟動

指一個新開發的網站,沒有用戶數據,怎么做個性化推薦?

解決辦法:充分發揮專家系統的作用,并與機器學習適當結合。

#參考文獻#

《內容算法:把內容變成價值的效率系統》,閆澤華

《推薦系統實踐》,項亮

《推薦系統》,Francesco Ricci,Lior Rokach,Bracha Shapira,Paul B.Kantor

http://sofasofa.io/forum_main_post.php?postid=1001389

 

本文由 @Alan 原創發布于人人都是產品經理,未經作者許可,禁止轉載。

題圖來自Unsplash,基于CC0協議。

更多精彩內容,請關注人人都是產品經理微信公眾號或下載App
評論
評論請登錄
  1. 想問下,推薦算法中的物以類聚和基于物品協同過濾兩個內容有區別嗎?都是推薦相似的物品啊。。。

    來自廣東 回復
  2. 很有幫助

    回復
  3. 好文,訂閱了

    來自廣東 回復