??本章主要講了利用用戶的上下文信息進行更加個性化的推薦。上下文包括用戶訪問推薦系統的時間、地點、心情等,本章主要是講如何利用時間信息和地點信息優化推薦算法。用戶特征和物品特征從大的角度上反映了用戶的長期興趣和物品的適合人群,但是一個用戶的具體需求和特定的時間和地點是密切相關的。也就是說,用戶特征反映了用戶的長期興趣,而上下文信息則反映了用戶的短期興趣。
時間上下文信息
時間信息對用戶興趣的影響表現在以下幾個方面:
- 用戶興趣是變化的。用戶最近的行為最能體現他現在的興趣,當然這種興趣是漸變的用戶的興趣,對突變的用戶興趣很難起作用。
- 物品也是有生命周期的。不同的物品具有不同的生命周期,比如新聞的生命周期很短暫,而電影的生命周期相對較長。
- 季節效應。季節效應主要反映了時間本身對用戶興趣的影響,節日也是一種季節效應(不同的季節會買不同的東西,不同的節日也會有與平時不同的購物行為)。
我們可以收集這樣一些用戶行為數據集,這些數據集由一系列三元組構成,其中每個三元組(u,i,t)代表了用戶u在時刻t對物品i產生過行為。利用這些用戶行為數據集,我們可以統計如下一些時間特性:
- 數據集每天獨立用戶數的增長情況。確定系統處于什么發展期。
- 系統的物品變化情況。反映了時間對物品熱度的影響。
- 用戶訪問情況。可以統計用戶的平均活躍天數,也可以統計相隔T天來系統的用戶的重合度。
在利用用戶的時間上下文信息優化推薦效果時,為了實現系統的實時性需要1)在每個用戶訪問系統時都根據這個時間點前的行為實時計算推薦列表(及時調整推薦結果使之滿足用戶最近的興趣);2)平衡考慮用戶的近期行為和長期行為(在用戶沒有新行為的時候也能改變推薦列表,使得推薦系統具有一定的時間多樣性,當然還是要以高精度為前提)。而時間上下文相關的推薦算法,作者介紹了這么幾種:
- 最近最熱門。說白了就是給用戶推薦最近最熱門的物品,這是一種簡單的非個性化推薦算法,可以看作是一種規則。通過統計最近一段時間物品的熱度加權和(需要給每條記錄進行時間衰減加權)來定義物品的流行度。
- 基于時間上下文的CF算法。這里包括ItemCF算法和UserCF算法。 但是這里在計算物品或者用戶之間的相似度的時候不是直接進行出現次數的統計,而是對加上時間衰減的出現次數的統計,保證越近的行為對相似度計算的影響越大。
對于基于時間上下文的ItemCF算法來說,每個和物品i、j都有交集的用戶對該兩種物品的相似度的貢獻不再恒定是1,而是與用戶對物品i、j產生行為的時間越遠,對這兩種物品的相似度的貢獻就越小,物品相似度公式如下:其中有,
,
與用戶u的興趣變化程度有關,用戶u的興趣變化越快則
越應該取較大的值。
同理,對于基于時間上下文的UserCF算法,計算用戶之間的相似度的時候,也需要根據時間對那些和兩種物品都有交集的用戶進行時間上的衰減,此時的用戶相似度計算公式如下: - 時間段圖模型。此時還是將用戶和物品之間的關系信息看作是一個二分圖,對圖進行廣度優先遍歷,實現圖上的路徑融合,算出每個邊 的權重。不過需要注意的是,同一個用戶和物品之間可能有多次交集,此時就需要增加圖中邊的數量來表示這種關系。比如用戶u在1和2兩個時刻都對物品i產生行為,此時就需要用3條邊來表示這種交互行為,分別是(u, i)、(u:2, i)和(u, i:2)。這里不在增加(u:2, i:2)這條邊,一方面是因為增加這條邊不會對結果有所改進,另一方面則是因為增加一條邊會增加圖的空間復雜度和時間復雜度。
地點上下文信息
??不同地區的用戶興趣有所不同,用戶到了不同的地方興趣也會發生變化。文中作者提到了幾種基于地點上下文信息的推薦算法,其本質還是協同過濾算法,只是利用地點信息對原數據集進行新的劃分,從而得到不同的統計值,此時相同兩個用戶或者物品之間的相似度在地點不同的情況下是有所不同的,最后的推薦列表也會有所變化。
個人總結:時間信息和地點信息對推薦結果的幫助是毋庸置疑的。從特征的角度來看,我感覺加入時間信息和地點信息其實是對特征的細粒化,此時可以看作是用戶特征或者物品特征與時間特征或者地點特征的二階交互。