推薦策略產(chǎn)品經(jīng)理:什么是協(xié)同過濾推薦算法?

14 評論 18603 瀏覽 281 收藏 51 分鐘

本文將對推薦引擎核心算法中的協(xié)同過濾進(jìn)行剖析深挖,希望能給大家作為參考,并在工作中產(chǎn)生助益。

剖析千人千面的大腦——推薦引擎部分,其中這篇是定位:對推薦引擎中的核心算法:協(xié)同過濾進(jìn)行深挖。

首先,千人千面融合各種場景,如搜索,如feed流,如廣告,如風(fēng)控,如策略增長,如購物全流程等等;其次千人千面的大腦肯定是內(nèi)部的推薦引擎,這里有諸多規(guī)則和算法在實現(xiàn)對上述各個場景進(jìn)行“細(xì)分推薦排序”;最后是推薦引擎的算法又以“協(xié)同過濾”為最核心、最主流熱門,也是當(dāng)下眾多內(nèi)容型、電商型、社交工具、分發(fā)型的基礎(chǔ)。

由于協(xié)同過濾的算法介紹,網(wǎng)上也蠻多但片段化。要么側(cè)重講“原理流程”,這個占了4成;要么講算法公式,這個占5成;還有1成是偏向業(yè)務(wù)的理解,但這個籠統(tǒng)很難參考。

因此,這篇是屬于推薦引擎-理論搭建體系-之二,PM可以側(cè)重關(guān)注:

(1)了解協(xié)同過濾之前,先知道什么是:集體智慧。(沒有對比就沒有“感知”,這個集體智慧是更好幫助了解、對比協(xié)同過濾。因為網(wǎng)上很多片段化的文章,沒有對比出來,不利于PM去聯(lián)想和學(xué)習(xí)的)

(2)了解什么是協(xié)同過濾(這點(diǎn)偏向理論,網(wǎng)上的很多也如此。但我挑選了精簡部分,就只要2點(diǎn)關(guān)鍵:1知道它有什么作用,2為什么需要是它)

(3)學(xué)習(xí)協(xié)同過濾的核心。要實現(xiàn)包括三大重要部分:【干貨,核心】

  1. 一是收集用戶偏好(知道為什么要收、收哪些哪樣的、如何收集、收集過程有什么原則?);
  2. 二是找到相似的用戶或者物品(這里的核心有2大方面:1是怎樣定義算“相似”,屬于相似度問題,用什么公式去計算、有什么特點(diǎn);2是相似鄰居問題,可用什么公式計算兩個相似鄰居);
  3. 三是計算推薦(這里核心是基于物品的方式是如何計算推薦、基于用戶又是如何、兩者PK又有什么差異點(diǎn),如在場景,多樣性)每個部分再挖出各個關(guān)鍵點(diǎn)、(學(xué)習(xí),不是了解,是學(xué)習(xí))

(4)舉個推薦引擎中-應(yīng)用協(xié)同過濾的實踐案例。國外的產(chǎn)品案例。(包括如何使用,用什么公式,什么場景,有什么問題,怎么解決,代碼層面附錄。PS:為什么選國外呢? 是因為這個推薦最早是應(yīng)用于國外,不管是算法還是理論層面,確實要比國內(nèi)深究多一分,覺得比較客觀,可以參考和適用更強(qiáng),這點(diǎn)可以跳著看。)

以上,個人認(rèn)為走推薦、畫像、搜索等PM核心要掌握第(1)~(3)部分,公式可以除外。其他策略PM們也可以關(guān)注各種的原理、特點(diǎn)、面試關(guān)鍵詞,以用來作為談資、需求籌碼、面試拔高、綜合素質(zhì)的層次跨越獲取高薪。

一、集體智慧和協(xié)同過濾

1. 什么是集體智慧

(1)原理和介紹:

集體智慧 (Collective Intelligence) 并不是 移動互聯(lián)網(wǎng)時代特有的,只是在移動互聯(lián)網(wǎng)時代,大家在 Web 應(yīng)用中利用集體智慧構(gòu)建更加有趣的應(yīng)用或者得到更好的用戶體驗。

核心原理:

集體智慧是指在大量的人群的行為和數(shù)據(jù)中收集答案,幫助你對整個人群得到統(tǒng)計意義上的結(jié)論,這些結(jié)論是在單個個體上無法得到的,它往往是某種趨勢或者人群中共性的部分。

(PS:從上面可以知道,這里的“結(jié)論”是提取共性。這里的本質(zhì)應(yīng)用就可以是推薦系統(tǒng)的“人以群分,物以類聚”思想。)

(補(bǔ)充1:)

集體智慧(Collective Intelligence,CI),簡稱集智,它是一種共享的或群體的智能。

在互聯(lián)網(wǎng)時代之前就存在,可以分為兩面去看:

  • 在網(wǎng)絡(luò)時代來臨之前,集體智慧就一直活躍在生物學(xué)、社會學(xué)、計算機(jī)科學(xué)、大眾行為學(xué)等領(lǐng)域 [1] [2] 。
  • 隨著Web 2.0的崛起和社會性軟件的普及,集體智慧這在社交網(wǎng)絡(luò)服務(wù)、眾包、分享、評論和推薦等領(lǐng)域也得到了廣泛應(yīng)用 [3] (典型案例包括:維基百科、百度百科、百度知道、豬八戒網(wǎng)、任務(wù)中國、Threadless、InnoCentive、digg、iStockphoto、Mechanical Turk等。)

(補(bǔ)充2:)

為什么會補(bǔ)充說明這個?有2個原因:一是有些飯友不太清楚;二是我覺得這個概念其實很多公司、業(yè)務(wù)、產(chǎn)品在設(shè)計、在做策略、在做發(fā)展都離不開,多多少少會摻和到,所以拋出這個概念,可以讓大家注意到。

總之越來越多的傳統(tǒng)公司和組織也開始使用各種集體智慧平臺或工具,借助外部智慧以解決復(fù)雜問題。尤其現(xiàn)在主推的各種智能平臺,智能城市、策略。

(2)從案例去看:

Wikipedia 和 Google 是兩個典型的利用集體智慧的 移動互聯(lián)網(wǎng) 應(yīng)用:

