圖解推薦系統(tǒng)
編輯導(dǎo)語(yǔ):推薦系統(tǒng)(recommender systems),是利用信息過濾技術(shù)向用戶推薦其可能感興趣的信息,它是有別于信息分類和信息搜索的信息處理方式。我們用言語(yǔ)來解釋推薦系統(tǒng),似乎總是感覺晦澀難懂,本文作者為我們圖解了推薦系統(tǒng)。
回顧20多年前推薦算法提出的90年代,也是中國(guó)互聯(lián)網(wǎng)起步的時(shí)候,瀏覽門戶網(wǎng)站即可滿足我們對(duì)數(shù)字世界探索的大部分需求,彼時(shí)是‘人找物’,系統(tǒng)推薦的應(yīng)用空間不大。
時(shí)間在推移,內(nèi)容亦在豐富,在當(dāng)前海量信息爆炸的時(shí)代,五花八門的內(nèi)容琳瑯滿目,讓人應(yīng)接不暇。此時(shí)需要‘物能找人’,因此推薦系統(tǒng)將合適的內(nèi)容推送給合適的用戶實(shí)在是恰逢其會(huì)。
一、系統(tǒng)初探
那么推薦系統(tǒng)是如何運(yùn)轉(zhuǎn)的呢?為什么它知道我在某寶上要買的是咖啡而不是啤酒,然后在App的首頁(yè)呈現(xiàn)?
回答這個(gè)問題,我們先從推薦系統(tǒng)流程的角度著手了解:系統(tǒng)將一個(gè)物品/內(nèi)容推薦給用戶主要經(jīng)歷兩個(gè)步驟,即召回與排序。
當(dāng)人們?yōu)g覽一個(gè)電商網(wǎng)站,比如女生會(huì)關(guān)注種草喜歡的美妝博主、收藏某一品牌的護(hù)膚品、加購(gòu)了三只松鼠的堅(jiān)果等到雙十一叫男票清空購(gòu)物車……這一系列的行為反應(yīng)了你對(duì)某些商品的偏好,致使系統(tǒng)能大致勾勒出你的興趣。
在購(gòu)物網(wǎng)站上會(huì)有很多與你興趣相似的用戶,你們有著類似的喜好,Ta喜歡的東西大概率你也會(huì)覺得不錯(cuò),通過行為統(tǒng)計(jì)尋找你們的相似度就可以找到那些同類用戶喜歡的而你還沒有接觸過的商品。
另外,商品之間也有相似的屬性,比如《魔鬼經(jīng)濟(jì)學(xué)》與《牛奶可樂經(jīng)濟(jì)學(xué)》是有關(guān)行為經(jīng)濟(jì)學(xué)的著作,一般我們就會(huì)見到電子書網(wǎng)站會(huì)為看過《魔鬼經(jīng)濟(jì)學(xué)》的讀者推薦《牛奶可樂經(jīng)濟(jì)學(xué)》。
如上描述的把相似的用戶與相似的物品匹配起來,從而篩選出用戶感興趣物品的過程就是召回。
召回階段取回的物品數(shù)量通常都比較大,可能在十萬百萬量級(jí)以上,進(jìn)一步地,推薦引擎結(jié)合多種因素考量(比如業(yè)務(wù)特征、人工干預(yù)等),精細(xì)篩選出Top100款甚至更少的物品推薦給用戶,這就是排序的過程。
從系統(tǒng)流程可以看出,相似度是推薦系統(tǒng)的核心環(huán)節(jié)。那么用戶之間、物品之間的相似度怎么定義、如何計(jì)算呢?
二、找到相似的用戶/物品
1. 相似度計(jì)算
對(duì)于推薦系統(tǒng)來說,通常是基于向量來確定兩兩用戶或兩個(gè)物品是否相似,即系統(tǒng)首先要把用戶(用戶屬性或用戶行為偏好)、物品(物品特征)向量化。
比如有5件商品:夾克、連衣裙、球鞋、網(wǎng)球拍、貝雷帽,1表示用戶購(gòu)買過該商品,0表示未購(gòu)買過。用戶P買過夾克、球鞋、網(wǎng)球拍,用戶Q買過連衣裙、網(wǎng)球拍、貝雷帽,則用向量表示用戶P和用戶Q就是R(P)=(1,0,1,1,0),R(Q)=(0,1,0,1,1)。
那么如何計(jì)算兩個(gè)用戶是否相似呢?
計(jì)算相似度的公式有很多,如‘歐幾里德距離’、‘皮爾遜相關(guān)系數(shù)’、‘余弦相似度’等。余弦相似度是常用的計(jì)算方法,即當(dāng)兩個(gè)向量之間的夾角越小,則兩個(gè)向量越相似。
讓我們回憶一下中學(xué)關(guān)于兩個(gè)向量u、v的余弦相似度公式:
利用公式,可以知道用戶P(1,0,1,1,0)和用戶Q(0,1,0,1,1)之間的相似度為:
2. 最近的鄰居
所謂物以類聚、人以群分,系統(tǒng)當(dāng)然不需要按相似度遍歷所有數(shù)據(jù),一般推薦引擎只需要尋找一批與目標(biāo)(用戶/物品)最相似的‘鄰居’組成一類群體進(jìn)而做物品推薦。
接下來看看最近的鄰居是如何確定的:以用戶間的相似度舉例,想象一個(gè)二維平面,每個(gè)用戶代表一個(gè)點(diǎn),用戶(點(diǎn)與點(diǎn))之間的距離就是相似度的大小;計(jì)算用戶①的若干個(gè)最近鄰,一種方案就是以目標(biāo)用戶①為圓心,設(shè)定一個(gè)距離K,落在半徑K的圓中的所有用戶就是①最近的‘鄰居’。
三、推薦算法類型
上面介紹了如何計(jì)算相似度和尋找最相似的‘鄰居’,接下來就要探尋推薦系統(tǒng)的核心——推薦算法。通常,推薦算法可以分為三類:基于屬性相似度的推薦、基于協(xié)同過濾推薦、基于模型推薦。
1. 基于屬性相似度的推薦
基于屬性相似度的推薦是一種基礎(chǔ)的推薦算法,又可分為按用戶屬性的相似度推薦和按物品屬性的相似度推薦。
用戶屬性的相似度推薦,即按用戶的年齡、性別、地域等基礎(chǔ)特征建模,計(jì)算用戶之間的相似度,把用戶A喜歡的物品推薦給與他類似的用戶B。
物品屬性的相似度推薦,即按物品的屬性特征(以音樂舉例,如音樂類型、歌手、播放時(shí)長(zhǎng)等)建模,用戶喜歡鋼琴曲,而小提琴曲與鋼琴曲都可以劃分為輕音樂,則系統(tǒng)把小提琴曲推薦給用戶。
上述基于屬性相似度的推薦,好處是推薦解釋性較強(qiáng),易于理解,且不需要過多依賴用戶行為的歷史數(shù)據(jù),對(duì)于長(zhǎng)尾/上新的物品都能做到很好的曝光。
然而這類算法的缺點(diǎn)也很明顯,如算法特征過于簡(jiǎn)單(僅包括用戶或物品的基礎(chǔ)屬性),而人們的喜好通常會(huì)隨環(huán)境、時(shí)間成長(zhǎng)等動(dòng)態(tài)變化,無法很好的滿足用戶需求多樣性。
2. 基于協(xié)同過濾推薦
協(xié)同過濾,顧名思義就是指由相似興趣的用戶們組成‘鄰居’互相協(xié)作,通過不斷的與系統(tǒng)發(fā)生交互從而持續(xù)過濾掉用戶不感興趣的內(nèi)容,它是一種群體智慧效應(yīng)的體現(xiàn)。
從用戶與內(nèi)容的角度又可劃分為:基于用戶的協(xié)同過濾(UserCF)和基于物品的協(xié)同過濾(ItemCF)。
1)基于用戶的協(xié)同過濾(UserCF)
基于用戶的協(xié)同過濾是通過用戶的行為去尋找與其相似的用戶進(jìn)行推薦,與上一節(jié)基于用戶屬性的推薦對(duì)比,兩者的核心區(qū)別是計(jì)算相似度的定義不同,基于用戶屬性推薦只考慮用戶的靜態(tài)特征,而UserCF是在用戶的歷史行為偏好中計(jì)算相似度。
基于用戶協(xié)同過濾預(yù)測(cè)用戶u對(duì)物品i的興趣程度p(ui)的公式如下:
其中,S (u , K )是包含和用戶u興趣最接近的K個(gè)用戶,N (i)是對(duì)物品i有過行為的用戶集合,w(uv)是用戶u與用戶v的興趣相似度,r(vi)代表用戶v對(duì)物品i的行為興趣評(píng)分。
從公式可以看出,基于用戶的協(xié)同過濾算法主要有兩步:一是用戶之間的相似度,二是用戶與內(nèi)容之間的行為偏好分?jǐn)?shù),通過圖形拆解算法的計(jì)算路徑如下圖。
2)基于物品的協(xié)同過濾(ItemCF)
基于物品的協(xié)同過濾是通過用戶對(duì)物品的行為偏好找到與用戶喜歡物品的相似物品進(jìn)行推薦,簡(jiǎn)單理解即喜歡物品1的用戶大多也喜歡物品2。
基于物品的協(xié)同過濾預(yù)測(cè)用戶u對(duì)物品j的興趣程度p(uj)的公式如下:
其中,N(u)是用戶喜歡的物品的集合,S(j,K)是和物品j最相似的K個(gè)物品的集合,w(ji)是物品j和i的相似度,r(ui)是用戶u對(duì)物品i的興趣分?jǐn)?shù)。
同UserCF,基于物品的協(xié)同算法主要也是兩步:一是物品之間的相似度,二是用戶產(chǎn)生過偏好行為的物品評(píng)價(jià)分?jǐn)?shù),圖示計(jì)算路徑如下。
3. 基于模型的推薦
基于模型的推薦主要是利用機(jī)器學(xué)習(xí)的方法挖掘用戶、物品、用戶歷史行為偏好之間的關(guān)系,從而找到用戶可能感興趣的物品進(jìn)行推薦。
機(jī)器學(xué)習(xí)包括深度學(xué)習(xí)的推薦算法在業(yè)界已經(jīng)提出了很多種,本文僅介紹一種經(jīng)典的模型——基于隱語(yǔ)義的模型推薦(LFM)。如下圖形式是把所有用戶和物品按用戶對(duì)物品的偏好程度畫成一張表中,推薦系統(tǒng)的工作就是要預(yù)測(cè)那些表格中的空白值。
為了找到用戶喜歡的物品,我們可以先把用戶按其興趣偏好進(jìn)行分類,比如在買手機(jī)的時(shí)候有的人會(huì)關(guān)注品牌,有的人喜歡尺寸要大、有人在意型號(hào)、有人對(duì)價(jià)格敏感等等。
同樣,物品也可以按這些用戶偏好(品牌、尺寸、型號(hào)、價(jià)格)進(jìn)行分類。
隱語(yǔ)義模型就是要找到用戶-偏好、物品-偏好這兩個(gè)關(guān)系矩陣(如下圖),然后通過矩陣計(jì)算的方式合成用戶-物品的完整矩陣,求得用戶對(duì)物品的推薦分?jǐn)?shù)。
系統(tǒng)求解的過程是隨機(jī)生成初始矩陣,推薦結(jié)果要與原始數(shù)據(jù)矩陣中有值的項(xiàng)盡可能相近,這就轉(zhuǎn)換成了機(jī)器學(xué)習(xí)求最優(yōu)解的問題。
相比協(xié)同過濾,無論UserCF或ItemCF,能夠影響推薦效果的往往是少部分的用戶行為和物品,而隱語(yǔ)義模型則通過機(jī)器挖掘隱藏在數(shù)據(jù)中的偏好從而進(jìn)行推薦,通常能更充分的探尋到數(shù)據(jù)中的信息,推薦效果也更準(zhǔn)確。
但因?yàn)槠眯畔]有具體物理意義,所以其缺點(diǎn)也同樣明顯,無法對(duì)推薦結(jié)果做出合理的解釋。
四、談信息繭房
至此,推薦系統(tǒng)的大致原理和算法模型已經(jīng)介紹完畢了。
在結(jié)束之前,最后簡(jiǎn)單聊聊信息繭房問題。在當(dāng)前的互聯(lián)網(wǎng)世界中,無論圖文信息流亦或短視頻應(yīng)用,到處充斥著個(gè)性化推薦算法,很多用戶擔(dān)心終將會(huì)被禁錮在由狹隘偏好所編制的繭牢中。
其實(shí)破解信息繭房就是在回答一個(gè)問題,即什么是好的推薦系統(tǒng)?
從技術(shù)的角度,多樣性推薦既是系統(tǒng)需要納入的算法之一,也是衡量系統(tǒng)效果的指標(biāo),所以一份推薦結(jié)果并不會(huì)永遠(yuǎn)只有用戶曾經(jīng)贊過看過的內(nèi)容。同樣,從策略的角度,PM們也需要關(guān)注打散、重排、去重過濾邏輯是否合理有效,可以借助線上badcase持續(xù)跟蹤優(yōu)化。
意料之外,情理之中,也許是對(duì)推薦系統(tǒng)最好的詮釋。
作者:策略伽;公眾號(hào):策略伽
本文由 @策略伽 原創(chuàng)發(fā)布于人人都是產(chǎn)品經(jīng)理,未經(jīng)作者許可,禁止轉(zhuǎn)載。
題圖來自Unsplash,基于CC0協(xié)議。
過于簡(jiǎn)單
感謝!學(xué)習(xí)了!
寫的太晦澀了,公示也沒介紹清楚就一筆帶過。。。
公式是數(shù)學(xué)問題了,余弦相似度那個(gè)好像是大學(xué)高數(shù)?
咱只要告訴開發(fā),就這個(gè)公式,請(qǐng)參考算去吧。。。
自己都不知道要做什么,好意思跟別人說