推荐算法--时效性(05)
時(shí)效性
推薦系統(tǒng)應(yīng)該考慮時(shí)間效應(yīng),因?yàn)橛脩舻呐d趣是有時(shí)間變化的。用戶一年前喜歡的東西現(xiàn)在不一定感興趣,相比于推薦過(guò)去喜歡的物品,推薦用戶近期喜歡的物品更有參考價(jià)值。而在新聞更是如此,推薦過(guò)去跟用戶興趣一致的新聞已經(jīng)失去了意義。每個(gè)系統(tǒng)時(shí)間效應(yīng)的大小不同,比如時(shí)間對(duì)電影的作用就沒(méi)有新聞那么明顯。要考慮時(shí)效性,必須加入時(shí)間參數(shù),比如三元組(用戶,物品,時(shí)間)代替簡(jiǎn)單的二元組(用戶,物品)。給定時(shí)間 T ,一般化的時(shí)間衰減公式為:
其中??是物品 i 最近的流行度,是時(shí)間衰減參數(shù),對(duì)于時(shí)效性明顯的系統(tǒng),應(yīng)該越大。代碼實(shí)現(xiàn)如下:
時(shí)效性的 ItemCF 算法
前面提到的 ItemCF 算法有兩個(gè)核心組成,(1)物品相似度矩陣(2)基于用戶歷史行為做推薦
(1)加入時(shí)效性考慮,用戶在相隔很短的時(shí)間內(nèi)喜歡的物品的相似度應(yīng)該高于時(shí)間跨度比較大的用戶喜歡物品之間的相似度。原來(lái)的物品相似度公式為:
在得到時(shí)間信息(用戶對(duì)物品產(chǎn)生行為的時(shí)間)后,加入時(shí)間衰減函數(shù)的公式如下:
衰減項(xiàng)中,其中?是用戶u 對(duì)物品 i 產(chǎn)生行為的時(shí)間。f 函數(shù)的意義是,用戶對(duì)物品 i 和物品 j 產(chǎn)生行為的時(shí)間越遠(yuǎn),則??越小。可以找到很多數(shù)學(xué)衰減函數(shù),比如
是時(shí)間衰減參數(shù),它的取值在不同的系統(tǒng)中不同。系統(tǒng)用戶興趣變化的越快,應(yīng)該越大。改進(jìn)后的 ItemCF 算法的物品相似度矩陣計(jì)算代碼如下所示:
除了考慮時(shí)間對(duì)物品相似度的影響,還要考慮時(shí)間信息對(duì)推薦預(yù)測(cè)的影響。一般來(lái)說(shuō),用戶最近的喜好應(yīng)該和用戶興趣關(guān)系更大,需要將時(shí)間比較久的過(guò)去的喜歡的物品加上時(shí)間衰減函數(shù)。
其中??是現(xiàn)在的時(shí)間,?是用戶u 對(duì) 物品 i 評(píng)價(jià)過(guò)的時(shí)間。 代碼修改如下:
時(shí)效性的 UserCF 算法
類似 ItemCF ,UserCF 也有兩個(gè)核心。(1)計(jì)算用戶相似度矩陣(2)基于相似用戶興趣做推薦
(1)加入時(shí)效性考慮,如果兩個(gè)用戶在比較近的時(shí)間里有共同的喜好,則比在不同時(shí)間段用戶有相同喜好的參考意義更大。回顧原來(lái)的用戶相似度公式如下:
其中 N(u) 是用戶 u 喜歡的物品集合,N(v) 是用戶 v 喜歡的物品集合。加入時(shí)間衰減因子修正公式如下:
其中??是用戶 u 喜歡物品 i 的時(shí)間,?是用戶 v 喜歡物品 i 的時(shí)間。代碼如下:
同樣地,處了考慮時(shí)間信息對(duì)用戶相似度矩陣的影響,還應(yīng)該考慮時(shí)間信息對(duì)推薦算法的影響。找到相似的用戶后,認(rèn)為推薦相似用戶近期感興趣的物品比推薦過(guò)去感興趣的物品更有意義。原來(lái)的 UserCF 算法中用戶 u 對(duì)物品 i 的興趣公式如下:
加入時(shí)間衰減函數(shù)后,改進(jìn) UserCF 推薦公式如下:
其中?代表現(xiàn)在的時(shí)間,?代表相似的用戶 v 喜歡物品 i 的時(shí)間。改進(jìn)后的推薦算法代碼如下:
總結(jié)
以上是生活随笔為你收集整理的推荐算法--时效性(05)的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
                            
                        - 上一篇: 《Python Cookbook 3rd
 - 下一篇: Python外卷(8)--pdist,