《從零到一搭建推薦系統指南》白皮書,介紹了大資料時代下,企業如何從0 到1 構建推薦系統以及推薦系統的應用實踐場景,圍繞企業在構建推薦系統過程中所遇到的困惑與苦惱,為企業搭建、落地智慧推薦給予了全面系統的解答,從而真正助力企業實現千人千面,釋放推薦系統的價值。

本文將重點介紹推薦系統之使用者行為資料 。

1、資料給推薦帶來的價值

我們總是會聽到這樣的說法,“推薦演算法的效果是由模型與資料決定的”,即模型只佔推薦效果中的一部分,另外非常重要的部分就是資料。那麼我們究竟需要哪些資料?在一個實際的推薦系統中,哪些資料是有可能發揮作用的?我們又能拿到哪些資料?

通常會有四類資料:使用者行為、物品資訊、使用者畫像以及外部資料,下面詳細介紹。

(1)使用者行為

使用者行為資料最為重要,幾乎沒有哪一個推薦系統可以直接表示不需要使用者行為資料。一方面,使用者行為資料是訓練模型中的一個重要資料來源;另一方面,需要透過使用者的行為反饋,技術同事才能知道推薦系統到底做得如何。搭建推薦系統的一個秘籍就是積累使用者行為資料,如果沒有將重要的使用者行為做採集,例如在電商場景中,如果只是記錄最終的下單資料,那麼距離推薦系統的資料要求還是有一定差距。

(2)物品資訊

物品資訊指推薦系統中能採集到的描述每一個內容的資訊。以電商場景為例,在錄入一件具體物品時,錄入商品的品牌、價格、品類、上架時間等就是要收集的物品資訊。假設在電商場景中,如果並不清楚每個商品的品牌,也就無法從一些物體的描述資訊中去提取某個商品到底屬於何種品牌,那麼推薦效果自然受到限制。當物品資訊採集的足夠豐富時,對推薦系統的效果就會有一定的幫助。

(3)使用者畫像

在傳統的思路中,認為使用者畫像裡面儲存的實際還是使用者的標籤,但在很多實際場景中標籤數量少、維度粗,可能根本不具備去給使用者打標籤的能力,這種傳統的“標籤式”想法,就會限制搭建推薦系統的思路。

而從深度學習的角度出發,使用者畫像中儲存的並不是通常理解的“標籤”,而是一個人的向量,深度學習是把人和物品做向量化,但這個向量是不可被理解的,即我們可能並不知道這個向量表示的是什麼意思,當我們看到某個使用者對應的向量,我們也不知道他是對體育、音樂或是娛樂感興趣,但我們仍能夠透過向量去為他推薦其感興趣的內容。

(4)外部資料

有的人會迷信外部資料,覺得自己的資料量不夠,所以一定要去購買阿里或者是騰訊的外部資料來充實使用者畫像,從而提高推薦系統的效果。甚至有人認為推薦系統效果不好,是因為沒有外部資料。但其實,外部資料對於推薦系統的效果,還需要一個極為謹慎的推理和驗證。

首先,要先驗證自己的這批使用者群跟所購買的外部資料能發生多少交集。假如一個遊戲平臺,購買了阿里的外部資料,而這樣的外部資料可能只能告訴你使用者到底是喜歡買衣服、買車還是買電子產品,這樣的資訊對遊戲平臺有用嗎?

假設購買的外部資料恰好命中了業務場景,可能會發揮一定的作用,但實際上,能夠同時命中使用者群體和標籤的情況也並不常見。

大家不要認為上述的四種資料比較容易理解,所以獲取時也會比較簡單。其實神策團隊在去構建一個實際的推薦系統時,消耗人力的地方往往不是演算法,反而是怎麼去得到正確的資料。接下來我們以使用者行為資料為例,與大家分享應該如何獲取我們所需要的使用者行為資料。

2、使用者行為資料在推薦系統中的作用

我們需要思考,在獲取使用者行為資料時,我們究竟希望使用者行為資料能帶來什麼樣的作用?可總結為以下幾個方面:

第一,透過使用者行為資料訓練模型。這是非常重要的一個方面,比如給某個使用者推薦十件商品,其中有兩件商品發生了點選行為,模型中就會覺得這兩條資料是正例,其他是負例。

第二,透過使用者行為資料能夠幫助我們分析問題。當推薦系統上線之後,可能會碰到一些懊惱的問題,比如點選率並沒有發生變化,甚至效果變差,畢竟不可能每一次迭代的效果都是上升的,所以希望使用者行為資料能夠定位到此次推薦系統上線後效果不理想的原因。如果上線後效果不錯,此時希望使用者行為資料能夠告訴我們到底是哪些因素使效果變好。