【W(wǎng)ikipedia】(維基百科)

  • 入口:https://www.wikipedia.org/
  • Wikipedia 是一個知識管理的百科全書。(相對于傳統(tǒng)的由領(lǐng)域?qū)<揖庉嫷陌倏迫珪?/li>
  • Wikipedia 允許最終用戶貢獻(xiàn)知識,隨著參與人數(shù)的增多,Wikipedia 變成了涵蓋各個領(lǐng)域的一本無比全面的知識庫。
  • 所以在 Wikipedia 上,這種改版和修正被變?yōu)槊總€人都可以做的事情,任何人發(fā)現(xiàn)錯誤或者不完善都可以貢獻(xiàn)他們的想法,即便某些信息是錯誤的,但它一定也會盡快的被其他人糾正過來。從一個宏觀的角度看,整個系統(tǒng)在按照一個良性循環(huán)的軌跡不斷完善,這也正是集體智慧的魅力。

(補(bǔ)充:或許也許有人會質(zhì)疑它的權(quán)威性,但如果你從另一個側(cè)面想這個問題,也許就可以迎刃而解。在發(fā)行一本書時,作者雖然是權(quán)威,但難免還有一些錯誤,然后通過一版一版的改版,書的內(nèi)容越來越完善。(飯友們可以回憶思考下。常見的個性化推薦產(chǎn)品,如電商,如頭條,網(wǎng)易等等,不管是推薦系統(tǒng)也好,搜索也罷,各種策略產(chǎn)品,是不是都說你越使用、越反饋,越懂你,越精準(zhǔn),這里的本質(zhì)原理是“相通”的))

【Google】(姑姑,哈哈)

  • 入口:https://www.google.com.hk/ (PS被封殺需翻墻)
  • Google:目前最流行的搜索引擎,與 Wikipedia 不同,它沒有要求用戶顯式的貢獻(xiàn),但仔細(xì)想想 Google 最核心的 PageRank 的思想,它利用了 Web 頁面之間的關(guān)系,將多少其他頁面鏈接到當(dāng)前頁面的數(shù)目作為衡量當(dāng)前頁面重要與否的標(biāo)準(zhǔn);

或許飯友們絕對這不好理解,那么你可以把它想象成一個選舉的過程,每個 Web 頁面都是一個投票者同時也是一個被投票者,PageRank 通過一定數(shù)目的迭代得到一個相對穩(wěn)定的評分。Google 其實利用了現(xiàn)在 Internet 上所有 Web 頁面上鏈接的集體智慧,找到哪些頁面是重要的。

(飯友們同樣可思考下:這里的頁面上各種的鏈接,找到哪些頁面,是不是和我們很多內(nèi)容型產(chǎn)品,找到相似的內(nèi)容資料,如文章,如視頻等相似呢? 這里“投票者”其實可以理解是用戶對內(nèi)容的行為反饋)

(補(bǔ)充1:這里的web頁面不算僅指PC端,也是包含移動端。更多是泛指產(chǎn)品中的每個”網(wǎng)絡(luò)頁面”。)

2. 什么是協(xié)同過濾

(1)怎么去理解呢?

協(xié)同過濾是利用集體智慧的一個典型方法。

(PS,協(xié)同過濾是推薦的核心算法,即集體智慧和推薦是關(guān)系的,個中原理參見上面所說的。)

要理解什么是協(xié)同過濾 (Collaborative Filtering, 簡稱 CF),首先想一個簡單的問題:

  • 如果你現(xiàn)在想看個電影,但你不知道具體看哪部,你會怎么做?
  • 大部分的人會問問周圍的朋友,看看最近有什么好看的電影推薦,而一般更傾向于從口味比較類似的朋友那里得到推薦。這就是協(xié)同過濾的核心思想。

核心原理:協(xié)同過濾一般是在海量的用戶中發(fā)掘出一小部分和你品位比較類似的,在協(xié)同過濾中,這些用戶成為鄰居,然后根據(jù)他們喜歡的其他東西組織成一個排序的目錄作為推薦給你。

(2)會遇到什么問題?

當(dāng)然其中有一些核心的問題:

  • 如何確定一個用戶是不是和你有相似的品位?(數(shù)據(jù),動作,用戶/內(nèi)容畫像)
  • 如何將鄰居們的喜好組織成一個排序的目錄?(召回,排序,推薦)

如同第一章所說,同樣與集體智慧PK??梢园l(fā)現(xiàn):

協(xié)同過濾相對于集體智慧而言,它從一定程度上保留了個體的特征,就是你的品位偏好,所以它更多可以作為個性化推薦的算法思想。

(補(bǔ)充2:所以可以想象,這種推薦策略在 移動互聯(lián)網(wǎng) 的長尾中是很重要的,將大眾流行的東西推薦給長尾中的人怎么可能得到好的效果,所以回到推薦系統(tǒng)的一個核心問題:了解你的用戶,然后才能給出更好的推薦。)

二、深入?yún)f(xié)同過濾的核心

前面作為背景知識,介紹了集體智慧和協(xié)同過濾的基本思想,主要是為飯友們對推薦相關(guān)的打一些基礎(chǔ)和鋪墊。

接下來,下面這一節(jié)將深入分析協(xié)同過濾的原理,介紹基于協(xié)同過濾思想的多種推薦機(jī)制,優(yōu)缺點(diǎn)和實用場景。

(核心1、面試問題坑、需求反推工作量思考:協(xié)同過濾的基本核心有3個要素。)

首先,要實現(xiàn)協(xié)同過濾,需要一下幾個步驟:

  • 收集用戶偏好;
  • 找到相似的用戶或物品;
  • 計算推薦。

1. 收集用戶偏好

原理作用:

一句話:要從用戶的行為和偏好中發(fā)現(xiàn)規(guī)律,并基于此給予推薦。所以,如何收集用戶的偏好信息成為系統(tǒng)推薦效果最基礎(chǔ)的決定因素。(前者飯友PM都知道,后者是面試或需求中常會問)

2. 核心策略:如何收集呢?

(即用戶有很多方式向系統(tǒng)提供自己的偏好信息,而且不同的應(yīng)用也可能大不相同,下面舉例進(jìn)行介紹。以下可以作為需求分析、口徑定義使用。)

(補(bǔ)充1:面試坑:當(dāng)問到具體的用戶偏好收集、如何定義行為、權(quán)重、正負(fù)反饋等相關(guān)問題,實際就是這節(jié)相關(guān)內(nèi)容,所以下面的案例都可以參考回答,基本對全產(chǎn)品都通用,具有很強(qiáng)的適用性。)

