1. 程式人生 > >利用上下文資訊進行推薦

利用上下文資訊進行推薦

本篇的思維導讀如下所示:

1、什麼是上下文

本章之前提到的推薦系統演算法主要集中研究瞭如何聯絡使用者興趣和物品,將最符合使用者興趣的物品推薦給使用者,但這些演算法都忽略了一點,就是使用者所處的上下文(context)。這些上下文包括使用者訪問推薦系統的時間、地點、心情等,對於提高推薦系統的推薦系統是非常重要的。比如,一個賣衣服的推薦系統在冬天和夏天應該給使用者推薦不同種類的服裝。推薦系統不能因為使用者在夏天喜歡過某件T恤,就在冬天也給該使用者推薦類似的T恤。我們這裡主要討論時間上下文,並簡單介紹一下地點上下文,討論如何將時間資訊和地點資訊建模到推薦演算法中,從而讓推薦系統能夠準確預測使用者在某個特定時刻及特定地點的興趣。

2、時間上下文

2.1 時間效應

時間是一種重要的上下文資訊,對使用者興趣有著深入而廣泛的影響。一般認為,時間資訊對使用者興趣的影響表現在以下幾個方面。1)使用者興趣是變化的2)物品也是有生命週期的3)季節效應

2.2 系統時間特性分析

在給定時間資訊後,推薦系統從一個靜態系統變成了一個時變的系統,而使用者行為資料也變成了時間序列。研究一個時變系統,需要首先研究這個系統的時間特性。包含時間資訊的使用者行為資料集由一系列三元組構成,其中每個三元組(u,i,t)代表了使用者u在時刻t對物品i產生過行為。我們可以研究的時間特性如下:資料集每天獨立使用者數的增長情況系統的物品變化情況:比如物品的平均線上天數,如果一個物品在某天被至少一個使用者產生過行為,就定義該物品在 這一天線上。因此,我們可以通過物品的平均線上天數度量一類物品的生存週期。使用者訪問情況

:我們可以統計使用者的平均活躍天數,同時也可以統計相隔T天來系統的使用者的重合度。相隔T天系統物品流行度向量的平均相似度:取系統中相鄰T天的兩天,分別計算這兩天 的物品流行度,從而得到兩個流行度向量。然後,計算這兩個向量的餘弦相似度,如果相似度大,說明系統的物品在相隔T天的時間內沒有發生大的變化,從而說明系統的時效 性不強,物品的平均線上時間較長。

2.3 推薦系統的實時性

實現推薦系統的實時性除了對使用者行為的存取有實時性要求,還要求推薦演算法本身具有實時性,而推薦演算法本身的實時性意味著:1)實時推薦系統不能每天都給所有使用者離線計算推薦結果,然後線上展示昨天計算出來的 結果。所以,要求在每個使用者訪問推薦系統時,都根據使用者這個時間點前的行為實時計 算推薦列表。2)推薦演算法需要平衡考慮使用者的近期行為和長期行為,即要讓推薦列表反應出使用者近期行為所體現的興趣變化,又不能讓推薦列表完全受使用者近期行為的影響,要保證推薦列表對使用者興趣預測的延續性。

2.4 推薦結果的時間多樣性

那麼,如何在不損失精度的情況 下提高推薦結果的時間多樣性呢?提高推薦結果的時間多樣性需要分兩步解決:首先,需要保證推薦系統能夠在使用者有了新的 行為後及時調整推薦結果,使推薦結果滿足使用者最近的興趣;其次,需要保證推薦系統在使用者沒 有新的行為時也能夠經常變化一下結果,具有一定的時間多樣性。對於第一步,又可以分成兩種情況進行分析。第一是從推薦系統的實時性角度分析。有些推薦系統會每天離線生成針對所有使用者的推薦結果,然後線上直接將這些結果展示給使用者。這種型別的系統顯然無法做到在使用者有了新行為後及時調整推薦結果。第二,即使是實時推薦系統,由於使用的演算法不同,也具有不同的時間多樣性。那麼,如果使用者沒有行為,如何保證給使用者的推薦結果具有一定的時間多樣性呢?一般的思路有以下幾種。在生成推薦結果時加入一定的隨機性,記錄使用者每天看到的推薦結果,然後在每天給使用者進行推薦時,對他前幾天看到過很多次的推薦結果進行適當地降權。每天給使用者使用不同的推薦演算法。

3、時間上下文推薦演算法

3.1 最近最熱門

