分享協同過濾思想簡介 什么是協同過濾?

作者在《推薦系統產品與算法概述》這篇文章中簡單介紹了協同過濾算法 。 協同過濾算法是在整個推薦系統發展史上比較出名的算法, 具備舉足輕重的地位, 甚至在當今還在大量使用 。
本篇文章作者會詳細講解協同過濾推薦算法的方方面面, 這里所講的也是作者基于多年推薦系統研究及工程實踐經驗的基礎上總結而成, 希望對大家學習協同過濾推薦算法有所幫助, 提供一些借鑒 。
本文會從協同過濾思想簡介、協同過濾算法原理介紹、離線協同過濾算法的工程實現、近實時協同過濾算法的工程實現、協同過濾算法應用場景、協同過濾算法的優缺點、協同過濾算法落地需要關注的幾個問題等7個方面來講述 。 希望讀者讀完本文, 可以很好地理解協同過濾的思路、算法原理、工程實現方案, 并且具備基于本文的思路自己獨立實現一個在真實業務場景中可用的協同過濾推薦系統的能力 。
在正式講解之前, 先做一個簡單定義 。 本文用”操作過“這個詞來表示用戶對標的物的各種操作行為, 包括瀏覽、點擊、播放、收藏、評論、點贊、轉發、評分等等 。
一、協同過濾思想簡介協同過濾, 從字面上理解, 包括協同和過濾兩個操作 。 所謂協同就是利用群體的行為來做決策(推薦), 生物上有協同進化的說法, 通過協同的作用, 讓群體逐步進化到更佳的狀態 。 對于推薦系統來說, 通過用戶的持續協同作用, 最終給用戶的推薦會越來越準 。 而過濾, 就是從可行的決策(推薦)方案(標的物)中將用戶喜歡的方案(標的物)找(過濾)出來 。
具體來說, 協同過濾的思路是通過群體的行為來找到某種相似性(用戶之間的相似性或者標的物之間的相似性), 通過該相似性來為用戶做決策和推薦 。
現實生活中有很多協同過濾的案例及思想體現, 除了前面提到的生物的進化是一種”協同過濾“作用外, 我認為人類喜歡追求相親中的“門當戶對”, 其實也是一種協同過濾思想的反射, 門當戶對實際上是建立了相親男女的一種“相似度”(家庭背景、出身、生活習慣、為人處世、消費觀、甚至價值觀可能會相似), 給自己找一個門當戶對的伴侶就是一種“過濾”, 當雙方”門當戶對“時, 各方面的習慣及價值觀會更相似, 未來幸福的概率也會更大 。 如果整個社會具備這樣的傳統和風氣, 以及在真實”案例“中”門當戶對“的夫妻確實會更和諧, 通過”協同進化“作用, 大家會越來越認同這種方式 。 我個人也覺得”門當戶對“是有一定道理的 。
協同過濾利用了兩個非常樸素的自然哲學思想:“群體的智慧”和“相似的物體具備相似的性質”, 群體的智慧從數學上講應該滿足一定的統計學規律, 是一種朝向平衡穩定態發展的動態過程, 越相似的物體化學及物理組成越一致, 當然表現的外在特性會更相似 。 雖然這兩個思想很簡單, 也很容易理解, 但是正因為思想很樸素, 價值反而非常大 。 所以協同過濾算法原理很簡單, 但是效果很不錯, 而且也非常容易實現 。
協同過濾分為基于用戶的協同過濾和基于標的物(物品)的協同過濾兩類算法 。 下面我們對協同過濾的算法原理來做詳細的介紹 。
二、協同過濾算法原理介紹上面一節簡單介紹了協同過濾的思想, 基于協同過濾的兩種推薦算法, 核心思想是很樸素的”物以類聚、人以群分“的思想 。 所謂物以類聚, 就是計算出每個標的物最相似的標的物列表, 我們就可以為用戶推薦用戶喜歡的標的物相似的標的物, 這就是基于物品(標的物)的協同過濾 。 所謂人以群分, 就是我們可以將與該用戶相似的用戶喜歡過的標的物推薦給該用戶(而該用戶未曾操作過), 這就是基于用戶的協同過濾 。 具體思想可以參考下面的圖1 。
圖1:”物以類聚, 人以群分“的樸素協同過濾推薦
協同過濾的核心是怎么計算標的物之間的相似度以及用戶之間的相似度 。 我們可以采用非常樸素的思想來計算相似度 。 我們將用戶對標的物的評分(或者隱式反饋, 如點擊、收藏等)構建如下用戶行為矩陣(見下面圖2), 矩陣的某個元素代表某個用戶對某個標的物的評分(如果是隱式反饋, 值為1), 如果某個用戶對某個標的物未產生行為, 值為0 。 其中行向量代表某個用戶對所有標的物的評分向量, 列向量代表所有用戶對某個標的物的評分向量 。 有了行向量和列向量, 我們就可以計算用戶與用戶之間、標的物與標的物之間的相似度了 。 具體來說, 行向量之間的相似度就是用戶之間的相似度, 列向量之間的相似度就是標的物之間的相似度 。

推薦閱讀