(補(bǔ)充2:這種類型相關(guān)的,可以參考以前社區(qū)的一些文章,以下我找了一些:)

  • 【重要/實踐】騰訊視頻推薦策略:播放結(jié)束后,如何進(jìn)行推薦策略思考?
  • 【快課/實踐】剖析京東JD在“猜你喜歡”的產(chǎn)品設(shè)計+推薦策略。

(補(bǔ)充3:有很多辦法和操作,具體業(yè)務(wù),具體產(chǎn)品都可能不太同。我也無法羅列完全,但挑選了業(yè)內(nèi)常用,實用性和發(fā)散性好的。如下表:)

(補(bǔ)充4:PS: 布爾值是“真” True 或“假” False 中的一個。代碼層有時也會在適當(dāng)時將值 True 和 False 轉(zhuǎn)換為 1……)

通用、標(biāo)準(zhǔn)的:

推薦策略產(chǎn)品經(jīng)理:剖析協(xié)同過濾(個性化推薦的核心算法 )

(表 1 用戶行為和用戶偏好)

偏業(yè)務(wù):如內(nèi)容型(以騰訊視頻為例)

上面已經(jīng)提過了。

再舉個形象例子:你說你很愛你女友;女友反問:你有多愛?如果女友是講情義的,那么你就給以前為她做過的DIY禮物打上最高權(quán)重,優(yōu)先展示說出這些內(nèi)容;如果女友是講金錢的,那么你就準(zhǔn)備為她買過的、即將買的iPhoneXS送她,優(yōu)先物質(zhì)。權(quán)重,就是優(yōu)先級,重要性。

下面的,可以直接應(yīng)用到視頻平臺的推薦賦值,還是比較全面的。但是,我建議還是要思考到業(yè)務(wù)情況,賦值和權(quán)項范圍是要視情況調(diào)整。

推薦策略產(chǎn)品經(jīng)理:剖析協(xié)同過濾(個性化推薦的核心算法 )

偏業(yè)務(wù):如服務(wù)型(以美團(tuán)為例)

  • 用戶特征
  • 人口屬性:用戶年齡,性別,職業(yè)等。
  • 行為特征:對商戶/商圈/品類的偏好(實時、歷史),外賣偏好,活躍度等。
  • 建模特征:基于用戶的行為序列建模產(chǎn)生的特征等。
  • 商戶特征
  • 屬性特征:品類,城市,商圈,品牌,價格,促銷,星級,評論等。
  • 統(tǒng)計特征:不同維度/時間粒度的統(tǒng)計特征等。
  • 圖像特征:類別,建模特征等。
  • 業(yè)務(wù)特征:酒店房型等。
  • Query特征
  • 分詞,意圖,與商戶相似度,業(yè)務(wù)特征等。
  • 上下文特征
  • 時間,距離,地理位置,請求品類,競爭情況等。
  • 廣告曝光位次。

(其他如電商也是同理,在這里就不一一梳理。有興趣可以看社區(qū)的用戶畫像、推薦等專輯內(nèi)容,里面有不同細(xì)分類的梳理,由于這些是要結(jié)合,所以會相對分散到某個不同細(xì)分領(lǐng)域的產(chǎn)品或業(yè)務(wù)上。)

總結(jié)-提取策略、方法論:

(補(bǔ)充1:下面是對提上述的一些“收集特征、權(quán)重賦值”等抽象出“可復(fù)用”的思想。)

(補(bǔ)充2:)【面試坑、問題點(diǎn)】

關(guān)于策略類PM都離不開大數(shù)據(jù)的行為收集,特征定義。下面是對這些細(xì)分的總結(jié)。我梳理每個獨(dú)立的點(diǎn),都可以回答?;卮鸬膯栴}范圍是“上述案例的一些“關(guān)鍵詞””,所以建議先回答下面的一些要點(diǎn),若面試官深挖再回答上面的細(xì)分案例。

(補(bǔ)充3:上述回答邏輯,即總-分-分原理,這樣有助于邏輯回答,也有助于符合面試的不斷深挖過程。盡量避免一開始就回答具體,這樣會讓面試官一來問的更細(xì),反而出現(xiàn)沒有學(xué)習(xí)和復(fù)盤到而出現(xiàn)更多意外,二來也是給各自心理門檻,即過三關(guān)心理,面試官深入問的,你基本都能回答出。)

下面不用產(chǎn)品這個詞,而是用“應(yīng)用”,泛指更多端的產(chǎn)品

策略1:

以上列舉的用戶行為都是比較通用的、經(jīng)典業(yè)務(wù)的。但是如果是推薦、搜索等PM,是可以根據(jù)自己應(yīng)用(業(yè)務(wù)、產(chǎn)品)的特點(diǎn)添加特殊的用戶行為,并用他們表示用戶對物品的喜好。

策略2:

方法論,面試可以分享,大大加分!

在一般應(yīng)用中,提取的用戶行為一般都多于一種,關(guān)于如何組合這些不同的用戶行為,基本上有以下兩種方式:(策略、方法論)

  • 【將不同的行為分組】:(假設(shè)以第一個案例為例),一般可以分為“查看”和“購買”等等,然后基于不同的行為,計算不同的用戶 / 物品相似度。類似于當(dāng)當(dāng)網(wǎng)或者 Amazon 給出的“購買了該圖書的人還購買了 …”,“查看了圖書的人還查看了 …”
  • 【用戶、行為加權(quán)】:(假設(shè)以第二個案例為例),根據(jù)不同行為反映用戶喜好的程度將它們進(jìn)行加權(quán),得到用戶對于物品的總體喜好。(有些飯友聯(lián)系到畫像內(nèi)容,這里我要補(bǔ)充下:一般來說,顯式的用戶反饋比隱式的權(quán)值大,但比較稀疏,畢竟進(jìn)行顯示反饋的用戶是少數(shù);同時相對于“查看”,“購買”行為反映用戶喜好的程度更大,但這也因應(yīng)用而異。)

【補(bǔ)充:上面的全部,都可以作為針對“如何組合、提取用戶行為”的面試問題,所表達(dá)的觀點(diǎn),這肯定會加分,并且這些都是關(guān)鍵知道思想。就如同可以理解成:共產(chǎn)黨以前走農(nóng)村包圍城市的戰(zhàn)略,其根本指導(dǎo)思想是:如論持久戰(zhàn)。 所以上面1-3的例子是做法,那么作為策略PM一個核心的點(diǎn)是,你要學(xué)會有方法策略,怎么能遷移復(fù)用。這里的指導(dǎo)思想就如上面所說的,雖然不一定說完整全面,但對于大部分互聯(lián)網(wǎng)產(chǎn)品,都是這個原理?!?/p>

