CB算法:基于內(nèi)容的推薦算法的基本原理

4 評(píng)論 17564 瀏覽 89 收藏 10 分鐘

推薦系統(tǒng)能有效幫助用戶快速發(fā)現(xiàn)感興趣和高質(zhì)量的信息,增加用戶使用產(chǎn)品的時(shí)長。推薦系統(tǒng)越精準(zhǔn),用戶的使用體驗(yàn)就越好,產(chǎn)品越容易留住用戶。近幾年,今日頭條、抖音等產(chǎn)品的誕生,也使得基于內(nèi)容的推薦算法這一古老算法的崛起。本文將簡(jiǎn)要闡述基于內(nèi)容的推薦算法的基本原理,enjoy~

基于內(nèi)容的推薦算法是眾多推薦算法中的一種,是一種機(jī)器學(xué)習(xí)算法??梢哉f推薦系統(tǒng)算法是機(jī)器學(xué)習(xí)算法應(yīng)用在我們生活中最普及的算法?;趦?nèi)容的推薦算法(Content-Based Recommendations CB),下文中簡(jiǎn)稱CB。

CB的思想非常簡(jiǎn)單:根據(jù)用戶過去喜歡的內(nèi)容,為用戶推薦和他過去喜歡的內(nèi)容相似的內(nèi)容。而關(guān)鍵就在于這里的內(nèi)容相似性的度量,這才是算法運(yùn)用過程中的核心。

CB的過程一般包括以下三步:

  1. 內(nèi)容表征(Item Representation):為每個(gè)item抽取出一些特征來表示此item;
  2. 特征學(xué)習(xí)(Profile Learning):利用一個(gè)用戶過去喜歡(及不喜歡)的item的特征數(shù)據(jù),來學(xué)習(xí)出此用戶的喜好特征(profile);
  3. 生成推薦列表(Recommendation Generation):通過比較上一步得到的用戶特征(profile)與候選item的特征,為此用戶推薦一組相關(guān)性最大的item。

我們通過一個(gè)例子,來簡(jiǎn)單體驗(yàn)一下CB的過程。我們以今日頭條為例,今日頭條利用基于內(nèi)容的文本推薦算法,在今日頭條中,一個(gè)item就是一篇文章。

1. 內(nèi)容表征

首先要從文章內(nèi)容中抽取出代表它們的屬性。常用的方法就是利用出現(xiàn)在一篇文章中的詞來代表這篇文章,而每個(gè)詞對(duì)應(yīng)的權(quán)重往往使用加權(quán)技術(shù)算法來計(jì)算。利用這種方法,一篇抽象的文章就可以使用具體的一個(gè)向量來表示了。

應(yīng)用中的item會(huì)有一些屬性對(duì)它進(jìn)行描述。這些屬性通常可以分為兩種:結(jié)構(gòu)化的屬性與非結(jié)構(gòu)化的屬性。

結(jié)構(gòu)化的屬性就是這個(gè)屬性的意義比較明確,其取值限定在某個(gè)范圍;而非結(jié)構(gòu)化的屬性往往其意義不太明確,取值也沒什么限制,不好直接使用。

比如在社交網(wǎng)站上,item是人,一個(gè)item會(huì)有結(jié)構(gòu)化屬性如身高、學(xué)歷、籍貫等,也會(huì)有非結(jié)構(gòu)化屬性,如item寫的個(gè)人簽名,發(fā)布的內(nèi)容等等。對(duì)于結(jié)構(gòu)化數(shù)據(jù),可以拿來就用;但對(duì)于非結(jié)構(gòu)化數(shù)據(jù)(如文章),往往要先把它轉(zhuǎn)化為結(jié)構(gòu)化數(shù)據(jù)后才能在模型里加以使用。

真實(shí)場(chǎng)景中碰到最多的非結(jié)構(gòu)化數(shù)據(jù)可能就是文章了。那么,如何將非結(jié)構(gòu)化的文章結(jié)構(gòu)化呢?

我們要表征的所有文章集合為 D={d1,d2,…,dN},而所有文章中出現(xiàn)的詞的集合為T={t1,t2,…,tn}。也就是說,我們有N篇要處理的文章,而這些文章里包含了n個(gè)不同的詞。

最終要使用一個(gè)向量來表示一篇文章,比如第j篇文章被表示為dj={w1j,w2j,…,wnj},其中wij表示第i個(gè)詞在文章j中的權(quán)重,值越大表示越重要。

所以,為了表示第j篇文章,現(xiàn)在關(guān)鍵的就是如何計(jì)算dj各分量的值了。全部i個(gè)詞在文章j中對(duì)應(yīng)的權(quán)重可以通過TF-IDF(一種用于信息檢索與數(shù)據(jù)挖掘的常用加權(quán)技術(shù))計(jì)算獲得。

通過以上的方法,我們得到了每個(gè)item特征的表示(每篇文章中,全部詞的權(quán)重向量模型)。

2. 特征學(xué)習(xí)

假設(shè)用戶已經(jīng)對(duì)一些item做出了喜好判斷,喜歡其中的一部分item,不喜歡其中的另一部分。那么,這一步要做的就是通過用戶過去的這些喜好判斷,為他形成一個(gè)模型。