在沒有時間資訊的資料集中,我們可以給使用者推薦歷史上最熱門的物品。那麼在獲得使用者行為的時間資訊後,最簡單的非個性化推薦演算法就是給使用者推薦最近最熱門的物品了。給定時間T, 物品i最近的流行度 ni (T ) 可以定義為:

3.2 時間上下文相關的ItemCF演算法

那麼基於時間上下文,我們可以從以下兩個方面改進ItemCF演算法。1)物品相似度 : 使用者在相隔很短的時間內喜歡的物品具有更高相似度。2) 線上推薦:使用者近期行為相比使用者很久之前的行為,更能體現使用者現在的興趣。

首先回顧一下前面提到的基於物品的協同過濾演算法,它通過如下公式計算物品的相似度:

而在給使用者u做推薦時,使用者u對物品i的興趣p(u,i)通過如下公式計算:

在得到時間資訊之後,我們可以通過如下的公式來改進相似度計算:

上面使用的衰減函式可能的形式如下:

除了考慮時間資訊對相關表的影響之外,我們也應該考慮時間資訊對預測公式的影響,一般來說,使用者現在的行為應該和使用者最近的行為關係更大,因此可以做如下的修正:

其中, t0 是當前時間。上面的公式表明, tuj 越靠近t0 ,和物品j相似的物品就會在使用者u的推薦列表中獲得越高的排名。

3.3 時間上下文相關的UserCF演算法

與ItemCF一樣,我們也可以在以下兩個方面利用時間資訊改進UserCF演算法。1)使用者興趣相似度:兩個使用者興趣相似是因為他們喜歡相同的物品,或者對相同的物品產生過行為。但是,如果兩個使用者同時喜歡相同的物品,那麼這兩個使用者應該有更大的興趣相似度。

2)相似興趣使用者的最近行為 :在找到和當前使用者u興趣相似的一組使用者後,這組使用者最近的興趣顯然相比這組使用者很久之前的興趣更加接近使用者u今天的興趣。也就是說,我們應該給使用者推薦和他興趣相似的使用者最近喜歡的物品。

首先回顧一下UserCF的公式,UserCF通過如下公式計算使用者u和使用者v的興趣相似度:

其中N(u)是使用者u喜歡的物品集合,N(v)是使用者v喜歡的物品集合。在得到使用者相似度後,UserCF通過如下公式預測使用者對物品的興趣:

考慮時間因素,我們可以如下修改使用者相似度計算,增加一個時間衰減因子,使用者u和使用者 v對物品i產生行為的時間越遠,那麼這兩個使用者的興趣相似度就會越小。:

同樣,如果考慮和使用者u興趣相似使用者的最近興趣,我們可以設計如下公式:

3.4 時間段圖模型

在基於時間的圖模型中,時間段圖模型G(U,SU ,I,SI ,E,w,)也是一個二分圖。U是使用者節點集合,SU 是使用者時間段節點集合。一個使用者時間段節點vut∈SU 會和使用者u在時刻t喜歡的物品通過邊相連。I是物品節點 集合,SI 是物品時間段節點集合。一個物品時間段節點vit∈SI 會和所有在時刻t喜歡物品i的使用者 通過邊相連。E是邊集合,它包含了3種邊:(1)如果使用者u對物品i有行為,那麼存在邊 e(vu , vi ) ∈ E ; (2)如果使用者u在t時刻對物品i有行為,那麼就存在兩條邊 e(vut , vi ), e(vu , vit ) ∈ E。下圖是一個簡單的時間段圖模型示例。在這個例子中,使用者A在時刻2對物品b產生了行為。 因此,時間段圖模型會首先建立4個頂點,即使用者頂點A、使用者時間段頂點A:2、物品頂點b、物 品時間段頂點b:2。然後,圖中會增加3條邊,即(A, b)、(A:2, b)、(A, b:2)。這裡不再增加(A:2, b:2) 這條邊,一方面是因為增加這條邊後不會對結果有所改進,另一方面則是因為增加一條邊會增加 圖的空間複雜度和圖上演算法的時間複雜度。

這裡,我們不再使用PersonalRank演算法給使用者進行個性化推薦。相應的,我們使用一種稱為路徑融合演算法的方法,通過該演算法度量圖中兩個頂點的相關性。一般來說,圖上兩個相關性比較高的頂點一般具有如下特徵:1) 兩個頂點之間有很多路徑相連;2) 兩個頂點之間的路徑比較短;3)兩個頂點之間的路徑不經過出度比較大的頂點。

這裡實在是不好弄公式,直接截圖了:

4、地點上下文資訊

除了時間,地點作為一種重要的空間特徵,也是一種重要的上下文資訊。這裡我們不詳細介紹了。