愛伊米

推薦策略產品經理必讀系列-第四講推薦系統的召回(二)

編輯導語:相信大家都聽說過協同過濾演算法,那到底什麼是協同過濾,有何用處。本文將為大家介紹推薦系統召回策略中基於協同過濾演算法的召回,希望你能對此有更深的理解,一起來看看。

推薦策略產品經理必讀系列-第四講推薦系統的召回(二)

前言:上一篇為大家介紹了推薦系統召回策略裡面基於規則的召回,本篇將為大家介紹推薦系統召回策略中基於協同過濾演算法的召回。

一、協同過濾演算法綜述

大家應該在很多場合或者文章中都聽到過協同過濾演算法,首先到底什麼是協同過濾(Collaborative Filtering),它的核心思想是什麼。

何為協同:

協同字面意思就是大家在一起互相配合來做成某一件事情。在協同過濾演算法裡指的就是利用群體的資料去尋找規律,去尋找物料與物料,使用者與使用者之間的相似性。

何為過濾:

過濾字面意思就是把不符合條件的東西給過濾掉。在協同過濾演算法裡指的就是當我們基於物料相似度或者使用者相似度進行推薦時,需要把那些相似性很低的物料和使用者過濾掉。

那“協同+過濾”:其實就是利用群體的資料去尋找規律,去尋找物料與物料,使用者與使用者之間的相似性,然後再把相似性很低物料和使用者過濾掉,挑選出相似度最高的物料和使用者。

協同過濾演算法的產生是推薦演算法1。0時代“基於內容的標籤召回”演算法後,人們開始利用資料本身探討使用者與使用者,物料與物料之間的關聯性,從而演化出來了協同過濾(Collaborative Filtering)演算法。

標誌性的演算法就是基於使用者的協同過濾演算法,該演算法在1992年被提出。協同過濾演算法可以說是推薦領域最經典的演算法了。甚至可以說協同過濾演算法的出現,代表了推薦系統的出現。協同過濾演算法一共分為兩個大的方式:基於鄰域的方法和基於模型的方式。

推薦策略產品經理必讀系列-第四講推薦系統的召回(二)

下面我們將詳細展開介紹:

二、基於領域的方法

2.1 基於使用者的協同過濾(User-Based)

AB使用者擁有相同的背景和興趣,基於使用者之間的相似性,為A推薦使用者B感興趣且使用者A沒有接觸過的內容。比如大學時候,我們都會問同專業的學長學姐應該選什麼課。這個就是學長學姐和我們有一樣的專業背景,基於他們過去經驗上過的課,一定可以推薦出哪些考試簡單給分又高的課,如果這個課很難給分又低,學長學姐們一定不會去上這個課。整個演算法分為兩個大的步驟:

推薦策略產品經理必讀系列-第四講推薦系統的召回(二)

第一步:挖掘和目標使用者相似的使用者集合;

如何計算使用者之間的相似性,一般我們使用Jaccard係數或者餘弦相似度。具體公式如下:

推薦策略產品經理必讀系列-第四講推薦系統的召回(二)

上圖左側為歷史使用者瀏覽商品資料,右側為計算使用者相似度的公式。使用者數很龐大,所以一般我們會設定一個K值,找出與使用者A最相似的Top K個使用者。例子中我們設定K為2,根據公式我們可以計算出與使用者A相似度最高的兩個使用者是使用者B和使用者E。

第二步:挖掘該集合中受歡迎的Item,同時目標使用者沒有接觸過的,將其推薦給目標使用者;

推薦策略產品經理必讀系列-第四講推薦系統的召回(二)

使用者B和E歷史瀏覽過的商品中,商品d和e使用者A沒有瀏覽過,需要計算使用者A對於商品d和e的興趣度。計算公式如上圖所示,我們以使用者A對商品d的興趣度舉例:( 使用者A與使用者B的相似度 * 使用者B對於商品d的興趣度 ) + ( 使用者A與使用者E的相似度 * 使用者E對於商品d的興趣度 ),這裡使用者之間的相似度第一步裡面已經計算過了,使用者B & E對於商品d的興趣度,我們統一設定:如果瀏覽過興趣度就為1,沒有瀏覽過興趣度就為0。

實際業務中,我們可以更加細化,比如同一時間段瀏覽的次數等將興趣度計算方式更加細化。最終計算出使用者A對商品e的興趣度為1。15,對商品d的興趣度為0。4,所以優先推薦商品e。

User-CF演算法1992年就已經在某電子郵件的個性化推薦系統上得到了應用,關於User-CF演算法的優缺點我們在介紹完Item-CF演算法以後進行統一對比介紹。

2.2 基於物料的協同過濾(Item-Based)

