產品經理需要了解的推薦演算法之——個性化推薦演算法1(基於內容)

接前一篇產品經理需要了解的推薦演算法之--熱度推薦原理和實施 - 知乎專欄

3. 個性化推薦

OK,現在你的內容產品順利度過了早期階段,擁有了幾萬甚至十幾萬級別的日活,這時候發現熱度演算法導致用戶的閱讀內容過於集中,而個性化和長尾化的內容卻鮮有人看,看來是時候開展個性化推薦,讓用戶不僅能讀到大家都喜歡的內容,也能讀到只有自己感興趣的內容。

個性化推薦一般有兩種通用的解決方案,一是基於內容的相關推薦,二是基於用戶的協同過濾。由於基於用戶的協同過濾對用戶規模有較高要求,因此更多使用基於內容的相關推薦來切入。

3.1 基於內容的推薦演算法

這裡引入一個概念叫「新聞特徵向量」來標識新聞的屬性,以及用來對比新聞之間的相似度。我們把新聞看作是所有關鍵詞(標籤)的合集,理論上,如果兩個新聞的關鍵詞越類似,那兩個新聞是相關內容的可能性更高。 新聞特徵向量是由新聞包含的所有關鍵詞決定的。得到新聞特徵向量的第一步,是要對新聞內容進行到關鍵詞級別的拆分。

1)分詞

分詞需要有兩個庫,即正常的詞庫和停用詞庫。正常詞庫類似於一本詞典,是把內容拆解為詞語的標準;停用詞庫則是在分詞過程中需要首先棄掉的內容。

停用詞主要是沒有實際含義的例如「The」,「That」,「are」之類的助詞,表達兩個詞直接關係的例如「behind」,「under」之類的介詞,以及很多常用的高頻但沒有偏向性的動詞,例如「think」「give」之類;顯而易見這些詞語對於分詞沒有任何作用,因此在分詞前,先把這些內容剔除。

剩下對的內容則使用標準詞庫進行拆詞,拆詞方法包含正向匹配拆分,逆向匹配拆分,最少切分等常用演算法,這裡不做展開。

因為網路世界熱詞頻出, 標準詞庫和停用詞庫也需要不斷更新和維護,例如「藍瘦香菇」,「套路滿滿」之類的詞語,可能對最終的效果會產生影響,如果不及時更新到詞庫里,演算法就會「一臉懵逼」了。

因此推薦在網上查找或購買那些能隨時更新的詞庫,各種語種都有。

2)關鍵詞指標

前面已經說過,新聞特徵向量是該新聞的關鍵詞合集,那關鍵詞的重合度就是非常重要的衡量指標了;

那麼問題來了,如果兩條新聞的關鍵詞重合度達到80%,是否說明兩條新聞有80%的相關性呢?

其實不是,舉個例子:

a. 一條「廣州摩拜單車投放量激增」的新聞,主要講摩拜單車的投放情況,這篇新聞里「摩拜單車」是一個非常高頻的辭彙,新聞在結尾有一句「最近廣州天氣不錯,大家可以騎單車出去散心」。因此「廣州天氣」這個關鍵詞也被收錄進了特徵向量

b. 另外一條新聞「廣州回南天即將結束,天氣持續好轉」,這篇新聞結尾有一句「天氣好轉,大家可以騎個摩拜單車出門溜溜啦」,新聞裡面「廣州天氣」是非常高頻的辭彙,「摩拜單車」儘管被收錄,但只出現了一次;

因此這兩個新聞的關鍵詞雖然類似,講的卻是完全不同的內容,相關性很弱,如果只是看關鍵詞重合度,出現錯誤判斷的可能性就很高;所以特徵向量還需要有第二個關鍵詞的指標,叫新聞內頻率,稱之為TF(Term Frequency),衡量每個關鍵詞在新聞裡面是否高頻。

那麼問題來了,如果兩條新聞的關鍵詞重合度高,新聞中關鍵詞的頻率也相差無幾,是否說明相關性很強呢?

