協同過濾(Collaborative Filtering)

協同過濾

協同過濾簡單來說是利用某興趣相投、擁有共同經驗之群體的喜好來推薦用戶感興趣的信息,個人通過合作的機制給予信息相當程度的回應(如評分)并記錄下來以達到過濾的目的進而幫助別人篩選信息,回應不一定局限于特別感興趣的,特別不感興趣信息的紀錄也相當重要。協同過濾又可分為評比(rating)或者群體過濾(social filtering)協同過濾以其出色的速度和健壯性,在全球互聯網領域炙手可熱。
  • 定義

1、基于以用戶為基礎(User-based)的協同過濾

基于項目的協同過濾推薦的基本原理也是類似的,只是說它使用所有用戶對物品或者信息的偏好,發現物品和物品之間的相似度,然后根據用戶的歷史偏好信息,將類似的物品推薦給用戶, 很好的詮釋了它的基本原理。

上圖示意出基于用戶的協同過濾推薦機制的基本原理,假設用戶 A 喜歡物品 A,物品 C,用戶 B 喜歡物品 B,用戶 C 喜歡物品 A ,物品 C 和物品 D;從這些用戶的歷史喜好信息中,我們可以發現用戶 A 和用戶 C 的口味和偏好是比較類似的,同時用戶 C 還喜歡物品 D,那么我們可以推斷用戶 A 可能也喜歡物品 D,因此可以將物品 D 推薦給用戶 A。

基于用戶的協同過濾推薦機制和基于人口統計學的推薦機制都是計算用戶的相似度,并基于“鄰居”用戶群計算推薦,但它們所不同的是如何計算用戶的相似度,基于人口統計學的機制只考慮用戶本身的特征,而基于用戶的協同過濾機制可是在用戶的歷史偏好的數據上計算用戶的相似度,它的基本假設是,喜歡類似物品的用戶可能有相同或者相似的口味和偏好。

步驟:1.收集用戶信息
收集可以代表用戶興趣的信息。一般的網站系統使用評分的方式或是給予評價,這種方式被稱為“主動評分”。另外一種是“被動評分”,是根據用戶的行為模式由系統代替用戶完成評價,不需要用戶直接打分或輸入評價數據。電子商務網站在被動評分的數據獲取上有其優勢,用戶購買的商品記錄是相當有用的數據。

2.最近鄰搜索(Nearest neighbor search, NNS)
以用戶為基礎(User-based)的協同過濾的出發點是與用戶興趣愛好相同的另一組用戶,就是計算兩個用戶的相似度。例如:查找n個和A有相似興趣用戶,把他們對M的評分作為A對M的評分預測。一般會根據數據的不同選擇不同的算法,目前較多使用的相似度算法有Pearson Correlation Coefficient、Cosine-based Similarity、Adjusted Cosine Similarity。

3.產生推薦結果
有了最近鄰集合,就可以對目標用戶的興趣進行預測,產生推薦結果。依據推薦目的的不同進行不同形式的推薦,較常見的推薦結果有Top-N 推薦和關系推薦。Top-N 推薦是針對個體用戶產生,對每個人產生不一樣的結果,例如:通過對A用戶的最近鄰用戶進行統計,選擇出現頻率高且在A用戶的評分項目中不存在的,作為推薦結果。關系推薦是對最近鄰用戶的記錄進行關系規則(association rules)挖掘。

2、基于項目(Item-based)的協同過濾

基于項目的協同過濾推薦的基本原理也是類似的,只是說它使用所有用戶對物品或者信息的偏好,發現物品和物品之間的相似度,然后根據用戶的歷史偏好信息,將類似的物品推薦給用戶,很好的詮釋了它的基本原理。

假設用戶 A 喜歡物品 A 和物品 C,用戶 B 喜歡物品 A,物品 B 和物品 C,用戶 C 喜歡物品 A,從這些用戶的歷史喜好可以分析出物品 A 和物品 C 時比較類似的,喜歡物品 A 的人都喜歡物品 C,基于這個數據可以推斷用戶 C 很有可能也喜歡物品 C,所以系統會將物品 C 推薦給用戶 C。

