使用嵌入來構建一個推薦系統

編譯:ronghuaiyang

導讀

這是一篇實戰型的文章,介紹了一個真實的公司裡是如何使用嵌入來做推薦系統的。

使用嵌入來構建一個推薦系統

動機

Drop的生態系統的核心是兩個關鍵實體:我們的成員和合作夥伴品牌。我們在Drop的重點是提供卓越的價值和持續贏得他們的信任。是什麼讓我們能夠確定成員和合作夥伴之間的關係,並同時交付價值?數據!

數據科學和機器學習的團隊最近建立了一個推薦系統模型,用來提升“為你推薦”功能應用。使用我們的會員委託我們與他們的交易的數據(我們非常重視保護這些數據),我們能夠幫助他們更快的進入到他們喜歡的品牌那裡。此外,我們還可以幫助他們發現他們不會接觸的品牌,從而豐富他們的購物體驗。對我們合作伙伴的影響:通過吸引到的客戶和忠誠客戶來提升收入。

使用嵌入來構建一個推薦系統

我們這個推薦系統的基本構成

模型的輸入是一個“會員足跡”數據集:對於每個成員,我們有一個指定時間範圍內所有會話的列表。每個會話都有元數據,其中包括品牌名稱。

使用嵌入來構建一個推薦系統

基於會話的兩個會員足跡數據

模型的輸出是一個“品牌推薦”數據集:對於每個會員,我們有一個n個品牌的排名列表。排名靠前的品牌代表該會員接下來最有可能購物的商店。

使用嵌入來構建一個推薦系統

兩個會員的推薦內容樣本

團隊嘗試了幾個模型,其中都涉及到學習嵌入來代表我們平臺上的成員和品牌。最後,我們決定將序列模型部署到生產環境中,因為它實現了跨關鍵指標的最佳性能。在我們開始深入研究模型的細節之前,讓我們先試著對嵌入是什麼以及它們在推薦系統上下文中為什麼有意義有直觀的認識。

嵌入

什麼是嵌入?

嵌入是一種使用學習向量表示實體的方法。簡單地說,它是離散對象到連續數字序列的映射。給定足夠的數據,我們可以訓練一個算法來理解實體之間的關係,並自動學習表示它們的特徵。這種自動化方法非常強大,因為它允許我們更容易地擴展。對於Drop這樣的平臺,隨著新實體不斷地添加到我們的系統中,能夠可擴展是最重要的。

為了幫助理解嵌入,讓我們看看如何在我們的平臺上表示品牌。

品牌嵌入

品牌嵌入是品牌到連續數字向量的映射。下面是品牌的例子,每一個都映射到一個8維向量:

使用嵌入來構建一個推薦系統

從品牌映射到向量

每個向量對應一個算法已經學會的品牌特徵或屬性。例如,它可能已經學習了“食物”的概念,並將此信息編碼到向量的第一個維度中。在給定的維度中,一個較大的數值表示該品牌強烈地顯示了該特徵。我們看到Uber Eats(0.96)、Foodora(0.92)和Costco(0.86)就是這樣的情況,我們知道這些品牌與食品有關。學習特徵的另一個例子可能是“服務”的概念,算法可能將其編碼在向量的第二個維度中。請注意Uber Eats(0.98)和Foodora(0.94)的高價值,它們都是外賣服務,Lyft(0.96)是拼車服務。

“食物”和“服務”的概念似乎是描述向量的前兩個維度的合理選擇。然而,在實踐中,很難解釋這些學習到的特徵實際上代表什麼。對於我們的特定用例,這不是一個需要關注的問題,因為所學習的嵌入的好處遠遠大於可解釋性方面的損失。除了可擴展性之外,品牌嵌入的一個主要優勢是可以用來比較品牌之間的相似性。這在推薦系統的上下文中是有用的,因為它允許我們僅通過識別與他們之前互動過的品牌相似的品牌就可以向我們的成員提供推薦。

具體來說,考慮到用戶過去曾在Uber Eats上點過餐,我們可以通過尋找與Uber Eats相似的品牌來進行推薦。從直覺上看,這意味著要識別嵌入類似Uber Eats的品牌。繪製品牌嵌入的前兩個維度,我們將看到彼此相似的品牌更接近,而不同的品牌則相距更遠。在這個例子中,最接近Uber的品牌是Foodora,因此也是最相似的。

使用嵌入來構建一個推薦系統

相似的品牌靠的近

會員嵌入

我們可以利用所學的品牌嵌入來為我們的會員找到特徵表示。雖然品牌嵌入編碼了品牌顯示某些屬性的程度,但是可以構造成員嵌入來反映成員對這些屬性的偏好。給定一個傾向於訂購食物的成員,我們可以期望他們的表示編碼對“食物”和“服務”等特性的強烈偏好。換句話說,我們希望這個會員在這兩個特徵上平均得分高。

為了說明這個觀點,我們假設這個成員的足跡如下所示,品牌嵌入的前兩個維度對應於“食物”和“服務”:

使用嵌入來構建一個推薦系統

會員足跡的樣本

表示該成員的一種方法是取其成員足跡對應的品牌嵌入的平均值。例如,為了量化他們對“食物”的偏好,我們可以取嵌入的第一個維度,計算平均值如下:(0.96 + 0.92 + 0.86 + 0.96)/ 4 = 0.93。將相同的方法應用於“服務”維度,該成員的結果表示為向量(0.93 0.62)。考慮到上述成員的經歷,這種代表性是有意義的,因為所有四個品牌都是“食品”品牌,除了Costco以外,所有品牌都是“服務”品牌。

