1. 程式人生 > >推薦系統實踐---第四章:利用使用者標籤資料

推薦系統實踐---第四章:利用使用者標籤資料

下面簡單介紹書中提到的問題以及有哪些解決辦法,方便大家對正本書有個整體的把握,同時我也會上傳這本書的高清PDF版,本來想不用積分下載,但是系統最少2個,要是哪位沒有積分,可以私信我。下載連結如下:

其他章節內容


前面介紹的CF演算法,利用的是使用者的行為資料,就是使用者對商品的動作,為了區別本章內容,稱之為使用者動作行為資料。

在介紹商品冷啟動時,提到了利用商品的內容資訊計算商品間的相似度。

本章介紹另外一種資料:使用者標籤行為資料。就是人為的新增的標籤,比如使用者對看的一部電影打標籤,寫部落格時作者給部落格打的標籤。標籤分兩種:一種是作者或者專家給商品打標籤,一種是普通使用者對商品打標籤。後者被稱為UGC。

商品的內容資訊和標籤資訊,都是特徵。基於CF的推薦演算法不用特徵,只用使用者行為。

4.1    UGC標籤系統的代表應用

使用UGC標籤系統的代表網站:UGC標籤系統的鼻祖Delicious,論文書籤網站CiteULike,音樂網站Last.fm,視訊網站Hulu,書和電影評分網站豆瓣等。

4.2    利用使用者註冊資訊

使用者為什麼進行標註: Morgan Ames研究圖片分享網站中使用者標註的動機問題,並從社會維度和功能維度進行分析。社會維度:有些標籤是為上傳者能夠更好的組織自己得資訊,有些標籤是為了其他廣大使用者找到想要的資訊;功能維度:有些標註是為了更好的組織內容,方便使用者將來的查詢,有些標籤是為了傳達某些資訊,比如照片拍攝的時間和地點。

使用者如何打標籤:作者基於Delicious資料集做實驗。橫座標表示標籤的流行度x,縱座標表示該流行度的所有商品的數量f(x),服從長尾分佈。

使用者打什麼樣的標籤:我們希望使用者為物品打的標籤能夠準確的描述物品內容屬性,但使用者往往不會按照我們預期的想法操作,而是會給物品打上各種奇奇怪怪的標籤。Scott A.Golder總結了Delicious上的標籤(說到這些有模有樣的內容,必須得引經據典,這樣才有說服力),分為以下幾類:表面物品是什麼,表明物品的種類,表明誰擁有該物品,表示使用者的觀點(搞笑),使用者相關的標籤(我的最愛),使用者的任務(找工作)。

4.3    基於標籤的推薦系統

一個標籤是使用者對物品的一個描述,比如關鍵詞“搞笑”。但是在進行推薦時,使用者標籤行為資料不僅包括(user_id,item_id,tags)。還包括使用者的內容資訊和商品的內容資訊。(基於CF的推薦,不需要使用者和商品的內容資訊)

實驗設定:實驗資料是Delicious資料集和CiteULIke資料集;將資料分為10份,9份用來訓練,1份用來測試;評價指標是準確率,召回率,多樣性;

最簡單的推薦演算法:對於一個使用者,統計他最常用的標籤,然後把具有這些標籤的最熱物品推薦給該使用者。基於此演算法,定義使用者u對商品i的興趣公式: P(u,i)=Nub*Nbi 求和。其中Nub表示使用者u為所有商品打該標籤的次數,Nbi表示該商品被所有使用者打該標籤的次數。

借鑑TF-IDF對熱門標籤和熱門商品做出懲罰:在上面公式的基礎上,除以一個分母:log(1+Nb(u)) *log(1+Ni(u))。其中Nb(u)表示標籤b被多少不同使用者打過標籤,Ni(b)表示商品i被多少不同使用者打過標籤。

利用標籤擴充套件解決資料稀疏問題:在基於使用者標籤行為的商品推薦演算法中,主要是通過B(u) & B(i)完成。使用者u對商品i必須在標籤上有交集:使用者u打了標籤b,並且商品i也被人打了b標籤。如果使用者u很少打標籤,或者商品i很少被人打標籤,就會導致該使用者u對該商品i的分數為0,無法對其進行推薦。為了避免這種情況,需要對使用者和商品進行標籤的擴充套件。最常用的標籤擴充套件方法是通過話題模型,書中介紹比較簡單的基於領域的擴充套件方法。如果兩個標籤經常同時出現在物品的標籤集合中,就認為這兩個標籤具有很大的相似度。

標籤的清理:使用者經常為電影打“動作片”標籤,說明該使用者喜歡“動作片”型別的電影。但是如果使用者經常打“不喜歡”標籤,我們不能為他推薦“不喜歡”相關的內容;“推薦系統”和“推薦引擎”是一個意思,只保留一個就行了;我們需要用某個標籤作為推薦結果的解釋,所以需要清理質量不高的標籤。一般的標籤清理方法:去除詞頻很高的停止詞;去除因詞根不同造成同義詞,比如“搞笑的”和“搞笑”;去除分隔符在成的同義詞,比如“推薦-系統”和“推薦_系統”。

如何保證標籤的質量:很多網站採用讓使用者進行反饋的思想,讓使用者告訴系統某個標籤是否合適。

基於圖的推薦演算法:基於使用者動作行為的資料,可以將使用者行為表示在圖上,通過隨機遊走獲取概率值,從而進行推薦。現在是基於使用者標籤行為的資料,由原來的二元組(user,item)變為三元組(user,item,tag)。有兩種方法:第一種是對每一個(user,item,tag),新增三條無向邊user_item,user_tag,item_tag。第二種方法是將節點分為三列,分別為使用者標籤商品,每次新增兩條有向邊user->tag以及tag->item。在圖上表示了使用者標籤資料後,利用隨機遊走演算法獲得概率值,然後進行推薦。

基於標籤的推薦具備較好的多樣性:使用者的興趣在長時間內是很廣泛的,但在某一天卻很具體。豆瓣通過標籤雲,展示了使用者所有的興趣,然後讓使用者自己根據今天的興趣選擇一個標籤,系統通過該標籤對其進行推薦。

基於標籤的推薦具備較好的解釋性:使用者首先會覺得標籤雲是合理的,點選一個標籤後,發現根據該標籤的推薦也是合理的。

4.4    給使用者推薦標籤

為什麼要給使用者推薦標籤:方便使用者輸入;T提高標籤質量;

如何給使用者推薦標籤:給使用者推薦系統裡最熱門的標籤;給使用者推薦該使用者最常用的標籤;給使用者推薦該物品最長被打的標籤;將前面兩個的推薦結果相性加權;

基於圖的標籤推薦演算法:根據使用者的標籤行為生成圖,還是利用隨機遊走確定推薦結果。但是這次不是推薦商品,而是推薦標籤,所以啟動概率稍微有些不同。