與上面講的類似,基于項目的協同過濾推薦和基于內容的推薦其實都是基于物品相似度預測推薦,只是相似度計算的方法不一樣,前者是從用戶歷史的偏好推斷,而后者是基于物品本身的屬性特征信息。

同時協同過濾,在基于用戶和基于項目兩個策略中應該如何選擇呢?其實基于項目的協同過濾推薦機制是 Amazon 在基于用戶的機制上改良的一種策略,因為在大部分的 Web 站點中,物品的個數是遠遠小于用戶的數量的,而且物品的個數和相似度相對比較穩定,同時基于項目的機制比基于用戶的實時性更好一些。但也不是所有的場景都是這樣的情況,可以設想一下在一些新聞推薦系統中,也許物品,也就是新聞的個數可能大于用戶的個數,而且新聞的更新程度也有很快,所以它的形似度依然不穩定。所以,其實可以看出,推薦策略的選擇其實和具體的應用場景有很大的關系。

步驟:1.收集用戶信息
同以用戶為基礎(User-based)的協同過濾。

2.針對項目的最近鄰搜索
先計算已評價項目和待預測項目的相似度,并以相似度作為權重,加權各已評價項目的分數,得到待預測項目的預測值。例如:要對項目 A 和項目 B 進行相似性計算,要先找出同時對 A 和 B 打過分的組合,對這些組合進行相似度計算,常用的算法同以用戶為基礎(User-based)的協同過濾。

3.產生推薦結果
以項目為基礎的協同過濾不用考慮用戶間的差別,所以精度比較差。但是卻不需要用戶的歷史數據,或是進行用戶識別。對于項目來講,它們之間的相似性要穩定很多,因此可以離線完成工作量最大的相似性計算步驟,從而降低了在線計算量,提高推薦效率,尤其是在用戶多于項目的情形下尤為顯著。

3、基于模型(Model- based)的協同過濾

基于模型的協同過濾推薦就是基于樣本的用戶喜好信息,訓練一個推薦模型,然后根據實時的用戶喜好的信息進行預測,計算推薦。

基于協同過濾的推薦機制是現今應用最廣泛的推薦機制,它有以下幾個顯著優點:

  • 它不需要對物品或者用戶進行嚴格的建模,而且不要求物品的描述是機器可理解的,所以這種方法也是領域無關的。
  • 這種方法計算出來的推薦是開放的,可以共用他人的經驗,很好的支持用戶發現潛在的興趣偏好

而它也存在以下幾個問題:

  • 方法的核心是基于歷史數據,所以對新物品和新用戶都有“冷啟動”的問題。
  • 推薦的效果依賴于用戶歷史偏好數據的多少和準確性。
  • 在大部分的實現中,用戶歷史偏好是用稀疏矩陣進行存儲的,而稀疏矩陣上的計算有些明顯的問題,包括可能少部分人的錯誤偏好會對推薦的準確度有很大的影響等等。
  • 對于一些特殊品味的用戶不能給予很好的推薦。
  • 由于以歷史數據為基礎,抓取和建模用戶的偏好后,很難修改或者根據用戶的使用演變,從而導致這個方法不夠靈活。
優點

1、能夠過濾機器難以自動內容分析的信息,如藝術品,音樂等。
2、共用其他人的經驗,避免了內容分析的不完全或不精確,并且能夠基于一些復雜的,難以表述的概念(如信息質量、個人品味)進行過濾。
3、有推薦新信息的能力??梢园l現內容上完全不相似的信息,用戶對推薦信息的內容事先是預料不到的。可以發現用戶潛在的但自己尚未發現的興趣偏好。
4、推薦個性化、自動化程度高、能夠有效的利用其他相似用戶的回饋信息、加快個性化學習的速度。

缺點

1、新用戶問題(New User Problem) 系統開始時推薦質量較差;
2、新項目問題(New Item Problem) 質量取決于歷史數據集;
3、稀疏性問題(Sparsity);
4、系統延伸性問題(Scalability)。

  • 案例
國外:AMAZON