基於物料之間的相似性,透過使用者歷史喜歡的物料,為其推薦相似的物料。這裡面的物料相似性並不是基於物料之間標籤重合度來計算相似度,Item CF是基於使用者對於物料的歷史行為資料來計算物料之間的相似度。Item-CF最早是由亞馬遜公司提出的,目前在各大網際網路公司應用都十分頻繁。

整個演算法同樣分為兩個步驟:

第一步:計算商品之間的相似度;

推薦策略產品經理必讀系列-第四講推薦系統的召回(二)

首先我們基於使用者歷史瀏覽的行為,統計兩個商品被同一使用者瀏覽過的次數,比如pair(e,d)同時被3個使用者都瀏覽過,那麼相似度矩陣裡面就填入3。最後我們使用餘弦相似度公式來計算商品之間的相似度。

第二步:基於目標使用者歷史瀏覽行為和商品之間的相似度,為其推薦感興趣且未瀏覽過的商品;

推薦策略產品經理必讀系列-第四講推薦系統的召回(二)

相似度計算完以後,我們需要計算使用者對這些沒有瀏覽過商品的興趣度。比如我們計算使用者A對於商品d的興趣度,案例中因為一共只出現了5個商品,只有d和e使用者A沒有瀏覽過,這裡的K值我們就設定為3,我們只基於商品d和a,b,c之間的相似度以及使用者A對於商品a,b,c的興趣度進行計算。

實際案例中使用者A瀏覽過的商品很多,和d有交集的商品也會很多,我們需要設定一個合理的K值,無法計算商品d和所有商品的相似度,再去乘以使用者A對於這些商品的興趣度。最終根據上述公式計算得出使用者A對e的興趣度為1。74,對d的興趣度為1。17。所以優先為使用者A推薦商品e。

最後我們用下面這張圖將User CF和Item CF之間的區別進行歸納:

推薦策略產品經理必讀系列-第四講推薦系統的召回(二)

上圖裡面有幾個核心的點需要關注。

(1)應用領域

User-CF在新聞社交網站等UGC社群使用的較多,而Item-CF在電商、電影&音樂等網站使用的較多。一方面因為新聞等網站內容更新快,使用Item-CF無法滿足時效更新的要求,另一方面新聞等網站上使用者的興趣相對粗粒度,很多使用者群體喜歡閱讀同一內容。而在電商、電影等網站上使用者興趣相對比較個性化,使用Item-CF更能夠反映使用者興趣的傳承。

(2)可解釋性

User-CF的解釋性弱於Item-CF,因為User-CF是側重於人與人之間的相似,給使用者A推薦使用者B感興趣的東西。而Item-CF是側重於基於使用者A歷史買過的商品,為其推薦相似的商品。從直觀上使用者也更願意相信Item-CF這種推薦方式。

三、基於模型的方法

協同過濾是一種思想,很多時候大家在講協同過濾時就講User-CF和Item-CF,其實協同過濾中有很大一部分甚至說當前先進的協同過濾演算法都是基於模型的協同過濾。下面為大家介紹幾種常見基於模型的協同過濾。

3.1 基於圖模型(Graph-based model)

第一步:將資料由表格轉化為二分圖;

推薦策略產品經理必讀系列-第四講推薦系統的召回(二)

我們將表格使用者歷史瀏覽過的資料轉化為Graph,左邊為使用者Node,右邊為物料Node。使用者瀏覽過的物料兩個頂點之間就連一條線,頂點與頂點之間的連線我們叫做邊Edge。

第二步:基於兩個頂點之間路徑數、路徑長度及經過的節點出度判斷相關性;

推薦策略產品經理必讀系列-第四講推薦系統的召回(二)

比如我們計算使用者Node-A與物料Node-c和Node-e之間的相關性。首先我們統計Node-A到Node-c可以有幾條路徑,這裡面只有一條路徑可以到達就是A—a—B—c,長度是3。而Node-A與Node-e之間一共有兩條路徑可以到達,分別是A—b—C—e和A—d—D—e,長度均為3。所以Node-A和Node-e的相關性要強於NodeA與Node-c。

同時我們再去比較同樣是兩條長度為3的路徑“A—b—C—e”,哪條路徑產生的連結更強了?我們分別去統計兩個路徑經過Node的出度,何為出度?

出度就是該Node對外連線幾個其他Node,比如Node-A的出度就是3。

兩條路徑經過節點的出度分別是【3,2,2,3】和【3,2,3,3】,該某個節點的出度越大代表這個節點的連結越多,該節點和連線的單個節點的相關性就越弱。所以路徑A—b—C—e產生的A與e的相關性要強於A—d—D—e產生的A與e的相關性。

以上就是基於圖模型的協同過濾演算法。

下一篇將重點為大家介紹基於向量的召回,大家經常聽到的FM模型以及雙塔模型,大家敬請期待~

本文由 @King James 原創釋出於人人都是產品經理。未經許可,禁止轉載。

題圖來自 Unsplash,基於 CC0 協議