天天看點

協同過濾算法介紹

在現今的推薦技術和算法中,最被大家廣泛認可和采用的就是基于協同過濾的推薦方法。本文将帶你深入了解協同過濾的秘密。

1 什麼是協同過濾

協同過濾是利用集體智慧的一個典型方法。要了解什麼是協同過濾 (collaborative

filtering, 簡稱 cf),首先想一個簡單的問題,如果你現在想看個電影,但你不知道具體看哪部,你會怎麼做?大部分的人會問問周圍的朋友,看看最近有什麼好看的電影推薦,而我們一般更傾向于從口味比較類似的朋友那裡得到推薦。這就是協同過濾的核心思想。

換句話說,就是借鑒和你相關人群的觀點來進行推薦,很好了解。

2 協同過濾的實作

要實作協同過濾的推薦算法,要進行以下三個步驟:

收集資料——找到相似使用者和物品——進行推薦

收集資料

這裡的資料指的都是使用者的曆史行為資料,比如使用者的購買曆史,關注,收藏行為,或者發表了某些評論,給某個物品打了多少分等等,這些都可以用來作為資料供推薦算法使用,服務于推薦算法。需要特别指出的在于,不同的資料準确性不同,粒度也不同,在使用時需要考慮到噪音所帶來的影響。

找到相似使用者和物品

這一步也很簡單,其實就是計算使用者間以及物品間的相似度。以下是幾種計算相似度的方法:

  歐幾裡德距離

  

協同過濾算法介紹
協同過濾算法介紹

  皮爾遜相關系數

協同過濾算法介紹

  cosine

相似度

協同過濾算法介紹

  tanimoto

系數

協同過濾算法介紹

進行推薦

在知道了如何計算相似度後,就可以進行推薦了。

在協同過濾中,有兩種主流方法:基于使用者的協同過濾,和基于物品的協同過濾。具體怎麼來闡述他們的原理呢,看個圖大家就明白了

基于使用者的 cf 的基本思想相當簡單,基于使用者對物品的偏好找到相鄰鄰居使用者,然後将鄰居使用者喜歡的推薦給目前使用者。計算上,就是将一個使用者對所有物品的偏好作為一個向量來計算使用者之間的相似度,找到

k 鄰居後,根據鄰居的相似度權重以及他們對物品的偏好,預測目前使用者沒有偏好的未涉及物品,計算得到一個排序的物品清單作為推薦。 下圖給出了一個例子,對于使用者 a,根據使用者的曆史偏好,這裡隻計算得到一個鄰居 - 使用者 c,然後将使用者 c 喜歡的物品 d 推薦給使用者 a。

協同過濾算法介紹

基于物品的

cf 的原理和基于使用者的 cf 類似,隻是在計算鄰居時采用物品本身,而不是從使用者的角度,即基于使用者對物品的偏好找到相似的物品,然後根據使用者的曆史偏好,推薦相似的物品給他。從計算的角度看,就是将所有使用者對某個物品的偏好作為一個向量來計算物品之間的相似度,得到物品的相似物品後,根據使用者曆史的偏好預測目前使用者還沒有表示偏好的物品,計算得到一個排序的物品清單作為推薦。下圖給出了一個例子,對于物品

a,根據所有使用者的曆史偏好,喜歡物品 a 的使用者都喜歡物品 c,得出物品 a 和物品 c 比較相似,而使用者 c 喜歡物品 a,那麼可以推斷出使用者 c 可能也喜歡物品 c。

協同過濾算法介紹

總結

  以上兩個方法都能很好的給出推薦,并可以達到不錯的效果。但是他們之間還是有不同之處的,而且适用性也有差別。下面進行一下對比

  計算複雜度

  item

cf 和 user cf 是基于協同過濾推薦的兩個最基本的算法,user cf 是很早以前就提出來了,item cf 是從 amazon 的論文和專利發表之後(2001 年左右)開始流行,大家都覺得 item cf 從性能和複雜度上比 user cf 更優,其中的一個主要原因就是對于一個線上網站,使用者的數量往往大大超過物品的數量,同時物品的資料相對穩定,是以計算物品的相似度不但計算量較小,同時也不必頻繁更新。但我們往往忽略了這種情況隻适應于提供商品的電子商務網站,對于新聞,部落格或者微内容的推薦系統,情況往往是相反的,物品的數量是海量的,同時也是更新頻繁的,是以單從複雜度的角度,這兩個算法在不同的系統中各有優勢,推薦引擎的設計者需要根據自己應用的特點選擇更加合适的算法。

  适用場景

  在非社交網絡的網站中,内容内在的聯系是很重要的推薦原則,它比基于相似使用者的推薦原則更加有效。比如在購書網站上,當你看一本書的時候,推薦引擎會給你推薦相關的書籍,這個推薦的重要性遠遠超過了網站首頁對該使用者的綜合推薦。可以看到,在這種情況下,item

cf 的推薦成為了引導使用者浏覽的重要手段。同時 item cf 便于為推薦做出解釋,在一個非社交網絡的網站中,給某個使用者推薦一本書,同時給出的解釋是某某和你有相似興趣的人也看了這本書,這很難讓使用者信服,因為使用者可能根本不認識那個人;但如果解釋說是因為這本書和你以前看的某本書相似,使用者可能就覺得合理而采納了此推薦。

  相反的,在現今很流行的社交網絡站點中,user cf 是一個更不錯的選擇,user cf 加上社會網絡資訊,可以增加使用者對推薦解釋的信服程度。

繼續閱讀