策略3:

當(dāng)策略PM做到上面之后,也就是收集了用戶行為數(shù)據(jù)之后,接下來還需要對數(shù)據(jù)進(jìn)行一定的預(yù)處理。

常問的問題類似:你覺得在收集數(shù)據(jù)/用戶數(shù)據(jù)、數(shù)據(jù)源等處理等等,要注意什么?;蛘哂龅绞裁吹目?,或者說你是怎么想的,總之核心是“數(shù)據(jù)處理”。這個對于畫像PM等底層數(shù)據(jù)PM,一定會問!

其中最核心的工作就是:減噪和歸一化。

減噪:用戶行為數(shù)據(jù)是用戶在使用應(yīng)用過程中產(chǎn)生的,它可能存在大量的噪音和用戶的誤操作,可以通過經(jīng)典的數(shù)據(jù)挖掘算法過濾掉行為數(shù)據(jù)中的噪音,這樣可以是的分析更加精確。

(補(bǔ)充1:這里具體的方法,算法等細(xì)節(jié),可以參考用戶畫像等相關(guān)內(nèi)容,這話題又比較大,此處不展開了。只要知道什么回事即可。)

歸一化:如前面講到的,在計算用戶對物品的喜好程度時,可能需要對不同的行為數(shù)據(jù)進(jìn)行加權(quán)。但可以想象,不同行為的數(shù)據(jù)取值可能相差很大。

例子1:比如,用戶的查看數(shù)據(jù)必然比購買數(shù)據(jù)大的多,如何將各個行為的數(shù)據(jù)統(tǒng)一在一個相同的取值范圍中,從而使得加權(quán)求和得到的總體喜好更加精確,就需要進(jìn)行歸一化處理。

例子2:從以往實戰(zhàn)來看,最簡單的歸一化處理:就是將各類數(shù)據(jù)除以此類中的最大值,以保證歸一化后的數(shù)據(jù)取值在 [0,1] 范圍中。

n同上補(bǔ)充的點(diǎn),這個相對抽象,飯友們可以結(jié)合我舉得例子去理解~

(補(bǔ)充2:即上面所做,當(dāng)進(jìn)行的預(yù)處理后(這個一般可以和數(shù)據(jù)和開發(fā)一起搞),根據(jù)不同應(yīng)用的行為分析方法,可以選擇分組或者加權(quán)處理,之后可以得到一個用戶偏好的二維矩陣,一維是用戶列表,另一維是物品列表,值是用戶對物品的偏好,一般是 [0,1] 或者 [-1, 1] 的浮點(diǎn)數(shù)值。)

圖另外后面再配。就是數(shù)組矩陣的樣式,如果很抽象就簡單理解成excel表左列右行的樣式。

2. 找到相似的用戶或物品

原理:當(dāng)已經(jīng)對用戶行為進(jìn)行分析得到用戶喜好后,可以根據(jù)用戶喜好計算相似用戶和物品,然后基于相似用戶或者物品進(jìn)行推薦。

目前主流的,都是圍繞最典型的 CF 的兩個分支:

  • 基于用戶的 CF ;
  • 基于物品的 CF;

策略1、面試問題:

這兩種方法都有個共同核心:就是都需要計算相似度。

所以,下面先看看最基本的幾種計算相似度的方法。

由于涉及到計算,那就肯定會有各種公式。否則根本不能說算法。所以下面有相關(guān)的技術(shù)細(xì)節(jié),可能有技術(shù)和算法邏輯強(qiáng)的PM能看得很明白。但沒有這方面基礎(chǔ)的,也沒關(guān)系,下面我梳理都會按大白話和盡可能了解的語言去講述原理。

(補(bǔ)充1:還是要說個很現(xiàn)實的事情。這篇依然有一丟的技術(shù)術(shù)語,PM不理解或者不明白是很正常的,但如果連百度、連問查找都不愿意,那談何學(xué)習(xí)和成長呢?要知道,你薪資漲幅高低、大廠公司offer等依然有一堆PM在與你競爭。)

(1)相似度的計算

策略1:

關(guān)于相似度的計算,現(xiàn)有的幾種基本方法都是基于向量(Vector)的。(飯友其實簡單理解,也就是計算兩個向量的距離,距離越近相似度越大。)

計算相似度邏輯1:(面試細(xì)節(jié))

在推薦的場景中,在用戶 – 物品偏好的二維矩陣中:

  1. 可以將一個用戶對所有物品的偏好作為一個向量來計算用戶之間的相似度,
  2. 或者將所有用戶對某個物品的偏好作為一個向量來計算物品之間的相似度。

——————————分割線(下面是技術(shù)細(xì)節(jié)+推薦PM角度的闡述)——————

(補(bǔ)充2:由于涉及到公式,所以一定要保證全面性。所以每個相似度計算方法都附上了:原理、公式、關(guān)鍵點(diǎn)、面試常會問到的細(xì)節(jié)。飯友們各取所需。)

下面詳細(xì)介紹幾種常用的相似度計算方法:

歐幾里德距離(Euclidean Distance)

【原理】:最初用于計算歐幾里德空間中兩個點(diǎn)的距離,假設(shè) x,y 是 n 維空間的兩個點(diǎn),它們之間的歐幾里德距離是:

推薦策略產(chǎn)品經(jīng)理:剖析協(xié)同過濾(個性化推薦的核心算法 )

【關(guān)鍵點(diǎn)、面試細(xì)節(jié)】:

可以看出,當(dāng) n=2 時,歐幾里德距離就是平面上兩個點(diǎn)的距離。

當(dāng)用歐幾里德距離表示相似度,一般采用以下公式進(jìn)行轉(zhuǎn)換:距離越小,相似度越大。

推薦策略產(chǎn)品經(jīng)理:剖析協(xié)同過濾(個性化推薦的核心算法 )

皮爾遜相關(guān)系數(shù)(Pearson Correlation Coefficient):

【原理】:皮爾遜相關(guān)系數(shù)一般用于計算兩個定距變量間聯(lián)系的緊密程度,它的取值在 [-1,+1] 之間。