通過這個(gè)模型,就可以判斷用戶是否會(huì)喜歡一個(gè)新的item。所以,我們要解決的是一個(gè)有監(jiān)督的分類問題,這里可以采用一些機(jī)器學(xué)習(xí)的分類算法。

2.1 K近鄰(KNN)算法

對(duì)于一個(gè)新的item,KNN算法首先去尋找該用戶已經(jīng)評(píng)判過并且與此新item最相似的k個(gè)item。

然后依據(jù)該用戶對(duì)這k個(gè)item的喜好程度來判斷其對(duì)此新item的喜好程度。

對(duì)于這個(gè)方法,比較關(guān)鍵的就是如何通過item的屬性向量計(jì)算item之間的相似度。對(duì)于結(jié)構(gòu)化數(shù)據(jù),相似度計(jì)算可以使用歐式距離,而如果使用向量空間模型來表示item的話,則相似度計(jì)算可以使用cosine(余弦相似度)。

2.2 決策樹算法

當(dāng)item的屬性較少而且是結(jié)構(gòu)化屬性時(shí),決策樹會(huì)是個(gè)很好的選擇。

這種情況下決策樹可以產(chǎn)生簡(jiǎn)單直觀、容易讓人理解的決策結(jié)果。但是如果item的屬性較多,且都來源于非結(jié)構(gòu)化數(shù)據(jù),例如文章,那么決策樹的效果可能并不會(huì)很好。

2.3 樸素貝葉斯算法

樸素貝葉斯算法經(jīng)常被用來做文本分類,假設(shè)在給定一篇文章的類別后,其中各個(gè)詞出現(xiàn)的概率相互獨(dú)立。

由于樸素貝葉斯算法的代碼實(shí)現(xiàn)比較簡(jiǎn)單,所以往往是很多分類問題里最先被嘗試的算法。

我們當(dāng)前的問題中包括兩個(gè)類別:用戶喜歡的item,以及他不喜歡的item。在給定一個(gè)item的類別后,其各個(gè)屬性的取值概率互相獨(dú)立。我們可以利用該用戶的歷史喜好數(shù)據(jù)進(jìn)行訓(xùn)練,之后再用訓(xùn)練好的貝葉斯分類器對(duì)給定的item做分類。

3. 生成推薦列表

如果特征學(xué)習(xí)中我們使用了分類模型,那么只要把模型預(yù)測(cè)的用戶最可能感興趣的n個(gè)item作為推薦返回給用戶即可。

4. CB的缺點(diǎn)

4.1 無法挖掘出用戶的潛在興趣

CB的推薦只依賴于用戶過去對(duì)某些item的喜好,它產(chǎn)生的推薦也都會(huì)和用戶過去喜歡的item相似。如果一個(gè)用戶以前只看與科技有關(guān)的文章,那CB只會(huì)給他推薦更多與科技相關(guān)的文章,它不會(huì)知道用戶可能還喜歡政治類的文章。

4.2 無法為新用戶產(chǎn)生推薦

新用戶沒有喜好歷史,自然無法獲得他的特征,所以也就無法為他產(chǎn)生推薦內(nèi)容了。

5. 總結(jié)

由于CB算法的一些缺點(diǎn),目前大部分的推薦系統(tǒng)都是以其他算法為主(如協(xié)同過濾算法),而輔助使用CB來解決主算法在某些情況下的不精確性(如解決新item問題)。

但CB的作用是不可否認(rèn)的,只要具體應(yīng)用中有可用的屬性,那么基本都能在系統(tǒng)里看到CB的影子。組合CB和其他推薦算法的方式有很多,最常用的可能是就用CB來過濾其他算法的候選集,把一些不太合適的候選去掉。

我們也可以看到,機(jī)器學(xué)習(xí)算法是推薦系統(tǒng)的基石與核心,未來,隨著機(jī)器學(xué)習(xí)、深度學(xué)習(xí)算法的普及,相信也會(huì)出現(xiàn)更加優(yōu)秀的組合推薦算法。

#專欄作家#

流年,人人都是產(chǎn)品經(jīng)理專欄作家?;ヂ?lián)網(wǎng)產(chǎn)品設(shè)計(jì)師,4年互聯(lián)網(wǎng)產(chǎn)品設(shè)計(jì)經(jīng)驗(yàn)。擅長用戶體驗(yàn)設(shè)計(jì),喜歡鉆研需求功能背后的技術(shù)實(shí)現(xiàn)方式;在成為綜合型產(chǎn)品設(shè)計(jì)師的道路上不斷努力前進(jìn)!

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

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

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

    來自安徽 回復(fù)
  2. 原來的一些權(quán)重是如何收集的。是不是按照查閱次數(shù)與收聽次數(shù)來確定的。

    來自上海 回復(fù)
    1. 權(quán)重的計(jì)算會(huì)涉及到詞在文章中出現(xiàn)的次數(shù),和所有文章中包含這個(gè)詞的文章的數(shù)量,有了這兩個(gè)數(shù)據(jù)再通過tf-idf去計(jì)算權(quán)重。

      來自天津 回復(fù)