基於用戶的推薦協同過濾算法的算法

協同過濾推薦算法是最重要的算法,它是基於協同過濾算法的物品分爲基於用戶的協做過濾算法。算法


本文介紹了基於用戶的協同過濾算法。簡單的說,給用戶u推薦。因此只要找出誰和u課前行爲似用戶。這與u較像的用戶。把他們的行爲推薦給用戶u就能夠。機器學習

因此基於用戶的系統過濾算法包含兩個步驟:1)找到和目標用戶興趣類似的用戶集合  2)找到這個集合中的用戶喜歡的。且目標用戶沒有據說過的物品推薦給目標用戶。學習


第一步的關鍵點在於計算用戶之間的類似度。類似度通常經過Jaccard公式或者餘弦類似度便可求得,及計算共同擁有行爲所佔的比重(詳細式子google便可。csdn插入公式不方便。。google

。),因此眼下而言,計算用戶類似度的複雜度是O(N*N), N爲用戶數量。在用戶數比較大的站點中不有用。比方亞馬遜用戶數量確定N>100000。那麼這種複雜度是不可接受的。 排序

第一步時間複雜度的改進方法:因爲很是多用戶間事實上類似度是爲0的,假設當作是一個N*N的矩陣的話。確定是個稀疏矩陣,那麼咱們事實上沒有必要浪費計算量在這些0上。咱們可以創建物品到用戶的倒查表,及可以依據物品找到所有對該物品有過行爲的用戶,而後遍歷各物品,對一個物品而後找到對該物品有過行爲的用戶,而後計算這些用戶間的行爲類似度(共同擁有行爲+1。同一時候計算這些用戶的行爲數)。最後計算兩用戶間的公有行爲佔各自行爲的比重。class

第一步計算類似度的改進方法:舉個樣例:假設兩人都買過《新華辭典》,並不能說明這兩人想像,因爲這本書基本上人人都會買,而假設這兩人都買過《機器學習》,那麼咱們可以確定,這兩人在這方面有相同的興趣愛好。也就是說,越是對冷門物品有相同的行爲,就越說明用戶的類似性,即在計算用戶類似性的時候,需要減小熱門物品的影響(經過計算流行度來實現。而後用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)分。這樣來看事實上二者對評價這部電影是一流的似的,在影片的計算建議您須要得分的時候,只須要計算平均鄰里值加用戶的角度(共同海損值計數)項目


基於用戶的協同過濾算法在實際不到,部分緣由是由於更多的用戶,該算法的複雜度仍是很是高的,在此建議另外一個方面是很難給出推薦理由,人們廣泛的行業選擇基於項目的協同過濾算法。top

相關文章
相關標籤/搜索