理論上是的,但又存在另外一種情況:如果我們新聞庫里所有的新聞都是講廣州的,廣州天氣,廣州交通,廣州經濟,廣州體育等,他們都是講廣州相關的情況,關鍵詞都包含廣州,天河,越秀,海珠(廣州各區)等,並且有著類似的頻率,因此演算法很容易將它們判斷為強相關新聞;從地域角度講,這種相關性確實很強,但從內容類別層面,其實沒有太多相關性,如果我是一個體育迷,你給我推薦天氣,交通之類的內容,就沒多大意義了。

因此引入第三個關鍵詞的指標,即關鍵詞在在所有文檔中出現的頻率的相反值,稱之為IDF(Inverse Document Frequency);為什麼會是相反值,因為一個關鍵詞在某條新聞出現的頻率最大,在所有文檔中出現的頻率越小,該關鍵詞對這條新聞的特徵標識作用越大。

這樣每個關鍵詞對新聞的作用就能被衡量出來即TFIDF=TF * IDF,這也就是著名的TF-IDF模型。

3) 相關性演算法

做完分詞和關鍵詞指標後,每一篇新聞的特徵就能用關鍵詞的集合來標識了:

其中word0,1,2...n是新聞的所有關鍵詞,tfidf0,1,2...n則是每個關鍵詞的tfidf值。

兩個新聞的相似度就能通過重合的關鍵詞的tfidf值來衡量了。根據之前所學的知識,幾何中夾角餘弦可以用來衡量兩個向量的方向的差異性,因此在我們的演算法中使用夾角餘弦來計算新聞關鍵詞的相似度。夾角越小,相似度越高。

有了關鍵詞和各關鍵詞的tfidf之後,就可以計算新聞的相似度了。假設兩條新聞的特徵列表如下:

可以看到兩條新聞有5個重合的關鍵詞:廣州,摩拜單車,太陽,天河和市長,因此兩條新聞的相關性由這5個關鍵詞決定,計算方式如下:

得出兩條新聞的相關性最終值;用同樣的方法能得出一條新聞與新聞庫裡面所有內容的相關性。

4)用戶特徵

得到新聞特徵以後,還需要得到用戶特徵才能對兩者進行匹配和推薦,那怎麼獲得用戶特徵呢?

需要通過用戶的行為來獲得,用戶通過閱讀,點贊,評論,分享來表達自己對新聞內容的喜愛;跟熱度排名類似,我們對用戶的各種行為賦予一定的「喜愛分」,例如閱讀1分,點贊2分,評論5分等,這樣新聞特徵跟用戶行為結合後,就能得到用戶的特徵分。

而隨著用戶閱讀的新聞數越來越多,該用戶的標籤也越來越多,並且越發精準。

從而當我們拿到新聞的特徵後,就能與用戶的關鍵詞列表做匹配,得出新聞與用戶閱讀特徵的匹配度,做出個性化推薦。

5) 其他運用

除了個性化推薦,基於內容的相關性演算法能精準地給出一篇新聞的相關推薦列表,對相關閱讀的實現非常有意義。此外,標籤系統對新聞分類的實現和提升準確性,也有重要的意義。

6) 優缺點

基於內容的推薦演算法有幾個明顯優點:

a. 對用戶數量沒有要求,無論日活幾千或是幾百萬,均可以採用;因此個性化推薦早期一般採用這種方式;

b. 每個用戶的特徵都是由自己的行為來決定的,是獨立存在的,不會有互相干擾,因此惡意刷閱讀等新聞不會影響到推薦演算法。

而最主要的缺點就是確定性太強了,所有推薦的內容都是由用戶的閱讀歷史決定,所以沒辦法挖掘用戶的潛在興趣;也就是由於這一點,基於內容的推薦一般與其他推薦演算法同時存在。

下一篇:產品經理需要了解的推薦演算法之--個性化推薦演算法2(基於用戶) - 知乎專欄

推薦閱讀:

簡書會對知乎造成威脅嗎?
火山抖音戰快手,西瓜視頻爆秒拍。短視頻的半壁江山--今日頭條三傑數據大起底!
扎克伯格的時間管理,都在這26張PPT里
最近的一些思考
手游輔助類APP(手游助手)發展下去前景怎麼樣,它的形態會怎麼演變?

TAG:个性化推荐 | 产品经理 | 推荐算法 |