協同過濾推薦算法是最重要的算法,它是基於協同過濾算法的物品分為基於用戶的協作過濾算法。
本文介紹了基於用戶的協同過濾算法。簡單的說,給用戶u推薦。所以只要找出誰和u課前行為似用戶。這與u較像的用戶。把他們的行為推薦給用戶u就可以。
所以基於用戶的系統過濾算法包含兩個步驟:1)找到和目標用戶興趣相似的用戶集合 2)找到這個集合中的用戶喜歡的。且目標用戶沒有聽說過的物品推薦給目標用戶。
第一步的關鍵點在於計算用戶之間的相似度。相似度一般通過Jaccard公式或者余弦相似度即可求得,及計算共同擁有行為所占的比重(詳細式子google即可。csdn插入公式不方便。。
。),所以眼下而言,計算用戶相似度的復雜度是O(N*N), N為用戶數量。在用戶數比較大的站點中不有用。比方亞馬遜用戶數量肯定N>100000。那么這種復雜度是不可接受的。
第一步時間復雜度的改進方法:由於非常多用戶間事實上相似度是為0的,假設看成是一個N*N的矩陣的話。肯定是個稀疏矩陣,那么我們事實上沒有必要浪費計算量在這些0上。我們能夠建立物品到用戶的倒查表,及能夠依據物品找到全部對該物品有過行為的用戶,然后遍歷各物品,對一個物品然后找到對該物品有過行為的用戶,然后計算這些用戶間的行為相似度(共同擁有行為+1。同一時候計算這些用戶的行為數)。最后計算兩用戶間的公有行為占各自行為的比重。
第一步計算相似度的改進方法:舉個樣例:假設兩人都買過《新華辭典》,並不能說明這兩人想像,由於這本書基本上人人都會買,而假設這兩人都買過《機器學習》,那么我們能夠肯定,這兩人在這方面有相同的興趣愛好。也就是說,越是對冷門物品有相同的行為,就越說明用戶的相似性,即在計算用戶相似性的時候,須要減少熱門物品的影響(通過計算流行度來實現。然后用1/N(i)來計算公共行為比重,N(i)表示流行度,這樣。流行度高的物品所占比重就比較低)
第二步則比較簡單,選出K個和用戶u最相似的用戶。把他們喜歡過的物品而且用戶u沒有喜歡過的物品推薦給u就可以。這里面K的選擇很重要。K越大。推薦的結果就越熱門,流行度就越高,同一時候覆蓋率越低,由於基本推薦的都是流行的物品.
第二步評分預測改進方法:一般來說並非全部第二步中的物品都會推薦給用戶,由於這種物品還是許多的,一般來說我們會選擇topN, 選用戶可能最感興趣的N個商品。那么要選擇前N個商品,肯定是依據評分來進行排序,這樣便會遇到一個問題。不同人的評分基點不同。比方A評分基點在4,好看的電影評5分,不好看的評3分。可是B基點是2。好看的評3分,不好看的評1分,這種話直接依據評分來計算是不精確的,改進方法是計算用戶在基點上的評分,如A對好看的電影給了(5-4)分,對不好看的電影給了(3-4)分,B對好看的電影給了(3-2)分,對不好看的電影給了(1-2)分。這樣來看事實上兩者對評價這部電影是一流的似的,在影片的計算建議您需要得分的時候,只需要計算平均鄰里值加用戶的角度(共同海損值計數)
基於用戶的協同過濾算法在實際不到,部分原因是因為更多的用戶,該算法的復雜度還是非常高的,在此建議另一個方面是很難給出推薦理由,人們普遍的行業選擇基於項目的協同過濾算法。
