1.最近最熱門
給定時間T,物品i最近的流行度ni(T)可以定義為:
這里,α是時間衰減函數(shù)。
下面的python代碼實現(xiàn)了上面的計算公式:
2.時間上下文相關的ItemCF算法
首先回顧一下前面提到的基于物品的協(xié)同過濾算法,它通過如下公式計算物品的相似度:
而在給用戶 u 做推薦時,用戶 u 對物品 i 的興趣 p(u,i) 通過如下公式計算:
在得到時間信息(用戶對物品產生行為的時間)后,我們可以通過如下公式改進相似度計算
注意,上面的公式在分子中引入了和時間有關的衰減項f(|t ui - t uj|),其中t ui是用戶u對物品i產生行為的時間。 f 函數(shù)的含義是,用戶對物品 i 和物品 j 產生行為的時間越遠,則f(|t ui - t uj|)越小。這里令
α是時間衰減參數(shù),它的取值在不同系統(tǒng)中不同。如果一個系統(tǒng)用戶興趣變化很快,就應該取比較大的α,反之需要取比較小的α。
改進后 ItemCF 的相似度可以通過如下代碼實現(xiàn):
除了考慮時間信息對相關表的影響,我們也應該考慮時間信息對預測公式的影響。一般來說,用戶現(xiàn)在的行為應該和用戶最近的行為關系更大。因此,我們可以通過如下方式修正預測公式:
其中,t0是當前時間。上面的公式表明,t uj越靠近t0,和物品 j 相似的物品就會在用戶 u 的推薦列表中獲得越高的排名。β是時間衰減參數(shù),需要根據(jù)不同的數(shù)據(jù)集選擇合適的值。上面的推薦算法可以通過如下代碼實現(xiàn)。
3.時間上下文相關的UserCF算法
首先回顧一下 UserCF 的推薦公式。 UserCF 通過如下公式計算用戶 u 和用戶 v 的興趣相似度:
其中 N(u) 是用戶 u 喜歡的物品集合, N(v) 是用戶 v 喜歡的物品集合。可以利用如下方式考慮時間信息:
上面公式的分子對于用戶 u 和用戶 v 共同喜歡的物品 i 增加了一個時間衰減因子。用戶 u 和用戶v 對物品 i 產生行為的時間越遠,那么這兩個用戶的興趣相似度就會越小。
在得到用戶相似度后, UserCF 通過如下公式預測用戶對物品的興趣:
其中, S(u,K) 包含了和用戶 u 興趣最接近的 K 個用戶。如果用戶 v 對物品 i 產生過行為,那么r vi=1,否則r vi=0。
如果考慮和用戶 u 興趣相似用戶的最近興趣,我們可以設計如下公式: