1.最近最熱門
給定時(shí)間T,物品i最近的流行度ni(T)可以定義為:

這里,α是時(shí)間衰減函數(shù)。
下面的python代碼實(shí)現(xiàn)了上面的計(jì)算公式:

2.時(shí)間上下文相關(guān)的ItemCF算法
首先回顧一下前面提到的基于物品的協(xié)同過(guò)濾算法,它通過(guò)如下公式計(jì)算物品的相似度:

而在給用戶 u 做推薦時(shí),用戶 u 對(duì)物品 i 的興趣 p(u,i) 通過(guò)如下公式計(jì)算:

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

注意,上面的公式在分子中引入了和時(shí)間有關(guān)的衰減項(xiàng)f(|t ui - t uj|),其中t ui是用戶u對(duì)物品i產(chǎn)生行為的時(shí)間。 f 函數(shù)的含義是,用戶對(duì)物品 i 和物品 j 產(chǎn)生行為的時(shí)間越遠(yuǎn),則f(|t ui - t uj|)越小。這里令

α是時(shí)間衰減參數(shù),它的取值在不同系統(tǒng)中不同。如果一個(gè)系統(tǒng)用戶興趣變化很快,就應(yīng)該取比較大的α,反之需要取比較小的α。
改進(jìn)后 ItemCF 的相似度可以通過(guò)如下代碼實(shí)現(xiàn):

除了考慮時(shí)間信息對(duì)相關(guān)表的影響,我們也應(yīng)該考慮時(shí)間信息對(duì)預(yù)測(cè)公式的影響。一般來(lái)說(shuō),用戶現(xiàn)在的行為應(yīng)該和用戶最近的行為關(guān)系更大。因此,我們可以通過(guò)如下方式修正預(yù)測(cè)公式:

其中,t0是當(dāng)前時(shí)間。上面的公式表明,t uj越靠近t0,和物品 j 相似的物品就會(huì)在用戶 u 的推薦列表中獲得越高的排名。β是時(shí)間衰減參數(shù),需要根據(jù)不同的數(shù)據(jù)集選擇合適的值。上面的推薦算法可以通過(guò)如下代碼實(shí)現(xiàn)。

3.時(shí)間上下文相關(guān)的UserCF算法
首先回顧一下 UserCF 的推薦公式。 UserCF 通過(guò)如下公式計(jì)算用戶 u 和用戶 v 的興趣相似度:

其中 N(u) 是用戶 u 喜歡的物品集合, N(v) 是用戶 v 喜歡的物品集合。可以利用如下方式考慮時(shí)間信息:

上面公式的分子對(duì)于用戶 u 和用戶 v 共同喜歡的物品 i 增加了一個(gè)時(shí)間衰減因子。用戶 u 和用戶v 對(duì)物品 i 產(chǎn)生行為的時(shí)間越遠(yuǎn),那么這兩個(gè)用戶的興趣相似度就會(huì)越小。

在得到用戶相似度后, UserCF 通過(guò)如下公式預(yù)測(cè)用戶對(duì)物品的興趣:

其中, S(u,K) 包含了和用戶 u 興趣最接近的 K 個(gè)用戶。如果用戶 v 對(duì)物品 i 產(chǎn)生過(guò)行為,那么r vi=1,否則r vi=0。
如果考慮和用戶 u 興趣相似用戶的最近興趣,我們可以設(shè)計(jì)如下公式:

