基於CF的經常使用i2i算法

基於協同過濾的i2i(item to item)算法在推薦系統中是最普遍使用的一種召回算法。一般做爲啓動階段的base model做爲後續算法迭代的基準,具備開發便捷,訓練速度快等特色,而且通常效果都不會太差。算法

咱們一般所說的i2i如非特別強調大多指CF系列的算法,CF算法在做爲i2i召回使用時,一般不使用矩陣分解的思路,而是經過共現指標的統計量直接計算。這種計算方法一般有三種,下面逐一介紹。開發

item based CF

基於物品的協同過濾,指以item爲中心,經過item和item之間有共同行爲(通常指點擊,購買等)的用戶數量及這部分用戶的行爲統計量來計算item之間類似度的方法。能夠認爲是一種i2u2i的方法。有了item和item之間的類似度,經過一個用戶的訪問歷史記錄做爲trigger,便可經過i2i召回新的item給源用戶。it

計算公式以下:sed

$$Sim(I_1,I_2)= \frac{\sum_{u \in I_1^u \cap I_2^u \frac {1}{\log{(1+N_u)}}}}{\sqrt{N_{I_1}N_{I_2}}}$$model

上面公式中,$I_1和I_2$是任意兩個item,其類似度由兩個物品的統計量計算得出,其中$N_{I_i}$指物品$I_i$的總點擊次數。分母部分的積起到歸一化的做用,削弱熱門物品的影響。分子部分是對這兩個物品同時有行爲的用戶的點擊次數的倒數和。方法

從這個公式中能夠看出,共同訪問兩個物品的用戶越多,類似度越大,且共同訪問這兩個item的用戶自己的行爲數量越少,即$N_u$越小,這個用戶貢獻的類似度越大。im

user based CF

基於用戶的CF算法和item based CF相似。只是變成以用戶爲中心,經過計算兩個用戶的共同訪問的item的統計指標來計算兩個用戶之間的類似度。本質上計算的是兩個用戶的類似度,不能直接用來推薦item,但經過類似用戶召回,再把召回的類似用戶訪問過的item推薦給源用戶,便可實現u2i推薦。統計

user based cf的公式和item based cf基本同樣,只是把分子中的物品的被訪問次數換成用戶的訪問次數,分子換爲兩個用戶共同訪問過的物品的統計量便可。swing

swing

swing算法計算的也是i2i的類似度,理論上也能夠計算u2u,但通常不這麼幹。
Swing本質上是基於圖結構的一種CF,用戶和物品的二部圖中會存在不少這種(𝑢1,𝑢2,𝑖1)關係, 即用戶 1 和 2 都購買過物品 𝑖,這其實是 3 階交互關係。傳統的啓發式近鄰方法只關注用戶和物品之間的二階交互關係。Swing 會關注這種 3 階關係。這種方法的一個直覺來源於,若是多個 user 在點擊了 𝑖1 的同時,都只共同點了某一個其餘的 𝑖2,那麼 𝑖1 和 𝑖2 必定是強關聯的,這種未知的強關聯關係至關因而經過用戶來傳遞的。另外一方面,若是兩個 user pair 對之間構成的 swing 結構越多,則每一個結構越弱,在這個 pair 對上每一個節點分到的權重越低。公式以下:
$$Sim(i,j) = \sum\limits_{u \in (U_i \cap U_j)}\sum\limits_{v \in (U_i \cap U_j)} \frac{1}{\alpha+|I_u\cap I_v|}$$
爲了衡量物品 i 和 j 的類似性,考察都購買了物品 𝑖 和 𝑗 的用戶 𝑢 和 𝑣, 若是這兩個用戶共同購買的物品越少,則物品 𝑖 和 𝑗 的類似性越高。極端狀況下,兩個用戶都購買了某個物品,且兩個用戶全部購買的物品中,共同購買的物品只有這兩個,說明這兩個用戶興趣差別很是大,然而卻同時購買了這兩個物品,則說明這兩個物品類似性很是大!推薦系統

相關文章
相關標籤/搜索