第三,透過使用者行為資料能夠驗證效果。使用者行為資料幫助我們瞭解推薦模型上線前後的推薦演算法、推薦系統的效果如何,從而判斷推薦工作是否有效。比如點選率上升說明效果變好,點選率下降、負反饋變多、使用者流失,則說明推薦系統可能出現了問題。

3、如何獲取使用者行為資料

我們應該如何去獲取滿足以上需求的行為資料呢?以曝光日誌中的第一個欄位 exp_id 為例,exp_id 的中文的意思是實驗 ID。

前面提到了我們希望使用者行為資料是能支援 A/B Test 的,那麼如何知道每一條資料是來自哪一組實驗呢?此時,我們需要一個 exp_id 欄位去記錄每一條曝光日誌是來自哪組實驗。當我們再次分析 A/B Test 效果時,就可以根據一個 exp_id 欄位去區分不同實驗所帶來的曝光和點選。

從零到一搭建推薦系統指南(3)

圖 9 曝光日誌的常見欄位

在曝光日誌中我們常常討論如何設計一些常用欄位,而另外一個具體問題就是——我們怎麼去採集這些資料?

簡單來說,當用戶在產品裡面發生一些使用者行為,怎麼把這個資料最終落到伺服器的日誌中,從而用於模型訓練和效果分析呢?

做使用者行為的採集,通常有兩種方式。第一種就是自助埋點,客戶端先把使用者的行為記錄下來,之後傳給服務端,服務端再去傳給推薦引擎。另外一個埋點方式是 SDK 埋點,我們直接使用 SDK 去做推薦引擎的埋點。

SDK 埋點有兩個方面的優勢:

第一,SDK 埋點的接入成本低,它有比較成熟的埋點事件和埋點驗證方案。另外 SDK 有埋點介面和文件指導客戶埋點,無需關注上報問題。

第二,SDK 埋點的容錯性比較高。如果是自助埋點,從客戶端到推薦引擎經過了服務端,資料出現問題,難以回溯埋點問題、傳輸問題、資料質量維護成本高,SDK 埋點就會相對方便。

4、如何透過使用者行為資料來訓練模型

那麼,當有了行為資料之後,如何去訓練模型?通常會有以下幾個步驟:

第一,構造正負例。比如給使用者推薦十條商品,有幾條發生點選,就有幾條正例,其他沒有發生點選就是負例。

第二,構造特徵工程。稍後會以一個電商場景為例,具體講解通常情況下,如何構造特徵工程。

第三,資料取樣。資料取樣對整個模型訓練的效果影響較大。

下面以電商場景為例,講解如何做特徵工程,主要分為 2 個方面:

第一,商品維度。在商品的維度裡,我們可能關注一些商品的品類、品牌、價格、所面向的性別,以及各種使用者行為反饋的一些資料,比如點選率、收藏比率等,一方面體現商品本身的一些屬性,同時還體現商品的質量。

第二,使用者層面。通常首先考慮使用者的年齡和性別,因為在電商領域中男性所偏重的商品和女性之間存在較大差異。另外還有使用者的品類偏好、品牌偏好,以及價格偏好等。

5、使用者行為資料在推薦系統常見的“坑”

在使用者行為資料方面,結合服務客戶的經驗,透過一個案例跟大家分享下在實際工作中常見的“坑”——ID 體系不統一導致資料異常。

企業在一次流量上線之後,團隊成員發現效果不如預期,根據以往的實踐經驗來說,不應該是這麼差的結果,當去分析資料時,發現有兩個方面的資料異常。

第一,命中行為模型的使用者較少。通常情況下,只要不是一個新使用者,理論上來說,都應該能夠命中行為模型。當時的新使用者的比例在 20% 以下,而命中模型的使用者大概僅為 30%,說明大量的使用者沒有命中到模型。

第二,很多請求的 ID 未出現在日誌中。當時團隊懷疑,推薦結果是否被別人作弊刷掉了。因為用“作弊”能很好地解釋這些請求並未落到日誌中的原因。

但最終,團隊發現並不是作弊的問題,而是因為使用者 ID 沒有統一。前端應用他們所理解的一套使用者 ID 體系,但是後端在應用另外一套使用者 ID 體系傳送請求。於是所有的資料不一致,後端過來的請求總是新使用者,而訓練出來的模型卻命中不了任何使用者。

因此,神策資料建立了一系列的方法和工具以及流程去保證整個使用者 ID 體系的一致性。

相關閱讀

從零到一搭建推薦系統指南(4)

智慧運營案例介紹: 每日一淘

iOS 全埋點技術剖析(1)

金融業數字化轉型 MVP 實踐(上)

免費下載《從零到一搭建推薦系統指南》白皮書:

方式 1:神策資料官網下載;

方式 2:可以關注“神策資料”公眾號,後臺回覆“推薦指南”獲取。