推薦策略產(chǎn)品經(jīng)理:剖析協(xié)同過濾(個性化推薦的核心算法 )

sx, sy是 x 和 y 的樣品標(biāo)準(zhǔn)偏差。

Cosine 相似度(Cosine Similarity)

Cosine 相似度被廣泛應(yīng)用于計算文檔數(shù)據(jù)的相似度:

推薦策略產(chǎn)品經(jīng)理:剖析協(xié)同過濾(個性化推薦的核心算法 )

Tanimoto 系數(shù)(Tanimoto Coefficient)

Tanimoto 系數(shù)也稱為 Jaccard 系數(shù),是 Cosine 相似度的擴(kuò)展,也多用于計算文檔數(shù)據(jù)的相似度:

推薦策略產(chǎn)品經(jīng)理:剖析協(xié)同過濾(個性化推薦的核心算法 )

——————————分割線(下面是原理思想細(xì)節(jié)+推薦PM角度的闡述)——————

補(bǔ)充3:說回重點(diǎn)。后面我想單純只講公式?jīng)]有太多意義。為何?

  1. 是因為策略PM不一定要知道公式,只需知道原理和思想,知道什么場景該適合用啥;
  2. 單純說公式?jīng)]意思,不是開發(fā)開始不懂那么多,這樣子失去原來的意義;
  3. 不能結(jié)合業(yè)務(wù)也沒意義。雖然這個沒辦法在這里展開,因為太細(xì)了,我也沒那么全面;

因此,我針對上面提到的計算方式,用大白話去講解各種的原理。

這里的原理是指:公式本身都是計算,都是為了解決同一個問題。所以假設(shè)A找B為目標(biāo),那么A會怎樣去找?會通過什么方式、什么流程、遇到什么問題、怎么解決。

【PS:這個可以理解是 :如果我想得到10的數(shù)字,那么可以用乘法、加法、減法、除法、取余、邏輯運(yùn)算、同異法等等。如5+5=10、5*2=10,15-5=10,這些都是公式,但本質(zhì)還是為了得到10,只是可能場景不同我們思考的方向不一樣。

所以大家不要看到公式那么怕,百度下或者有興趣有空看看,這里面比我們之前學(xué)高數(shù)、高考都簡單不少的~ 】

以下基本80%都是PM可以看得懂的,但前提是要靜心慢慢看。

畢竟這方面是有門檻的,但正因為有門檻才有壁壘,有壁壘才是產(chǎn)品力、核心競爭力之一,少了難了才會更缺、更值錢和難替換。

同理,我會以PM角度附上了:原理、公式、關(guān)鍵點(diǎn)、面試常會問到的細(xì)節(jié)。飯友們各取所需。)

(2)相似鄰居的計算

上面介紹完相似度的計算公式、邏輯、面試坑、@開發(fā)RD交流細(xì)節(jié),下面看看如何根據(jù)相似度找到用戶-物品的鄰居:

常用的挑選鄰居的原則可以分為兩類:

補(bǔ)充了圖:圖 1 給出了二維平面空間上點(diǎn)集的示意圖。

固定數(shù)量的鄰居:K-neighborhoods 或者 Fix-size neighborhoods。

【原理】:不論鄰居的“遠(yuǎn)近”,只取最近的 K 個,作為其鄰居。(下面是流程、邏輯想法)

  • 如圖 1 中的 A,假設(shè)要計算點(diǎn) 1 的 5- 鄰居,那么根據(jù)點(diǎn)之間的距離,取最近的 5 個點(diǎn),分別是點(diǎn) 2,點(diǎn) 3,點(diǎn) 4,點(diǎn) 7 和點(diǎn) 5。
  • 但很明顯可以看出,這種方法對于孤立點(diǎn)的計算效果不好。
  • 【核心問題,如果細(xì)節(jié)會問到-即為什么的解答】因為要取固定個數(shù)的鄰居,當(dāng)它附近沒有足夠多比較相似的點(diǎn),就被迫取一些不太相似的點(diǎn)作為鄰居,這樣就影響了鄰居相似的程度。(比如圖 1 中,點(diǎn) 1 和點(diǎn) 5 其實并不是很相似。)

基于相似度門檻的鄰居:Threshold-based neighborhoods

【原理】:

  • 與計算固定數(shù)量的鄰居的原則不同,基于相似度門檻的鄰居計算是對鄰居的遠(yuǎn)近進(jìn)行最大值的限制,落在以當(dāng)前點(diǎn)為中心,距離為 K 的區(qū)域中的所有點(diǎn)都作為當(dāng)前點(diǎn)的鄰居,
  • 這種方法計算得到的鄰居個數(shù)不確定,但相似度不會出現(xiàn)較大的誤差。
  • 如圖 1 中的 B,從點(diǎn) 1 出發(fā),計算相似度在 K 內(nèi)的鄰居,得到點(diǎn) 2,點(diǎn) 3,點(diǎn) 4 和點(diǎn) 7。
  • 【核心觀點(diǎn),問為什么認(rèn)為好】這種方法計算出的鄰居的相似度程度比前一種優(yōu),尤其是對孤立點(diǎn)的處理。

圖1. 相似鄰居計算示意圖:

推薦策略產(chǎn)品經(jīng)理:剖析協(xié)同過濾(個性化推薦的核心算法 )

3. 計算推薦

經(jīng)過前期的計算已經(jīng)得到了相鄰用戶和相鄰物品,下面介紹如何基于這些信息為用戶進(jìn)行推薦。

本系列的上半場,~已經(jīng)簡要介紹過基于協(xié)同過濾的推薦算法可以分為基于用戶的 CF 和基于物品的 CF,所以按邏輯去看,下面深入這兩種方法的計算方法,

PM主要關(guān)注是:計算的基本原理、使用場景和優(yōu)缺點(diǎn)。(這個是高頻面試問法、考點(diǎn),讓你介紹下原理思想。)

(1)基于用戶的 CF(User CF)

基于用戶的 CF 的基本思想相當(dāng)簡單!

【原理】:基于用戶對物品的偏好找到相鄰鄰居用戶,然后將鄰居用戶喜歡的推薦給當(dāng)前用戶。

