利用上下文信息的推薦系統(tǒng)

利用上下文信息的推薦系統(tǒng)

讀書筆記,參考書本: 項亮, 推薦系統(tǒng)實踐. 2012

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

時間效應(yīng)舉例

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

時間效應(yīng)研究

在給定時間信息后,推薦系統(tǒng)從一個靜態(tài)系統(tǒng)變成了一個時變的系統(tǒng),而用戶行為數(shù)據(jù)也變成了時間序列。

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

時效性

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

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

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

時間多樣性

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

相關(guān)算法

最近最熱門

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

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

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

α是時間衰減參數(shù)。

【個人感覺本質(zhì)是個反比例函數(shù)】

時間上下文相關(guān)的ItemCF算法

基于物品的個性化推薦時應(yīng)用最廣泛的。該算法由兩個核心部分構(gòu)成:

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

時間信息在上面兩個核心部分中都有重要的應(yīng)用,這體現(xiàn)在兩種時間效應(yīng)上。

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

? 在線推薦 用戶近期行為相比用戶很久之前的行為,更能體現(xiàn)用戶現(xiàn)在的興趣。因此在預(yù)測用戶現(xiàn)在的興趣時,應(yīng)該加重用戶近期行為的權(quán)重,優(yōu)先給用戶推薦那些和他近期喜歡的物品相似的物品。

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

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}|)為與時間有關(guān)的衰減項。其中t_{ui}是用戶u對物品i產(chǎn)生行為的時間。f函數(shù)的含義是,用戶對物品i和物品j產(chǎn)生行為的世界越遠,f(|t_{ui}-t_{uj}|)越小。

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

除了考慮時間信息對相關(guān)表的影響,我們也應(yīng)該考慮時間信息對預(yù)測公式的影響。一般來說,用戶現(xiàn)在的行為和用戶最近的行為關(guān)系更大??梢杂靡韵路绞叫拚?/p>

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為時間衰減參數(shù)。

時間上下文相關(guān)的UserCF算法

時間段圖模型

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容