什么是基于物品的協(xié)同過濾算法
基于物品的協(xié)同過濾算法(ItemCF)是業(yè)界應(yīng)用最多的算法,主要思想是利用用戶之前有過的行為,給用戶推薦和之前物品類似的物品。
基于物品的協(xié)同過濾算法主要分為兩步:
1)計(jì)算物品之間的相似度。
2)根據(jù)物品的相似度和用戶的歷史行為給用戶生成推薦列表。
第一步的關(guān)鍵點(diǎn)在于計(jì)算物品之間的相似度,這里并不采用基于內(nèi)容的相似性,而是去計(jì)算在喜歡物品i的用戶中有多少是喜歡物品j的,這樣計(jì)算的前提是用戶的興趣愛好一般是比較確定的,不容易變,那么當(dāng)一個(gè)用戶對(duì)兩個(gè)物品都喜歡的時(shí)候,我們往往可以認(rèn)為這兩個(gè)物品可能屬于同一分類。令N(i)表示購(gòu)買物品i的用戶數(shù),則物品i和物品j的相似度可以用wij = |N(i)&N(j)|/N(i)來計(jì)算。
第一步時(shí)間復(fù)雜度的改進(jìn)方法:和UserCF類似,我們可以建立一張用戶-物品的倒查表,這樣每次去計(jì)算一個(gè)用戶有過行為的那些物品間的相似度,能夠保證計(jì)算的相似度都是有用的,而不用花大的計(jì)算量在那些0上面(肯定是個(gè)稀疏矩陣)
第一步相似度的改進(jìn)方法1:若根據(jù)上面的公式來計(jì)算相似度,你會(huì)發(fā)現(xiàn),物品i跟流行物品j的相似度很高,因?yàn)榱餍凶x高,所以基本人人都會(huì)買,這樣的話流行度高的物品就比較沒有區(qū)分度,所以我們需要懲罰流行物品j的權(quán)重wij = |N(i)&N(j)|/sqrt(N(i)*N(j))
第一步相似度的改進(jìn)方法2:需要懲罰用戶的活躍度。若用戶活躍度比較低,只買了有限的幾本書,那么這幾本書很有可能在一個(gè)或者兩個(gè)興趣范圍內(nèi),對(duì)計(jì)算物品相似度比較有用,但是如果說一書店賣家趁著打折把亞馬遜90%的書都買了然后賺差價(jià),那么該用戶的行為對(duì)計(jì)算物品相似度就沒什么作用,因?yàn)?0%的書肯定會(huì)覆蓋很多范圍,故應(yīng)該像改進(jìn)方法一中懲罰用戶的活躍度。
第一步相似度的改進(jìn)方法3:物品相似度的歸一話。歸一化不僅僅能提高推薦的準(zhǔn)確度,還可以提高推薦的覆蓋率和多樣性。比如亞馬遜上,用戶的興趣愛好肯定是分成幾類的,很少說愛好集中在一類。假設(shè)有兩類A和B,A類之間的相似度為0.5, B類之間的相似度為0.8,A和B之間的相似度為0.2, 當(dāng)用戶買了5本A類的書和5本B類的書后,我們要給用戶來推薦書,如果按照之前的方法,最后按照相似度排序,那么推薦的應(yīng)該都會(huì)是B類物品,就算B類中排名比較低,但照樣比A類要高阿,所以應(yīng)該根據(jù)類別進(jìn)行相似度的歸一話,這樣一來A的相似度為1,B的相似度也為1,這樣的話排序后的推薦A,B類商品都有,就大大提高了準(zhǔn)確度,覆蓋率和多樣性。
第二步則比較簡(jiǎn)單,計(jì)算物品與用戶已買物品的相似度(權(quán)重和),然后根據(jù)相似度排序選出topN.
ItemCF在實(shí)際系統(tǒng)中運(yùn)用的比較多,主要有兩個(gè)優(yōu)點(diǎn):
1)item-item表相比如user-user表要小的多,處理起來比較容易
2)itemCF容易提供推薦理由,比如給你推薦《機(jī)器學(xué)習(xí)》是因?yàn)槟阒百I過《數(shù)據(jù)挖掘》,這樣能增加信任度,提高用戶和推薦系統(tǒng)的交互,進(jìn)一步增強(qiáng)個(gè)性化推薦