Amazon 作為推薦引擎的鼻祖,它已經將推薦的思想滲透在應用的各個角落。Amazon 推薦的核心是通過數據挖掘算法和比較用戶的消費偏好于其他用戶進行對比,借以預測用戶可能感興趣的商品。對應于上面介紹的各種推薦機制,Amazon 采用的是分區的混合的機制,并將不同的推薦結果分不同的區顯示給用戶
Amazon 利用可以記錄的所有用戶在站點上的行為,根據不同數據的特點對它們進行處理,并分成不同區為用戶推送推薦:

1、今日推薦 (Today's Recommendation For You): 通常是根據用戶的近期的歷史購買或者查看記錄,并結合時下流行的物品給出一個折中的推薦。

2、新產品的推薦 (New For You): 采用了基于內容的推薦機制 (Content-based Recommendation),將一些新到物品推薦給用戶。在方法選擇上由于新物品沒有大量的用戶喜好信息,所以基于內容的推薦能很好的解決這個“冷啟動”的問題。

3、 (Frequently Bought Together): 采用數據挖掘技術對用戶的購買行為進行分析,找到經常被一起或同一個人購買的物品集,進行捆綁銷售,這是一種典型的基于項目的協同過濾推薦機制。

4、別人購買 / 瀏覽的商品 (Customers Who Bought/See This Item Also Bought/See): 這也是一個典型的基于項目的協同過濾推薦的應用,通過社會化機制用戶能更快更方便的找到自己感興趣的物品。

值得一提的是,Amazon 在做推薦時,設計和用戶體驗也做得特別獨到:

Amazon 利用有它大量歷史數據的優勢,量化推薦原因。

基于社會化的推薦,Amazon 會給你事實的數據,讓用戶信服,例如:購買此物品的用戶百分之多少也購買了那個物品;

基于物品本身的推薦,Amazon 也會列出推薦的理由,例如:因為你的購物框中有 ***,或者因為你購買過 ***,所以給你推薦類似的 ***。

另外,Amazon 很多推薦是基于用戶的 profile 計算出來的,用戶的 profile 中記錄了用戶在 Amazon 上的行為,包括看了那些物品,買了那些物品,收藏夾和 wish list 里的物品等等,當然 Amazon 里還集成了評分等其他的用戶反饋的方式,它們都是 profile 的一部分,同時,Amazon 提供了讓用戶自主管理自己 profile 的功能,通過這種方式用戶可以更明確的告訴推薦引擎他的品味和意圖是什么。

國內案例:豆瓣

當你在豆瓣電影中將一些你看過的或是感興趣的電影加入你看過和想看的列表里,并為它們做相應的評分,這時豆瓣的推薦引擎已經拿到你的一些偏好信息。豆瓣的推薦是通過“豆瓣猜”,為了讓用戶清楚這些推薦是如何來的,豆瓣還給出了“豆瓣猜”的一個簡要的介紹。

“你的個人推薦是根據你的收藏和評價自動得出的,每個人的推薦清單都不同。你的收藏和評價越多,豆瓣給你的推薦會越準確和豐富。
每天推薦的內容可能會有變化。隨著豆瓣的長大,給你推薦的內容也會越來越準。”

這一點讓我們可以清晰明了的知道,豆瓣必然是基于社會化的協同過濾的推薦,這樣用戶越多,用戶的反饋越多,那么推薦的效果會越來越準確。

小結
相對于 Amazon 的用戶行為模型,豆瓣電影的模型更加簡單,就是“看過”和“想看”,這也讓他們的推薦更加專注于用戶的品味,畢竟買東西和看電影的動機還是有很大不同的。
另外,豆瓣也有基于物品本身的推薦,當你查看一些電影的詳細信息的時候,他會給你推薦出“喜歡這個電影的人也喜歡的電影

總結
在網絡數據爆炸的年代,如何讓用戶更快的找到想要的數據,如何讓用戶發現自己潛在的興趣和需求,無論是對于電子商務還是社會網絡的應用都是至關重要的。推薦引擎的出現,使得這個問題越來越被大家關注。其實推薦引擎只是默默的記錄和觀察你的一舉一動,然后再借由所有用戶產生的海量數據分析和發現其中的規律,進而慢慢的了解你,你的需求,你的習慣,并默默的無聲息的幫助你快速的解決你的問題,找到你想要的東西。

很多時候,推薦引擎比你更了解你自己。

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容