0. 從余弦公式講起
先思考一個問題,我們怎么量化兩個事物的相似度呢?當然,這也是推薦系統(tǒng)需要多次面臨的問題。
我們知道向量的概念,可以形象化地表示為帶箭頭的線段。二維空間向量表示方法為,多維空間向量表示為,向量是描述事物一種很好模型。
比如,假設用戶有5個維度:
對服裝的喜歡程度(1~5分)
對家居的喜歡程度(1~5分)
對3C的喜歡程度(1~5分)
對圖書的喜歡程度(1~5分)
對化妝品的喜歡程度(1~5分)
一個用戶A:對服裝的喜歡程度3,對家居的喜歡程度1,對3C的喜歡程度4,對圖書的喜歡程度5,對化妝品的喜歡程度0,用戶A可以用向量表示為
一個用戶B:對服裝的喜歡程度3,對家居的喜歡程度4,對3C的喜歡程度5,對圖書的喜歡程度0,對化妝品的喜歡程度2,用戶B可以用向量表示為
這兩個用戶的相似程度是多大呢?既然我們把這兩個用戶表示為向量,那么我們可以考慮向量怎么判斷相似性。沒錯,看這兩個向量的夾角。夾角約小,則相似度越大。
對于向量和而言,他們的在多維空間的夾角可以用向量余弦公式計算:
余弦相似度的值本身是一個0~1的值,0代表完全正交,1代表完全一致。就剛才用戶A和用戶B的例子而言,我們可以知道他們的相似度為:
余弦公式本身應用范圍很廣,量化相似度在搜索推薦,商業(yè)策略中都是常見問題,余弦公式是很好的解決方案。就推薦本身而言,計算內容的相似度,計算用戶的相似度,計算用戶類型的相似度,計算內容類型的相似度,這些都是可以應用的場景。
1. 推薦的本質是什么
推薦和搜索本質有相似的地方。搜索滿足用戶從海量數(shù)據中迅速找到自己感興趣內容的需求,屬于用戶主動獲取。推薦則是系統(tǒng)從海量數(shù)據中根據獲取到的用戶數(shù)據,猜測用戶感興趣的內容并推薦給用戶,屬于系統(tǒng)推薦給用戶。本質上都是為了在這個信息過載的時代,幫助用戶找到自己感興趣的東西。
推薦系統(tǒng)有很多種形式。運營或者編輯篩選出自己認為最好的內容放在首頁,廣義上講這也是一種推薦。不過這個不在我們本期文章的討論范圍,本期主要是討論系統(tǒng)級別的推薦。這里主要介紹四類常見的推薦方法:
基于內容的推薦
基于內容的協(xié)同過濾
基于用戶的協(xié)同過濾
基于標簽的推薦
2. 基于內容的推薦
基于內容的推薦是基礎的推薦策略。如果你瀏覽或購買過某種類型的內容,則給你推薦這種類型下的其他內容。
以電影推薦為例。比如你之前看過《盜夢空間》,則系統(tǒng)會關聯(lián)數(shù)據庫中盜夢空間的信息。系統(tǒng)會推薦克里斯托弗·諾蘭導演的其他作品,比如《致命魔術》;系統(tǒng)會推薦主演里昂納多的其他作品,比如《第十一小時》。
如果這個電影系統(tǒng)的數(shù)據被很好地分類,那么推薦系統(tǒng)也會給用戶推薦這個分類下的其他作品。盜夢空間如果被歸為科幻作品,那么可能會推薦其他科幻作品,比如《星際迷航》。
基于內容的推薦好處在于易于理解,但是壞處是推薦方式比較依賴于完整的內容知識庫的建立。如果內容格式化比較差,那么基于內容的推薦就無法實行。同時如果用戶留下的數(shù)據比較少,則推薦效果很差,因為無法擴展。
3. 基于內容的協(xié)同過濾
協(xié)同過濾(Collaborative Filtering)與傳統(tǒng)的基于內容過濾直接分析內容進行推薦不同,協(xié)同過濾會分析系統(tǒng)已有數(shù)據,并結合用戶表現(xiàn)的數(shù)據,對該指定用戶對此信息的喜好程度預測。
基于內容的協(xié)同過濾(item-based CF),通過用戶對不同內容的評分來評測內容之間的相似性,基于內容之間的相似性做出推薦;最典型的例子是著名的“啤酒加尿布”,就是通過分析知道啤酒和尿布經常被美國爸爸們一起購買,于是在尿布邊上推薦啤酒,增加了啤酒銷量。
需要計算用戶u對物品j的興趣,公式如下:
這里N(u)表示用戶有關聯(lián)的商品的集合,wji表示物品j和i的相似度,rui表示用戶u對物品i的打分,示例如下:
這里還有兩個問題沒有仔細描述,如何打分,如何計算相似度。
打分的話需要根據業(yè)務計算,如果有打分系統(tǒng)最好,沒有打分系統(tǒng),則需要根據用戶對這個物品的行為得到一個分數(shù)。
計算相似度除了之前我們提到的余弦公式,還可以根據其他的業(yè)務數(shù)據。比如對于網易云音樂而言,兩首歌越多的被加入兩個歌單,可以認為兩首歌越相似。對于亞馬遜而言,兩個商品越多的被同時購買,則認為兩個商品相似。這里其實是需要根據產品的具體情況進行調整。
4. 基于用戶的協(xié)同過濾
基于用戶的協(xié)同過濾(user-based CF),通過用戶對不同內容的行為,來評測用戶之間的相似性,基于用戶之間的相似性做出推薦。這部分推薦本質上是給相似的用戶推薦其他用戶喜歡的內容,一句話概括就是:和你類似的人還喜歡下列內容。
需要計算用戶u對物品i的興趣,公式如下(可以和基于物品的協(xié)同過濾仔細對比):
這里N(i)表示對物品i有過行為的用戶集合,wuv使用用戶u和用戶v的相似度,rvi表示用戶v對物品i的打分,示例如下:
同樣的,這里計算相似度如果用到余弦公式,其實最主要的是選好維度。對于音樂而言,可能是每首歌都作為一個維度,對于電商而言,也可以是每個商品都是一個維度。當然,用一些可理解的用戶標簽作為維度也是可以的。
5. 基于標簽的推薦
標簽系統(tǒng)相對于之前的用戶維度和產品維度的推薦,從結構上講,其實更易于理解一些,也更容易直接干預結果一些。關于tag和分類,基本上是互聯(lián)網有信息架構以來就有的經典設計結構。內容有標簽,用戶也會因為用戶行為被打上標簽。通過標簽去關聯(lián)內容。
需要計算用戶u對物品i的興趣,公式如下(可以和基于物品的協(xié)同過濾仔細對比):
這里N(u.,i)表示用戶u和物品i共有的標簽,wuk使用用戶u和標簽k的關聯(lián)度,rki表示標簽k和物品i的關聯(lián)性分數(shù),示例如下:
標簽查找的方法這里有很大可以發(fā)揮的空間,比如,通過知識庫進行處理,或者語義分析處理。而對于一些設計之初就有標簽概念的網站, 就比較容易,比如豆瓣和知乎。對于知乎而言,公共編輯的標簽是天然的標簽內容,對于知乎的用戶而言,瀏覽回答關注等行為則是天然的用戶標簽素材。
6. 總結
對于推薦而言,這幾種基本的方法彼此之前都有些應用場景的差別:比如基于知識的推薦,這是比較老舊的推薦方法,但是對于系統(tǒng)和結構比較好的內容,則低成本且高效。比如基于內容的協(xié)同過濾,就適用于內容比較有限,但是用戶數(shù)特別多的情況,比如電商公司。比如基于用戶的協(xié)同過濾,則比較容易根據用戶的興趣點,發(fā)覺熱點內容,比如新聞門戶。對于基于標簽的推薦,有標簽系統(tǒng)的很占便宜,它在靈活性和可控制性上都好一些,但是做好很難。
評論(0人參與,0條評論)
發(fā)布評論
最新評論