(PS:請看我梳理出來的思考流程,看文字+看圖配合更好理解。)

  1. 計算就是將一個用戶對所有物品的偏好作為一個向量來計算用戶之間的相似度(找領(lǐng)居)
  2. 找到 K 鄰居后,根據(jù)鄰居的相似度權(quán)重以及他們對物品的偏好,(看鄰居偏好)
  3. 預(yù)測當(dāng)前用戶沒有偏好的未涉及物品,計算得到一個排序的物品列表作為推薦。(召回排序)

以上。作為面試或者分享你對這個原理的看法,絕對是可以用。

(下面圖 2 就是一個例子,對于用戶 A,根據(jù)用戶的歷史偏好,這里只計算得到一個鄰居 – 用戶 C,然后將用戶 C 喜歡的物品 D 推薦給用戶 A。)

圖 2.基于用戶的 CF 的基本原理:

推薦策略產(chǎn)品經(jīng)理:剖析協(xié)同過濾(個性化推薦的核心算法 )

(2)基于物品的 CF(Item CF)

基于物品的 CF 的原理和基于用戶的 CF 類似!?。?/p>

【原理】:只是在計算鄰居時采用物品本身,而不是從用戶的角度,即基于用戶對物品的偏好找到相似的物品,然后根據(jù)用戶的歷史偏好,推薦相似的物品給他。

(PS:請看我梳理出來的思考流程,看文字+看圖配合更好理解。)

  1. 從計算的角度看,就是將所有用戶對某個物品的偏好作為一個向量來計算物品之間的相似度,(找用戶偏好的“共性”物品)
  2. 得到物品的相似物品后,根據(jù)用戶歷史的偏好預(yù)測當(dāng)前用戶還沒有表示偏好的物品,計算得到一個排序的物品列表作為推薦。(預(yù)測召回,排序)

(舉個例子,如圖 3 ,對于物品 A,根據(jù)所有用戶的歷史偏好,喜歡物品 A 的用戶都喜歡物品 C,得出物品 A 和物品 C 比較相似,而用戶 C 喜歡物品 A,那么可以推斷出用戶 C 可能也喜歡物品 C。)

圖 3.基于物品的 CF 的基本原理:

推薦策略產(chǎn)品經(jīng)理:剖析協(xié)同過濾(個性化推薦的核心算法 )

(3)User CF vs. Item CF

前面介紹了 User CF 和 Item CF 的基本原理,下面分幾個不同的角度深入看看它們各自的優(yōu)缺點(diǎn)和適用場景:

計算復(fù)雜度:Item CF 和 User CF 是基于協(xié)同過濾推薦的兩個最基本的算法。

User CF 是很早以前就提出來了,Item CF 是從 Amazon(亞馬遜,成為市值第一的公司,不是沒有道理的……) 的論文和專利發(fā)表之后(2001 年左右)開始流行,

大家都覺得 Item CF 從性能和復(fù)雜度上比 User CF 更優(yōu),其中的一個主要原因就是:

  1. 對于一個在線網(wǎng)站,用戶的數(shù)量往往大大超過物品的數(shù)量,同時物品的數(shù)據(jù)相對穩(wěn)定,因此計算物品的相似度不但計算量較小,同時也不必頻繁更新。(但只是適用一些電商)
  2. 但往往忽略了這種情況只適應(yīng)于提供商品的電子商務(wù)網(wǎng)站,對于新聞,博客或者微內(nèi)容的推薦系統(tǒng),情況往往是相反的,物品的數(shù)量是海量的,同時也是更新頻繁的。

面試挖坑:用戶海量、內(nèi)容物品海量,因此要看產(chǎn)品實際情況而去使用相應(yīng)的協(xié)同過濾算法,不能一概而論。

所以單從復(fù)雜度的角度,這兩個算法在不同的系統(tǒng)中各有優(yōu)勢,推薦引擎的設(shè)計者需要根據(jù)自己應(yīng)用的特點(diǎn)選擇更加合適的算法。

適用的場景:

場景策略:在非社交網(wǎng)絡(luò)的網(wǎng)站中:內(nèi)容內(nèi)在的聯(lián)系是很重要的推薦原則,它比基于相似用戶的推薦原則更加有效。

可以看到,在這種情況下我認(rèn)為有幾個很重要的點(diǎn):

  • Item CF 的推薦成為了引導(dǎo)用戶瀏覽的重要手段 。(比如在當(dāng)當(dāng)網(wǎng)(購書網(wǎng)站)上,當(dāng)你看一本書的時候,推薦引擎會給你推薦相關(guān)的書籍,這個推薦的重要性遠(yuǎn)遠(yuǎn)超過了網(wǎng)站首頁對該用戶的綜合推薦。)
  • 同時 Item CF 便于為推薦做出解釋。(在一個非社交網(wǎng)絡(luò)的網(wǎng)站中,給某個用戶推薦一本書,同時給出的解釋是某某和你有相似興趣的人也看了這本書,這很難讓用戶信服,因為用戶可能根本不認(rèn)識那個人;但如果解釋說是因為這本書和你以前看的某本書相似,用戶可能就覺得合理而采納了此推薦。)
  • 相反的,在現(xiàn)今很流行的社交網(wǎng)絡(luò)站點(diǎn)中,User CF 是一個更不錯的選擇,User CF 加上社會網(wǎng)絡(luò)信息,可以增加用戶對推薦解釋的信服程度。
  • 推薦多樣性和精度。

一般來說,剛開始研究推薦引擎的學(xué)者們在相同的數(shù)據(jù)集合上分別用 User CF 和 Item CF 計算推薦結(jié)果,發(fā)現(xiàn)推薦列表中,只有 50% 是一樣的,還有 50% 完全不同。

(但是這兩個算法確有相似的精度,所以可以說,這兩個算法是很互補(bǔ)的。具體怎么度量,可以參考下面梳理的幾個方面。一是整體的度量方法,而是不同的業(yè)務(wù)指標(biāo))

度量策略-兩種經(jīng)典方法:

(PS:無涉及具體業(yè)務(wù),可通用)

補(bǔ)充1面試坑:常問到的:如你如何衡量推薦效果好不好? 從技術(shù)指標(biāo)?業(yè)務(wù)指標(biāo)如何看? 不同業(yè)務(wù)下又如何觀察,驗證? 改善?。

補(bǔ)充:2類似的可以以前飯團(tuán)的內(nèi)容,如:

  • 【重要】衡量個性化推薦產(chǎn)品效果的核心指標(biāo)有哪些?
  • 【實踐】淺析建立個性化推薦數(shù)據(jù)指標(biāo)體系&實踐(以電商為例)

