協同過濾的實現算法
一、收集用戶偏好及標準化處理ide
要從用戶的行爲和偏好中發現規律,並基於此給予推薦,如何收集用戶的偏好信息成爲系統推薦效果最基礎的決定因素。用戶有不少方式向系統提供本身的偏好信息,並且不一樣的應用也可能大不相同。idea
以上列舉的用戶行爲都是比較通用的,推薦引擎設計人員能夠根據本身應用的特色添加特殊的用戶行爲,並用他們表示用戶對物品的喜愛。在通常應用中,咱們提取的用戶行爲通常都多於一種,關於如何組合這些不一樣的用戶行爲,基本上有如下兩種方式:spa
二、數據減噪和歸一化設計
收集了用戶行爲數據,咱們還須要對數據進行必定的預處理,其中最核心的工做就是:減噪和歸一化。3d
進行的預處理後,根據不一樣應用的行爲分析方法,能夠選擇分組或者加權處理,以後咱們能夠獲得一個用戶偏好的二維矩陣,一維是用戶列表,另外一維是物品列表,值是用戶對物品的偏好,通常是 [0,1] 或者 [-1, 1] 的浮點數值。blog
三、找到類似的用戶或物品ci
當已經對用戶行爲進行分析獲得用戶喜愛後,咱們能夠根據用戶喜愛計算類似用戶和物品,而後基於類似用戶或者物品進行推薦,這就是最典型的 CF 的兩個分支:基於用戶的 CF 和基於物品的 CF。這兩種方法都須要計算類似度。關於類似度的計算,現有的幾種基本方法都是基於向量(Vector)的,其實也就是計算兩個向量的距離,距離越近類似度越大。在推薦的場景中,在用 戶 - 物品偏好的二維矩陣中,咱們能夠將一個用戶對全部物品的偏好做爲一個向量來計算用戶之間的類似度,或者將全部用戶對某個物品的偏好做爲一個向量來計算物品之間的類似度。數據挖掘
3.1 經常使用的類似度計算方法io
3.2 類似鄰居的計算
四、計算基於用戶的協同過濾(User CF)
例子:
對於用戶 A,根據用戶的歷史偏好,這裏只計算獲得一個鄰居 - 用戶 C,而後將用戶 C 喜歡的物品 D 推薦給用戶 A。
五、計算基於物品的協同過濾(Item CF)
例子:
對於物品 A,根據全部用戶的歷史偏好,喜歡物品 A 的用戶都喜歡物品 C,得出物品 A 和物品 C 比較類似,而用戶 C 喜歡物品 A,那麼能夠推斷出用戶 C 可能也喜歡物品 C。