CF算法分為兩大類,一類為基於memory的(Memory-based),也叫基於用戶的(User-based),另一類為基於Model的(Model-based),也叫基於物品的(Item-based)。 User-based的基本思想是如果用戶A喜歡物品a,用戶B喜歡物品a、b、c,用戶C喜歡a和c,那么認為用戶A與用戶B和C相似,因為他們都喜歡a,而喜歡a的用戶同時也喜歡c,所以把c推薦給用戶A。該算法用最近鄰居(nearest-neighbor)算法找出一個用戶的鄰居集合,該集合的用戶和該用戶有相似的喜好,算法根據鄰居的偏好對該用戶進行預測。 User-based算法存在兩個重大問題: 1. 數據稀疏性。一個大型的電子商務推薦系統一般有非常多的物品,用戶可能買的其中不到1%的物品,不同用戶之間買的物品重疊性較低,導致算法無法找到一個用戶的鄰居,即偏好相似的用戶。 2. 算法擴展性。最近鄰居算法的計算量隨着用戶和物品數量的增加而增加,不適合數據量大的情況使用。 Iterm-based的基本思想是預先根據所有用戶的歷史偏好數據計算物品之間的相似性,然后把與用戶喜歡的物品相類似的物品推薦給用戶。還是以之前的例子為例,可以知道物品a和c非常相似,因為喜歡a的用戶同時也喜歡c,而用戶A喜歡a,所以把c推薦給用戶A。 因為物品直接的相似性相對比較固定,所以可以預先在線下計算好不同物品之間的相似度,把結果存在表中,當推薦時進行查表,計算用戶可能的打分值,可以同時解決上面兩個問題。