使用點積度量相似度

現在我們有兩組嵌入,其中對應的維度表示相同的特徵。要了解一個成員對給定品牌的喜愛程度,我們只需量化其嵌入之間的相似性。一種方法是計算它們的點積。回想一下,給定兩個n維向量a和b,其中:

使用嵌入來構建一個推薦系統

它們的點積定義為:

使用嵌入來構建一個推薦系統

直觀地說,對應特徵的值越高,成員識別品牌的可能性就越大。下面是一些具體的例子,展示了我們之前計算過的會員嵌入與Uber Eats和Costco品牌嵌入之間的點積:

使用嵌入來構建一個推薦系統

計算點積

根據得到的dot產品,我們可以得出這樣的結論,會員更喜歡優步而不是Costco。將嵌入中的成員疊加起來,我們可以看到它確實更接近Uber Eats,而不是Costco。

使用嵌入來構建一個推薦系統

在相同的空間中映射品牌和成員嵌入

序列模型

介紹

如前所述,我們在生產中部署了一個序列模型,以便為我們的成員提供品牌推薦。簡而言之,我們的模型利用了會話數據的順序特性,並將生成建議視為一個序列預測任務。具體地說,給定一個成員之前購物過的品牌序列,該模型預測該成員最有可能與之交互的下一個品牌。在這個框架下,我們的模型是使用一個神經網絡來實現的,它的目標是學習嵌入來代表我們平臺上的品牌。

訓練

訓練過程的目標是使用我們的成員足跡數據集作為輸入來學習一組品牌嵌入。回想一下,對於每個成員,這個數據集包含一個序列,表示他們以前購買過的品牌。算法的任務是預測每個成員序列中的下一個品牌。顯式地,對於以下序列:

使用嵌入來構建一個推薦系統

該算法對以下每一個子序列進行預測:

使用嵌入來構建一個推薦系統

為了讓算法學習,我們需要一種方法讓它知道它在執行任務時的表現。具體來說,它需要知道什麼時候的預測是錯誤的,這樣它就可以對迄今為止所學到的品牌嵌入做出適當的調整。這就引出了損失函數的概念,它是一種量化算法在給定學習任務的情況下表現好壞的方法。


從概念上講,對於我們的序列預測任務,我們想要的只是算法為與下一個交互的成員的品牌計算一個比沒有交互的更高的分數。前者被稱為“positive”例子(即:實際發生了什麼),後者被稱為“negative”例子。理想情況下,我們希望算法始終將positive樣本的排名高於negative樣本。為了推廣這類排名,我們選擇了Bayesian個性化排名損失函數來訓練我們的模型:

使用嵌入來構建一個推薦系統

回想一下sigmoid函數,當x大時sigmoid(x)接近1,當x小時接近0。因此,當正樣本的得分大於負樣本的得分時,損失最小化(即:算法運行良好)。當損失較大時,我們需要通過調整品牌嵌入值來糾正算法的錯誤。

推理

使用我們的序列模型進行預測很容易。考慮到以下會員足跡,我們的目標是預測下一個最有可能與之互動的品牌:

使用嵌入來構建一個推薦系統

一旦瞭解了品牌嵌入,我們只需將成員表示為與他們之前交互過的品牌相對應的嵌入的平均值(回想一下“member embeddings”)。然後,我們在我們的平臺上獲取每個品牌的學習嵌入,並用派生的成員嵌入計算它們的點積(回想一下“用點積度量相似性”)。從這一點開始,它就變成了一個排名練習,其中得分最高的品牌代表該成員最有可能與之互動的下一個品牌。注意,我們為平臺上的每個成員執行這些計算。


可視化品牌嵌入

為了可視化序列模型學習到的品牌嵌入,我們需要將8維向量映射到更低的維度空間,以便可以繪製它們。實現這一點的一種方法是使用降維技術,比如t-SNE。

為了進一步瞭解,我們突出顯示了以下集群:

使用嵌入來構建一個推薦系統

加拿大人,旅行和寵物集群

產生的影響

使用我們的會員委託給我們的數據,我們能夠通過優化他們在我們平臺上的體驗來提供價值。通過展示相關品牌,我們可以幫助他們更快地獲得積分,從而讓他們更接近於兌換下一個獎勵。對於我們的合作伙伴來說,附加值是一個不斷增長的消費者群體,具有強大的品牌親和力。

在公司內部,學習到的品牌嵌入已經成為Drop各種計劃不可或缺的一部分。他們正在利用的一些領域包括我們的產品入駐流程,有針對性的營銷溝通,以及為我們的業務開發團隊生成領導。

未來的方向

雖然我們的現有模型取得了顯著的成績,但我們的團隊很高興能探討進一步加強我們的推薦系統的想法。一些最初的想法圍繞著使用時間信息作為模型的輸入,以及利用我們通過Drop應用程序從成員那裡收到的顯式反饋(例如:點擊推薦人提供的內容)。也有可能利用與品牌和產品相關的文本和圖像數據來構建混合推薦模型。

英文原文:https://drop.engineering/building-a-recommender-system-using-embeddings-de5a30e655aa

使用嵌入來構建一個推薦系統


分享到:


相關文章: