分析:基于文本內(nèi)容推薦和協(xié)同過(guò)濾推薦

4 評(píng)論 13287 瀏覽 150 收藏 19 分鐘

當(dāng)用戶(hù)看完某個(gè)感興趣的事物時(shí),推薦系統(tǒng)會(huì)給你推薦類(lèi)似你喜歡的東西,而本文主要分析一下關(guān)于協(xié)同過(guò)濾推薦和基于文本內(nèi)容推薦的這兩種推薦方式。

(1)需求背景

  • 當(dāng)用戶(hù)表示出對(duì)一些內(nèi)容感興趣的時(shí)候,滿(mǎn)足用戶(hù)的一個(gè)拓展的興趣;比如:feed流產(chǎn)品,讓你對(duì)新的內(nèi)容既有熟悉感并且有新穎感,這樣的話(huà)就能夠促進(jìn)用戶(hù)進(jìn)一步內(nèi)容消費(fèi)。
  • 一般是在內(nèi)容消費(fèi)完結(jié)時(shí)推薦,比如:看完一部小說(shuō),會(huì)給你推薦通類(lèi)型的小說(shuō),看完一部鋼鐵俠的電影,會(huì)給你推薦鋼鐵俠系列電影。

相似內(nèi)容推薦的核心邏輯——即推薦用戶(hù)在當(dāng)前當(dāng)刻下最感興趣的或者與這個(gè)內(nèi)容最相似的一個(gè)內(nèi)容。

(2)業(yè)務(wù)目標(biāo)

業(yè)務(wù)目標(biāo):推薦內(nèi)容用戶(hù)消費(fèi)行為的最大化

(3)衡量標(biāo)準(zhǔn)

  • 簡(jiǎn)單的方式就是CTR的方式,用戶(hù)點(diǎn)擊的數(shù)量/推薦的數(shù)量。
  • 用戶(hù)行為消費(fèi)的深淺,比如:一個(gè)網(wǎng)頁(yè)的用戶(hù)停留事件,網(wǎng)頁(yè)的瀏覽完成時(shí)間。

基于文本內(nèi)容推薦Content-base

1. 基本原理

使用內(nèi)容的元數(shù)據(jù),或者針對(duì)內(nèi)容的自身的分析,對(duì)于任意內(nèi)容A、B,計(jì)算AB之間兩兩相似度Sab,推薦給用戶(hù)相似度最高的N個(gè)內(nèi)容。

2. 關(guān)鍵路徑

(1)定義度量標(biāo)準(zhǔn)

標(biāo)準(zhǔn)類(lèi)似于坐標(biāo)軸,例如:人有很多屬性,性別、年齡、身高、體重、文化程度、專(zhuān)業(yè)技能等。

這些共同構(gòu)成的一個(gè)多維空間,每一個(gè)特定的人,在每一個(gè)維度上面都會(huì)有一個(gè)具體的值,這樣就實(shí)現(xiàn)對(duì)一個(gè)特定人的量化表示。實(shí)現(xiàn)從一個(gè)人的個(gè)體到一個(gè)N維度的向量的一個(gè)映射,并且由于面對(duì)的需求不一樣,我們構(gòu)建的一個(gè)特征空間可能是不一樣的。

繼續(xù)上面的例子,如果我們要挑選好的戰(zhàn)士,那么特征空間可能就包括性別、年齡、身高、體重,等維度基本就夠了。那如果要挑選好的產(chǎn)品經(jīng)理,這些維度肯定不不夠全面。

(2)對(duì)內(nèi)容進(jìn)行量化

對(duì)各個(gè)內(nèi)容,如:文章、商品,通過(guò)上面定義的維度進(jìn)行量化。

(3)計(jì)算相似度

  1. 算距離度量,及文本在立體在空間上存在的距離,距離越遠(yuǎn)說(shuō)明個(gè)體間的差異越大。
  2. 算相似度度量,相似度度量的值越小,說(shuō)明個(gè)體間相似度越小,差異越大。

距離度量和相似度量是負(fù)相關(guān)的——距離小、“離得近”、相似度高;距離大、“離得遠(yuǎn)”、相似度低。

3. 舉例

(1)定義度量標(biāo)準(zhǔn):全體有益的詞,如果兩篇文章中相同的詞匯越多,則認(rèn)為兩篇文章越相似。

首先我們需要對(duì)文章進(jìn)行處理,通過(guò)切詞,去掉沒(méi)有意義的形容詞,得到關(guān)鍵詞的一個(gè)集合,這樣完成了一篇文章到一個(gè)集合的映射。

(2)對(duì)內(nèi)容進(jìn)行量化

如果直接對(duì)關(guān)鍵詞量化,首先想到的是統(tǒng)計(jì)一下文檔中每個(gè)詞出現(xiàn)的頻率(TF),詞頻越高,這個(gè)詞就越重要。但是統(tǒng)計(jì)完你可能會(huì)發(fā)現(xiàn)你得到的關(guān)鍵詞基本都是“的”、“是”、“為”這樣沒(méi)有實(shí)際意義的詞(停用詞)。因此,我們需要通過(guò)TF-IDF的方法進(jìn)行預(yù)處理。

TF-IDF指在上出現(xiàn)得越頻繁的一些詞,也就是說(shuō)越是大眾貨色的詞。那我們認(rèn)為,對(duì)于區(qū)分不同內(nèi)容的貢獻(xiàn)度就越低。他們的權(quán)重應(yīng)該降低,這個(gè)權(quán)重就是(IDF)。

字詞的重要性隨著它在文件中出現(xiàn)的次數(shù)成正比增加,但同時(shí)會(huì)隨著它在語(yǔ)料庫(kù)中出現(xiàn)的頻率成反比下降。

舉一個(gè)例子說(shuō)明一下:

  • 文章1:我喜歡動(dòng)漫電視??;
  • 文章2:我愛(ài)科幻動(dòng)作電影;
  • 文章3:我喜歡動(dòng)畫(huà)科幻電影。

在計(jì)算IDF時(shí),如果該詞語(yǔ)不在語(yǔ)料庫(kù)中,就會(huì)導(dǎo)致被除數(shù)為零,因此一般情況下會(huì)加1為了簡(jiǎn)便計(jì)算,分母只包含改詞的文檔數(shù),公式如下:

計(jì)算結(jié)果如下:

  • 文章1:(0.045,0,0.12,0,0.045,0,0,0)
  • 文章2:(0,0.096,0,0.036,0,0.096,0.096,0.036)
  • 文章3:(0.036,0,0,0.036,0.036,0,0.036,0)

在此過(guò)程中完成了文章向向量的轉(zhuǎn)化。

(3)計(jì)算相似度

算距離度量常用的算法:

歐式距離

歐式距離是最常見(jiàn)的距離度量,衡量的是多維空間中各點(diǎn)之間的絕對(duì)距離,公式如下:

根據(jù)距離度量越大差異越大,相似度如下:文章1,文章3> 文章2,文章3> 文章1,文章2。

閔可夫斯基距離

P是一個(gè)變參數(shù),當(dāng)?P=1?時(shí),就是曼哈頓距離當(dāng)?P=2?時(shí),就是歐氏距離。

曼哈頓距離

和歐氏距離非常相似(把平方換成了絕對(duì)值,拿掉了根號(hào)),公式如下:

  1. Dist(文章1,文章2=|0.045|+|0.096|+|0.12|+|0.036|+|0.045|+|0.096|+|0.036|=0.47
  2. Dist(文章1,文章3)=0.21
  3. Dist(文章2,文章3)=0.264

與歐式距離結(jié)果類(lèi)似。

算相似度度量, 常用的算法:

余弦相似度

余弦相似度用向量空間中兩個(gè)向量夾角的余弦值,作為衡量?jī)蓚€(gè)個(gè)體間差異的大小。相比距離度量,余弦相似度更加注重兩個(gè)向量在方向上的差異,而非距離或長(zhǎng)度上。

公式如下:

根據(jù)相似度量越小,相似度如下:文章1,文章3> 文章2,文章3> 文章1,文章2。

皮爾遜相似系數(shù)

即相關(guān)分析中的相關(guān)系數(shù)r,分別對(duì)X和Y基于自身總體標(biāo)準(zhǔn)化后計(jì)算空間向量的余弦?jiàn)A角。

公式如下:

Jaccard相似度

卡德相似度,指的是文本A與文本B中交集的字?jǐn)?shù)除以并集的字?jǐn)?shù),杰卡德相似度與文本的位置、順序均無(wú)關(guān),并且公式非常簡(jiǎn)單:

  • Jaccard(文章1,文章2) =0
  • Jaccard(文章1,文章3)=3/8
  • Jaccard(文章2,文章3)=3/8

相似度結(jié)果如下:文章2,文章3=文章1,文章3>文章1,文章2。

使用哪種方法計(jì)算相似度都可以,沒(méi)有一個(gè)明確的答案誰(shuí)好誰(shuí)壞,相反,我們?cè)趺炊x這種度量標(biāo)準(zhǔn),如何實(shí)現(xiàn)精細(xì)化的量化?這相對(duì)來(lái)說(shuō)更加重要些。

總結(jié)

優(yōu)點(diǎn):

  1. 用戶(hù)之間具有獨(dú)立性:每個(gè)用戶(hù)的推薦都是根據(jù)用戶(hù)自身的行為所獲得的,與其他人無(wú)關(guān);
  2. 好的可解釋性:你可以向用戶(hù)解釋為什么會(huì)給他推薦這些內(nèi)容;
  3. 冷啟動(dòng)快捷:對(duì)于新加入的物品可以直接在推薦結(jié)果中曝光。

缺點(diǎn):

  • 度量標(biāo)準(zhǔn)難定義:上面的例子為文章,我們可以通過(guò) tf-idf? 抽取文章的特征,但是我們?cè)诖蠖鄶?shù)的情況下很難從項(xiàng)目中抽取特征,比如:視頻等多媒體內(nèi)容中,信息的都蘊(yùn)含在高緯度中,很難進(jìn)行抽取。
  • 無(wú)法挖掘用戶(hù)的潛在興趣:我們推薦的內(nèi)容只是根據(jù)用戶(hù)過(guò)去的喜好,因此推薦的內(nèi)容也跟用戶(hù)過(guò)去喜好的相似。
  • 新用戶(hù)無(wú)法推薦:由于新用戶(hù)沒(méi)有瀏覽歷史,因此無(wú)法獲得用戶(hù)的喜好。

協(xié)同過(guò)濾推薦 Collaborative Filtering

1. 基本原理

對(duì)于每個(gè)用戶(hù),采集對(duì)每個(gè)內(nèi)容的消費(fèi)行為,量化構(gòu)建用戶(hù)-內(nèi)容行為矩陣,通過(guò)該矩陣的分析處理計(jì)算內(nèi)容-內(nèi)容的兩兩相似度。

2. 主要步驟

(1)用戶(hù)行為的采集

用戶(hù)的反饋通常分為兩種:一種是正反饋行為,一種是負(fù)反饋行為。

在正反饋行為中還分為顯性和隱形兩種,,比如說(shuō):評(píng)價(jià)、分享、點(diǎn)贊、收藏、下載等等。用戶(hù)主動(dòng)參與的,認(rèn)為是一個(gè)正反饋顯性的行為,比如:用戶(hù)頁(yè)面的停留時(shí)間,播放視頻等自然操作行為,認(rèn)為是一個(gè)正反饋的隱形行為。

但是由于我們?cè)趯?shí)際收集數(shù)據(jù)中,采集到用戶(hù)正反饋的顯性行為比較少,往往需要隱形的數(shù)據(jù)幫助我們推薦更精準(zhǔn)的量化。負(fù)反饋行為就是負(fù)向評(píng)價(jià),或者投反對(duì)票,不喜歡等。

(2)用戶(hù)-內(nèi)容行為矩陣構(gòu)建

劃定采集行為的窗口期:從現(xiàn)在開(kāi)始我要回溯多久的一個(gè)數(shù)據(jù),確定窗口期的原因在于我們的內(nèi)容會(huì)發(fā)生變化,并且用戶(hù)的興趣也可能發(fā)生變化,因此,具體的窗口期需要根據(jù)各個(gè)業(yè)務(wù)領(lǐng)域而定,比如新聞?lì)悾翱谄诓灰嗽O(shè)置過(guò)長(zhǎng)。

定義正負(fù)反饋行為的權(quán)重:一般來(lái)說(shuō),顯性的正反饋的權(quán)重大于隱形的正反饋,比如正向的評(píng)價(jià),肯定會(huì)比頁(yè)面停留時(shí)間的權(quán)重要高,而負(fù)反饋的權(quán)重需要根據(jù)用戶(hù)行為的深淺進(jìn)行判斷,比如:用戶(hù)如果明確點(diǎn)擊了不喜歡,或者一個(gè)負(fù)向的評(píng)價(jià),則可以認(rèn)為是一個(gè)權(quán)重比較高的行為。

數(shù)據(jù)的預(yù)處理(降噪和歸一化):

  • 降噪:數(shù)據(jù)是用戶(hù)使用過(guò)程中產(chǎn)生的,因此會(huì)存在大量的噪音和誤操作,需要將這些數(shù)據(jù)進(jìn)行過(guò)濾,比如:在用戶(hù)的生命周期中,只產(chǎn)生了一到兩次的正反饋行為,這種用戶(hù)的參考價(jià)值比較低。
  • 歸一化:目的是讓大的輸入,大的信號(hào)映射到小范圍內(nèi)。

假設(shè)一個(gè)產(chǎn)品用戶(hù)查看次數(shù)為X1、分享次數(shù)X2權(quán)重分別為Y1、Y2,加權(quán)求和 ?X1 Y1+ X2 Y2?。

假設(shè) X1屬于[10~1000],X2屬于[0~1],由于X1遠(yuǎn)遠(yuǎn)大于X2,那么X2 Y2就可以忽略不計(jì)了,整個(gè)加權(quán)求和就只由X1 Y1決定,小的信號(hào)被淹沒(méi)了。

常用的函數(shù):

  • y=(x-MinValue)/(MaxValue-MinValue) (歸一到0 1 之間)
  • y=0.1+(x-min)/(max-min)*(0.9-0.1)(歸一到0.1-0.9之間)

(3)矩陣分析計(jì)算相似度

此過(guò)程中依舊是基于向量,計(jì)算兩個(gè)向量之間的距離或者計(jì)算相似度,算法與上面CB中基本一致。

在用戶(hù)-行為矩陣中,有兩種維度計(jì)算方式:

  1. 將用戶(hù)對(duì)所有的物品的偏好,作為一個(gè)向量計(jì)算用戶(hù)之間的相似度。
  2. 將所有用戶(hù)對(duì)某個(gè)物品的偏好,作為向量來(lái)計(jì)算物品之間的相似度。

3. 例子

(1)用戶(hù)行為-矩陣的構(gòu)建

收集到如下正反饋行為及賦權(quán)規(guī)則:查看=1、收藏=4、分享=1。

用戶(hù)-行為矩陣:每個(gè)單元格代表了用戶(hù)在該影片的行為量化后的結(jié)果。

數(shù)據(jù)預(yù)處理

(2)計(jì)算相似度

基于用戶(hù)維度

首先計(jì)算用戶(hù)與其他用戶(hù)在商品維度上的相似性,每一個(gè)用戶(hù)都可以用一個(gè)向量表示,首先計(jì)算第一個(gè)用戶(hù)與其他用戶(hù)的余弦相似度。

小二的向量可以表示為(4,3,0,0,5,0),其他類(lèi)似:

Sim(小二,小三)>Sim(小二,小四)> Sim(小二,小五)> Sim(小二,小六) >Sim(小七)。

由結(jié)果可以看出,小二,小三的相似度高,和小七完全不相似,根據(jù)此計(jì)算每個(gè)用戶(hù)之間的相似度。

首先找到與小二最相似的N個(gè)用戶(hù),這個(gè)n=2,最相近的用戶(hù)為小三、小四,且除去小二的看過(guò)的影片還有影片3、影片4。

  • 影片3=(0.7*4+0.6*5)/(0.7+0.6)=4.5
  • 影片4=(0.6*3)/0.6=3.0

因此向用戶(hù)推薦影片3和影片4。

基于商品維度

每一個(gè)影片都可以通過(guò)向量表示,影片1的向量可以表示為(4,5,4,0,0,0)。

根據(jù)此計(jì)算每影片之間的相似度。

小二,看了影片1、影片2、影片5。

  • 與影片1相似的有:影片3、影片5
  • 與影片2相似的有:影片6、影片5
  • 與影片5相似的有:影片3、影片1、

應(yīng)該先用戶(hù)推薦:影片3和影片6。

總結(jié)

優(yōu)點(diǎn):不依賴(lài)對(duì)于內(nèi)容的理解,甚至可夸異構(gòu)內(nèi)容實(shí)現(xiàn)推薦。

缺點(diǎn):

  • 頭部?jī)?nèi)容的問(wèn)題:非常熱門(mén)的內(nèi)容容易覆蓋用戶(hù)行為更多,比如最近比較火的《延禧攻略》,如果僅僅基于行為來(lái)說(shuō)的話(huà),會(huì)有很多用戶(hù)都會(huì)產(chǎn)生正向的行為,這樣計(jì)算出來(lái)了,就會(huì)更很多內(nèi)容有相似性,因此還需要進(jìn)行降權(quán)處理。
  • 業(yè)務(wù)關(guān)聯(lián)導(dǎo)致的相關(guān)性:在內(nèi)容的生命周期內(nèi),由于業(yè)務(wù)關(guān)聯(lián)導(dǎo)致用戶(hù)既看了這個(gè),又看了那個(gè)。
  • 其他:容易受臟數(shù)據(jù)污染,新內(nèi)容冷啟動(dòng)慢,結(jié)果解釋性差。

 

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

題圖來(lái)自 Pixabay,基于 CC0 協(xié)議

更多精彩內(nèi)容,請(qǐng)關(guān)注人人都是產(chǎn)品經(jīng)理微信公眾號(hào)或下載App
評(píng)論
評(píng)論請(qǐng)登錄
  1. 寫(xiě)的非常棒

    來(lái)自北京 回復(fù)
  2. 非常優(yōu)秀了

    來(lái)自廣東 回復(fù)
  3. 學(xué)習(xí)了,本科論文就是用的jaccard相似度,現(xiàn)在都忘了

    回復(fù)
  4. 膩害

    回復(fù)