利用上下文信息的推薦系統

時間是一種重要的上下文信息,對用戶興趣有著深入而廣泛的影響。

王佳亮

利用上下文信息的推薦系統

讀書筆記,參考書本: 項亮, 推薦系統實踐. 2012

(主要討論時間信息,如何將時間信息結合到推薦算法中)

時間效應舉例

時間是一種重要的上下文信息,對用戶興趣有著深入而廣泛的影響。一般認為,時間信息對用戶興趣的影響表現在以下幾個方面。
? 用戶興趣是變化的 -- 我們這里提到的用戶興趣變化是因為用戶自身原因發生的變化。比如隨著年齡的增長,用戶小時候喜歡看動畫片,長大了喜歡看文藝片。一位程序員隨著工作時間的增加,逐漸從閱讀入門書籍過渡到閱讀專業書籍。一個人參加工作了,工作后的興趣和學生時代的興趣相比發生了變化。那么,如果我們要準確預測用戶現在的興趣,就應該關注用戶最近的行為,因為用戶最近的行為最能體現他現在的興趣。當然,考慮用戶最近的興趣只能針對漸變的用戶興趣,而對突變的用戶興趣很難起作用,比如用戶突然中獎了。
? 物品也是有生命周期的 -- 一部電影剛上映的時候可能被很多人關注,但是經久不衰的電影是很少的,很多電影上映后不久就被人們淡忘了。此外,物品也可能受新聞事件的影響,比如一部已經被淡忘的電影會因為突然被某個新聞事件涉及而重新熱門起來。因此,當我們決定在某個時刻給某個用戶推薦某個物品時,需要考慮該物品在該時刻是否已經過時了。比如,我們給一個NBA迷推薦10年前的某個NBA新聞顯然是不太合適的(當然這也不一定,比如用戶當時就是在尋找舊的NBA新聞時)。不同系統的物品具有不同的生
命周期,比如新聞的生命周期很短暫,而電影的生命周期相對較長。
? 季節效應 -- 季節效應主要反映了時間本身對用戶興趣的影響。比如人們夏天吃冰淇淋,冬天吃火鍋,夏天穿T恤,冬天穿棉衣。當然,我們也不排除有特別癖好的人存在,但大部分用戶都是遵循這個規律的。除此之外,節日也是一種季節效應:每年的圣誕節,人們都要去購物;每年的奧斯卡頒獎禮,人們都要關注電影。2011年ACM推薦大會的一個研討會曾經舉辦過一次上下文相關的電影推薦算法比賽 ,該比賽要求參賽者預測數據集中用戶在奧斯卡頒獎禮附近時刻的行為。關注季節效應的讀者可以關注一下這個研討會上發表的相關論文。

時間效應研究

在給定時間信息后,推薦系統從一個靜態系統變成了一個時變的系統,而用戶行為數據也變成了時間序列。

研究一個時變系統,需要首先研究這個系統的時間特性。包含時間信息的用戶行為數據集由一系列三元組構成,其中每個三元組(u,i,t)代表了用戶u在時刻t對物品i產生過行為。

時效性

同時也要注意物品的生存周期和系統的時效性。不同類型網站的物品具有不同的生命周期,比如新聞的生命周期很短,而電影的生命周期很長。

還有實時和非實時系統,實現推薦系統的實時性除了對用戶行為的存取有實時性要求,還要求推薦算法本身具有實時性,而推薦算法本身的實時性意味著:
? 實時推薦系統不能每天都給所有用戶離線計算推薦結果,然后在線展示昨天計算出來的結果。所以,要求在每個用戶訪問推薦系統時,都根據用戶這個時間點前的行為實時計算推薦列表

? 推薦算法需要平衡考慮用戶的近期行為和長期行為,即要讓推薦列表反應出用戶近期行為所體現的興趣變化,又不能讓推薦列表完全受用戶近期行為的影響,要保證推薦列表對用戶興趣預測的延續性。

時間多樣性