關(guān)于推薦的多樣性,有兩種度量方法:

  • 第一種度量方法:是從單個用戶的角度度量。

就是說給定一個用戶(見下補(bǔ)充),查看系統(tǒng)給出的推薦列表是否多樣。(直觀)

也就是要比較推薦列表中的物品之間兩兩的相似度,不難想到,對這種度量方法,Item CF 的多樣性顯然不如 User CF 的好,因為 Item CF 的推薦就是和以前看的東西最相似的。

(補(bǔ)充1 ,可作為面試細(xì)節(jié):這里的用戶,一般在我們PM可以叫白名單用戶、隨機(jī)用戶、抽樣用戶、分組測試用戶、體驗用戶都可以~ 具體看業(yè)務(wù)規(guī)則策略。如我以前做這方面驗證會分兩種情況:如特定場景會分組用戶測試(側(cè)重是對場景的驗證,白名單)、如果是走量測試機(jī)率、抗壓等等,就導(dǎo)出隨機(jī)大量。后者一般有條件都可以聯(lián)合用戶畫像去勾選某些條件的用戶群))

  • 第二種度量方法是考慮系統(tǒng)的多樣性,也被稱為覆蓋率 (Coverage),它是指一個推薦系統(tǒng)是否能夠提供給所有用戶豐富的選擇。

在這種指標(biāo)下,Item CF 的多樣性要遠(yuǎn)遠(yuǎn)好于 User CF(因為 User CF 總是傾向于推薦熱門的),從另一個側(cè)面看,也就是說,Item CF 的推薦有很好的新穎性,很擅長推薦長尾里的物品。

所以,盡管大多數(shù)情況,Item CF 的精度略小于 User CF, 但如果考慮多樣性,Item CF 卻比 User CF 好很多。

PK的實踐分析:

面試策略:在面試的時候,尤其剛?cè)腴T推薦的PM可能會問到深入:你為什么說UCF和ICF是這樣,為什么就說它的多樣性會更好… 這時候,你需要有一些的原理、實踐策略反推出支撐。

所以,存在上面的情況,或者是如果對推薦的多樣性還心存疑惑,那么下面再舉個實例看看 User CF 和 Item CF 的多樣性到底有什么差別。

(補(bǔ)充:我按思考的金字塔原理梳理以下幾點(diǎn)。每一點(diǎn)都可以作為單獨(dú)“結(jié)論”。即假設(shè)談需求、面試的時候:你針對這個類似問題可以回答以下的任一點(diǎn)。如果他細(xì)問再聯(lián)系上下幾點(diǎn)。當(dāng)然,你熟悉之外就請隨便搭,這樣的方法只是方便對這方面基礎(chǔ)不太扎實的PM。)

個人推薦的順序是: 1-2、 2、1-3,都可以用于作答。

  1. 首先,假設(shè)每個用戶興趣愛好都是廣泛的,喜歡好幾個領(lǐng)域的東西,不過每個用戶肯定也有一個主要的領(lǐng)域,對這個領(lǐng)域會比其他領(lǐng)域更加關(guān)心。
  2. 給定一個用戶,假設(shè)他喜歡 3 個領(lǐng)域 A,B,C,A 是他喜歡的主要領(lǐng)域,這個時候來看 User CF 和 Item CF 傾向于做出什么推薦:
  3. 如果用 User CF, 它會將 A,B,C 三個領(lǐng)域中比較熱門的東西推薦給用戶;
  4. 而如果用 ItemCF,它會基本上只推薦 A 領(lǐng)域的東西給用戶。
  5. 那么看到因為 User CF 只推薦熱門的,所以它在推薦長尾里項目方面的能力不足;
  6. 而 Item CF 只推薦 A 領(lǐng)域給用戶,這樣他有限的推薦列表中就可能包含了一定數(shù)量的不熱門的長尾物品,同時 Item CF 的推薦對這個用戶而言,顯然多樣性不足。
  7. 但是對整個系統(tǒng)而言,因為不同的用戶的主要興趣點(diǎn)不同,所以系統(tǒng)的覆蓋率會比較好。

從上面的分析,可以很清晰的看到:這兩種推薦都有其合理性,但都不是最好的選擇,因此他們的精度也會有損失。

怎么優(yōu)化、解決?

其實對這類系統(tǒng)的最好選擇是:

如果系統(tǒng)給這個用戶推薦 30 個物品,既不是每個領(lǐng)域挑選 10 個最熱門的給他,也不是推薦 30 個 A 領(lǐng)域的給他,而是比如推薦 15 個 A 領(lǐng)域的給他,剩下的 15 個從 B,C 中選擇。

解決策略:所以結(jié)合 User CF 和 Item CF 是最優(yōu)的選擇。

  1. 結(jié)合的基本原則就是:當(dāng)采用 Item CF 導(dǎo)致系統(tǒng)對個人推薦的多樣性不足時,通過加入 User CF 增加個人推薦的多樣性,從而提高精度,
  2. 而當(dāng)因為采用 User CF 而使系統(tǒng)的整體多樣性不足時:可以通過加入 Item CF 增加整體的多樣性,同樣同樣可以提高推薦的精度。

用戶對推薦算法的適應(yīng)度:

畢竟之前更多是談引擎特性去考慮,除了上面小談用戶,我在這也梳理相關(guān)的,作為補(bǔ)充。

面試坑、策略:

  • 策略:以下可以作為用戶視覺的“推薦引擎、推薦策略”相關(guān)問題的想法,記住是想法!具體怎么說,除了按我梳理的邏輯順序,也可以自己去按理解去表達(dá)。由于站在用戶角度,就是上帝角度,只要結(jié)合了推薦算法的特性,怎么回答都可以?!?/li>
  • 坑:切記!不要說用戶覺得爽就行了,也不要說看指標(biāo)就很不錯了!不要單單的說怎樣怎樣就好,一定要結(jié)合推薦引擎本身!客觀的說! 切記切記~ 否則你就跳坑了~ 此坑適用于其他的策略PM面試。

回到來說,前面大部分都是從推薦引擎的角度考慮哪個算法更優(yōu),面試或者談需求時,如果不懂技術(shù)或者細(xì)節(jié),也可以拔高的回答:其實,我認(rèn)為更多的應(yīng)該考慮作為推薦引擎的最終使用者——應(yīng)用用戶對推薦算法的適應(yīng)度。

