協同過濾的實現步驟

協同過濾的實現算法

一、收集用戶偏好及標準化處理ide

要從用戶的行爲和偏好中發現規律,並基於此給予推薦,如何收集用戶的偏好信息成爲系統推薦效果最基礎的決定因素。用戶有不少方式向系統提供本身的偏好信息,並且不一樣的應用也可能大不相同。idea

以上列舉的用戶行爲都是比較通用的,推薦引擎設計人員能夠根據本身應用的特色添加特殊的用戶行爲,並用他們表示用戶對物品的喜愛。在通常應用中,咱們提取的用戶行爲通常都多於一種,關於如何組合這些不一樣的用戶行爲,基本上有如下兩種方式:spa

  • 將不一樣的行爲分組:通常能夠分爲「查看」和「購買」等等,而後基於不一樣的行爲,計算不一樣的用戶 / 物品類似度。好比:「購買了該圖書的人還購買了 ...」,「查看了圖書的人還查看了 ...
  • 根據不一樣行爲反映用戶喜愛的程度將它們進行加權,獲得用戶對於物品的整體喜愛。通常來講,顯式的用戶反饋比隱式的權值大,但比較稀疏,畢竟進行顯示反饋的用戶是少數;同時相對於「查看」,「購買」行爲反映用戶喜愛的程度更大,但這也因應用而異。

二、數據減噪和歸一化設計

收集了用戶行爲數據,咱們還須要對數據進行必定的預處理,其中最核心的工做就是:減噪和歸一化3d

  • 減噪:用戶行爲數據是用戶在使用應用過程當中產生的,它可能存在大量的噪音和用戶的誤操做,咱們能夠經過經典的數據挖掘算法過濾掉行爲數據中的噪音,這樣能夠是咱們的分析更加精確。
  • 歸一化:如前面講到的,在計算用戶對物品的喜愛程度時,可能須要對不一樣的行爲數據進行加權。但能夠想象,不一樣行爲的數據取值可能相差很 大,好比,用戶的查看數據必然比購買數據大的多,如何將各個行爲的數據統一在一個相同的取值範圍中,從而使得加權求和獲得的整體喜愛更加精確,就須要咱們 進行歸一化處理。最簡單的歸一化處理,就是將各種數據除以此類中的最大值,以保證歸一化後的數據取值在 [0,1] 範圍中。

進行的預處理後,根據不一樣應用的行爲分析方法,能夠選擇分組或者加權處理,以後咱們能夠獲得一個用戶偏好的二維矩陣,一維是用戶列表,另外一維是物品列表,值是用戶對物品的偏好,通常是 [0,1] 或者 [-1, 1] 的浮點數值。blog

三、找到類似的用戶或物品ci

當已經對用戶行爲進行分析獲得用戶喜愛後,咱們能夠根據用戶喜愛計算類似用戶和物品,而後基於類似用戶或者物品進行推薦,這就是最典型的 CF 的兩個分支:基於用戶的 CF 和基於物品的 CF。這兩種方法都須要計算類似度。關於類似度的計算,現有的幾種基本方法都是基於向量(Vector)的,其實也就是計算兩個向量的距離,距離越近類似度越大。在推薦的場景中,在用  - 物品偏好的二維矩陣中,咱們能夠將一個用戶對全部物品的偏好做爲一個向量來計算用戶之間的類似度,或者將全部用戶對某個物品的偏好做爲一個向量來計算物品之間的類似度。數據挖掘

3.1 經常使用的類似度計算方法io

  • 歐幾里德距離(Euclidean Distance
  • 皮爾遜相關係數(Pearson Correlation Coefficient
  • Tanimoto 係數(Tanimoto Coefficient

3.2 類似鄰居的計算

  • 固定數量的鄰居:K-neighborhoods 或者 Fix-size neighborhoods
  • 基於類似度門檻的鄰居:Threshold-based neighborhoods

 

四、計算基於用戶的協同過濾(User CF)

例子:

對於用戶 A,根據用戶的歷史偏好,這裏只計算獲得一個鄰居 - 用戶 C,而後將用戶 C 喜歡的物品 D 推薦給用戶 A

 

五、計算基於物品的協同過濾(Item CF)

 例子:

對於物品 A,根據全部用戶的歷史偏好,喜歡物品 A 的用戶都喜歡物品 C,得出物品 A 和物品 C 比較類似,而用戶 C 喜歡物品 A,那麼能夠推斷出用戶 C 可能也喜歡物品 C

相關文章
相關標籤/搜索