如何捕捉推薦系統中隨時間變化的動態信息

首先來看爲時間信息建模的重要性

事物是動態變化的。不僅是人的喜好、品味會隨着時間的推移改變(比如,一個喜歡看韓劇的用戶漸漸喜歡上了國產“恐怖片”;或用戶打分的標準比以往更嚴格了,感覺極好的也只打4分)。物品的流行度也會隨着其他物品的出現,時間的發展而改變(文中顯示,老電影評分tend to 比新電影的高)。因此,讓推薦系統捕捉到用戶和物品的改變能顯著地提高推薦的準確度。[2]


進一步,用戶和物品的變化可以分兩種:long-term trends 和 temporary effects。 模型的目的應該是捕捉到長期的變化趨勢,忽略一些暫時表現出的noise。以往的方法會對以前的評價賦予較小的權值,以重點考慮當前的行爲。但作者指出在衡量物品間的相似度方面,歷史評價記錄跟最新評價是同樣efficient的(如,看了A的90%用戶也看了B,那麼A和B是相似的,這點無論在過去還是現在都成立)。[2]


接下來看兩個實際的模型

[1] Exploring Temporal Effects for Location Recommendation on Location-Based Social Networks

作者在矩陣分解中加入時間信息,它利用了用戶簽到在時間上的兩個屬性:首先,用戶在不同時間呈現不同的簽到喜好。其次,用戶在相鄰時間呈現的簽到喜好是相近的。因此,假設總共有T個時間段,該方法爲每個用戶在T個時間段分別創建用戶preference矩陣。然後對相鄰時段的兩個preference矩陣的差值做約束 —— 約束因子爲對應時段兩個簽到向量的餘弦相似度。


[2] Collaborative Filtering with Temporal Dynamics

首先解釋幾個詞的意思(自編,僅供參考):

物品bias:某一樣物品內在就比其他好,於是獲得的評分相對高一般水準要高個0.4分,比如說。

物品的bias動態:舉個例子,雖然一個電影從質量上來講要高於其他電影0.5分,但實際表現出來的差值在不同時間段是不同的 —— 動態變化的

用戶bias:每個用戶心中的基準分是不一樣的。對於大家都認爲一般的電影,有人給3分,有人給4分。

用戶的bias動態:舉個例子,一個用戶打分標準變寬鬆了,平均提高了0.3分 —— 動態變化了


1、作者首先爲系統的bias建模。

爲物品的bias動態建模:因爲物品的變化相對人的變化要小,所以可以把總的時間段分成幾段(文中採用的是10週一段),併爲每一段分別賦一個物品bias值。

爲用戶的bias動態建模:由於人比物易變,因此這裏採用的時間段長度是1天。大體上,若以函數 f 來建模,其自變量x就是時間點t到參照時間點t_0的距離。當然,f(|t-t_0|)可以是線性函數,也可以是更復雜的函數。另外,作者發現用戶一天中的評論趨向於集中在一個評分上,即方差小。於是他又爲用戶加上一個按天計的bias(原文:assign a single parameter per user and day, absorbing the day-specific variability)。至於參照時間點t_0的選取,文中採用評分記錄覆蓋的時間段的中間位置。

這裏有個疑問:既然是per user and day,那如果測試集數據採集的日期大於訓練集採集的日期怎麼辦?


2、這些與用戶真正喜好無關的bias被建模之後,剩下的就能更準確地反應用戶的喜好和物品的類屬。於是可以大膽地使用隱語義和基於鄰域的方法了。

對於隱語義:保持物品的特徵不變,使用之前類似的思想給用戶的特徵加上了隨時間的線性變化。

對於鄰域模型:由於用戶興趣的變化,過去打5分的電影與現在打5分的電影“相似度”不大可能高(比如,以前他打5分的恐怖片可能現在只會給3分,因爲他轉性看文藝片了)。所以一個物品對另一個物品的參考價值,是隨時間距離的增長而遞減的。

這個模型爲稱爲timeSVD++,當特徵維度爲200,它在Netflix上取得了0.8799的成績。


總結
其實要在推薦系統中加入時間因素很直觀,可以把捕捉用戶動態的問題看成一個regression問題。但問題是這種變化通常不是連續的[1][2]。解決的辦法是同時捕捉連續和離散的成分。連續成分:使用全局的regression函數來捕捉。離散成分:將timeline分段,併爲每段設置獨有的基準值。可以看到,[1]中的基準值是那T個用戶preference矩陣。[1]不同於[2]的做法是,不使用連續的函數,而是改用“使相鄰兩個變量的差值儘可能小“的限制。不過本質上都是一樣的。


參考文獻:

[1] Exploring Temporal Effects for Location Recommendation on Location-Based Social Networks

[2] Collaborative Filtering with Temporal Dynamics

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章