提高推薦結果的時間多樣性需要分兩步解決:首先,需要保證推薦系統能夠在用戶有了新的行為后及時調整推薦結果,使推薦結果滿足用戶最近的興趣;其次,需要保證推薦系統在用戶沒有新的行為時也能夠經常變化一下結果,具有一定的時間多樣性。
對于第一步,又可以分成兩種情況進行分析。第一是從推薦系統的實時性角度分析。有些推薦系統會每天離線生成針對所有用戶的推薦結果,然后在線直接將這些結果展示給用戶。這種類型的系統顯然無法做到在用戶有了新行為后及時調整推薦結果。第二,即使是實時推薦系統,由于使用的算法不同,也具有不同的時間多樣性。對于不同算法的時間多樣性,Neal Lathia博士在博士論文中進行了深入探討 ,這里就不再詳述了。
那么,如果用戶沒有行為,如何保證給用戶的推薦結果具有一定的時間多樣性呢?一般的思路有以下幾種。
? 在生成推薦結果時加入一定的隨機性。比如從推薦列表前20個結果中隨機挑選10個結果展示給用戶,或者按照推薦物品的權重采樣10個結果展示給用戶。
? 記錄用戶每天看到的推薦結果,然后在每天給用戶進行推薦時,對他前幾天看到過很多次的推薦結果進行適當地降權。
? 每天給用戶使用不同的推薦算法??梢栽O計很多推薦算法,比如協同過濾算法、內容過濾算法等,然后在每天用戶訪問推薦系統時隨機挑選一種算法給他進行推薦。

相關算法

最近最熱門

在獲得用戶行為的時間信息后,最簡單的非個性化推薦算法就是給用戶推薦最近最熱門的物品了。

在給定時間T,物品i最近的流行度n_i(T)可以定義為

n_i(T)=\sum_{(u,i,t)\in Train,t<T}\frac{1}{1+\alpha(T-t)}

α是時間衰減參數。

【個人感覺本質是個反比例函數】

時間上下文相關的ItemCF算法

基于物品的個性化推薦時應用最廣泛的。該算法由兩個核心部分構成:

? 利用用戶行為離線計算物品之間的相似度;
? 根據用戶的歷史行為和物品相似度矩陣,給用戶做在線個性化推薦。

時間信息在上面兩個核心部分中都有重要的應用,這體現在兩種時間效應上。

? 物品相似度 用戶在相隔很短的時間內喜歡的物品具有更高相似度。以電影推薦為例,用戶今天看的電影和用戶昨天看的電影其相似度在統計意義上應該大于用戶今天看的電影和用戶一年前看的電影的相似度。

? 在線推薦 用戶近期行為相比用戶很久之前的行為,更能體現用戶現在的興趣。因此在預測用戶現在的興趣時,應該加重用戶近期行為的權重,優先給用戶推薦那些和他近期喜歡的物品相似的物品。

在得到時間信息(用戶對物品產生行為的時間)后,我們可以通過如下公式改進相似度計算用戶和物品相似度

sim(i,j)=\frac{\sum_{u\in N(i)\cap N(j)}f(|t_{ui}-t_{uj}|)}{\sqrt{|N(i)||N(j)|}}

f(|t_{ui}-t_{uj}|)為與時間有關的衰減項。其中t_{ui}是用戶u對物品i產生行為的時間。f函數的含義是,用戶對物品i和物品j產生行為的世界越遠,f(|t_{ui}-t_{uj}|)越小。

衰減函數f(|t_{ui}-t_{uj}|)=\frac{1}{1+\alpha|t_{ui}-t{uj}|}

除了考慮時間信息對相關表的影響,我們也應該考慮時間信息對預測公式的影響。一般來說,用戶現在的行為和用戶最近的行為關系更大??梢杂靡韵路绞叫拚?

p(u,i)=\sum_{j\in N(u)\cap S(i,K)}sim(i,j)\frac{1}{\beta{|t_0-t_{ij}|}}

其中,t_0是當前時間。上面公式表明,越靠近t_{uj}越靠近t_0,和物品j相似的物品在用戶u的推薦列表中獲得越高的排名。\beta為時間衰減參數。


作者:錦繡拾年
鏈接:https://www.jianshu.com/p/b92a2b87b83d
來源:簡書
著作權歸作者所有。商業轉載請聯系作者獲得授權,非商業轉載請注明出處。
  • 506
  • 摘抄
  • https://www.jianshu.com/p/b92a2b87b83d
午夜a成v人电影,亚洲av永久无码精品漫画,中国china体内裑精亚洲日本,精品亚洲av精选一区二区三区,精品国产日韩欧美一区二区三区,勃起21厘米粗6厘米怎么办