對于 User CF:

  • 推薦的原則:是假設(shè)用戶會喜歡那些和他有相同喜好的用戶喜歡的東西;
  • 但如果一個用戶沒有相同喜好的朋友,那 User CF 的算法的效果就會很差,所以一個用戶對的 CF 算法的適應(yīng)度是和他有多少共同喜好用戶成正比的。

對于Item C:

  • Item CF 算法也有一個基本假設(shè):就是用戶會喜歡和他以前喜歡的東西相似的東西,那么可以計算一個用戶喜歡的物品的自相似度。
  • 邏輯1:一個用戶喜歡物品的自相似度大,就說明他喜歡的東西都是比較相似的,也就是說他比較符合 Item CF 方法的基本假設(shè),那么他對 Item CF 的適應(yīng)度自然比較好;
  • 邏輯2:反之,如果自相似度小,就說明這個用戶的喜好習(xí)慣并不滿足 Item CF 方法的基本假設(shè),那么對于這種用戶,用 Item CF 方法做出好的推薦的可能性非常低。

小結(jié):

以上的介紹,相信飯友小伙伴們,起碼已經(jīng)對協(xié)同過濾推薦的各種方法,原則,特點(diǎn)和適用場景有深入,60%的了解,那就可以了。

下面就進(jìn)入實戰(zhàn)案例分析,重點(diǎn)介紹如何基于 Apache Mahout 實現(xiàn)協(xié)同過濾推薦算法。這是國外的一個案例,國外搞推薦算法和理論很早,比較成熟,值得參詳。

——————————分割線(下面是從技術(shù)角度去看,PM略看)——————

這篇是國外一個推薦系統(tǒng)技術(shù)案例分析,但為什么不選純產(chǎn)品案例(即無技術(shù),無參數(shù))呢?

是因為這個在社區(qū)已經(jīng)有不少了。推薦引擎本質(zhì)就是一個綜合的算法模型,肯定會涉及比較強(qiáng)的技術(shù)。加之飯友有一些是開發(fā),可能是開發(fā)轉(zhuǎn)PM,那么從開發(fā)角度去理解PM的推薦系統(tǒng)也是比較關(guān)鍵的。

脫離了代碼層面,或者從代碼層面、技術(shù)原理方面,如何結(jié)合到業(yè)務(wù)的思考。所以我挑選了一些內(nèi)容和組合、點(diǎn)評,有了以下部分。比較干澀,PM略看。若要看,請看第3小節(jié),即slope One部分,比較多適合推薦相關(guān)策略PM的干貨。還是那句話,關(guān)注原理思想。

總結(jié)

算法理論、思想的口水話、面試點(diǎn):

移動互聯(lián)網(wǎng)的一個核心思想就是“集體智慧”,基于協(xié)同過濾的推薦策略的基本思想就是基于大眾行為,為每個用戶提供個性化的推薦,從而使用戶能更快速更準(zhǔn)確的發(fā)現(xiàn)所需要的信息。

產(chǎn)品角度口水話、面試交流點(diǎn):

從產(chǎn)品角度分析,現(xiàn)今比較成功的推薦引擎,比如 Amazon(鼻祖),豆瓣(早期),頭條(最近發(fā)起者)、網(wǎng)易云、QQ、阿里淘寶、JD等都采用了協(xié)同過濾的方式,現(xiàn)在很多大廠、主流場景都用了混搭方式。但核心還是玩協(xié)同過濾的多,不管如何,后期都離不開這一步。

其中類似維基百科這些,計算出來的推薦是開放的,可以共用他人的經(jīng)驗,很好的支持用戶發(fā)現(xiàn)潛在的興趣偏好。

基于協(xié)同過濾的推薦策略也有不同的分支,它們有不同的實用場景和推薦效果,PM可以根據(jù)自己產(chǎn)品、業(yè)務(wù)應(yīng)用的實際情況選擇合適的方法,異或組合不同的方法得到更好的推薦效果。

其他口水話:這篇定位依然是推薦引擎-理論搭建、掃盲系列之二。

第一篇是:理論體系]搭建-推薦體系:掃盲(一),系列一共有2-3篇,下一篇可能會選一種更加主流算法去解決大數(shù)據(jù)的應(yīng)用。

如我們常見到策略PM類招聘JD寫著:“聚類算法”,推薦。那么這個幾百80%都會出現(xiàn),我后面抽空再給大家介紹。

以上,謝謝,希望對飯友們有幫助。

 

本文由 @鳳城狂客 原創(chuàng)發(fā)布于人人都是產(chǎn)品經(jīng)理。未經(jīng)許可,禁止轉(zhuǎn)載

題圖來自Unsplash,基于CC0協(xié)議

更多精彩內(nèi)容,請關(guān)注人人都是產(chǎn)品經(jīng)理微信公眾號或下載App
評論
評論請登錄
  1. 寫的真棒,受益匪淺

    來自廣東 回復(fù)
  2. 基于內(nèi)容的協(xié)同過濾為什么不是根據(jù)用戶自身的歷史偏好推薦相似item而是要統(tǒng)計所有用戶呢?

    來自江西 回復(fù)
  3. 想問一下,用戶CF和物品CF結(jié)合是怎么弄得,這個沒看懂

    回復(fù)
  4. 感謝作者

    來自浙江 回復(fù)
  5. 舉例男友給女友送禮物那段,真是太赤裸裸了

    來自上海 回復(fù)
  6. 真棒

    來自北京 回復(fù)
  7. 牛逼

    來自上海 回復(fù)
  8. user CF和item CF多樣性和精度,后面寫的矛盾了,先說item CF多樣性好,后又說item CF多樣性不足。

    來自北京 回復(fù)
    1. 這里的多樣性需要區(qū)分“當(dāng)前用戶的推薦列表多樣性”和“系統(tǒng)多樣性”。item CF是“系統(tǒng)多樣性”好,但是對單個用戶的“推薦列表多樣性”不足

      來自廣東 回復(fù)
    2. 正解

      來自廣東 回復(fù)
  9. 就是太長了,如果可以再分篇就更好了,畢竟在移動閱讀,很多人沒信心看完這么長的文章

    回復(fù)
  10. 很有深度的文章

    回復(fù)
  11. 有點(diǎn)東西啊!策略菜鳥看了一個多小時,表示文章很接地氣,有收獲,感謝作者~

    來自北京 回復(fù)
  12. 寫得真的很好

    來自廣東 回復(fù)