將 Embedding 應用在 Yahoo Email 中的產品推薦

TengYuan Chang
11 min readMar 6, 2019

論文出處:E-commerce in Your Inbox: Product Recommendations at Scale

從 word2vec 技術發表之後,很快地,許多企業和研究者就發現嵌入 (embedding) 這個概念也非常適合用來表現商品和商品之間,或是商品和人之間的關係,並應用在推薦系統之中。例如之前介紹過的 Airbnb 利用房源嵌入 (List Embedding) 與用戶類別嵌入 (User-Type Embedding) 的方式,來做搜尋結果的排序,以及類似房型的推薦,可以達到不錯的效果。

而另一方面,數位廣告雖早已變得無所不在,但仍在不斷發展與演進中。橫幅和蓋板廣告過於粗暴,因此原生廣告早已漸趨主流。原生廣告指的是廣告設計的樣式和讀者在閱讀的內容相似,讓使用者看到廣告時比較不會產生反感,甚至沒有意識到那是廣告。原生廣告在新聞和社交類型的網站都已達到不錯的效果,但應用在電子郵件中還沒有一個非常成功的先例。

因此,這篇論文即利用電子郵件中使用者的消費記錄與收據,並使用 word2vec 技術來訓練模型,以電子郵件中廣告的形式,推薦使用者可能會感興趣的產品 (如下圖一),最終不論在點擊率或是實際購買的機率,都達到顯著的成長。

另外值得一提的是,本文的作者之一 Mihajlo Grbovic,同時也是 Airbnb 將房源嵌入應用在房型推薦的論文的作者,這是他在加入 Airbnb 之前在 Yahoo Labs 服務時的研究。

圖一、本文實做的推薦系統的範例,用戶在 amazon.com 上有購買紀錄後,從 walmart.com 推薦相關商品。圖片來源

電子郵件中使用者的購買資料作為資料來源

在許多國家,電子郵件仍是重要的溝通工具,仍有許多人每天都會打開電子信箱收信,而根據統計,所有的流量中,其中僅有 10% 是真人發送的,而另外的 90% 中的 22% 是線上購物相關的,比如說在電商網站購物的收據等等。因此,就有了所謂的郵件再行銷 (Mail Retargeting,MRT) 這樣的廣告手法,廣告主針對曾經有在某些網站購物過的顧客,進行再行銷廣告。因為那些電子郵件很大程度代表消費者與某些購物網站之間的往來關係。另一方面,為了讓使用者可以有更好的體驗,某些類型的電子郵件慢慢開始有了標準的格式,比如說購買收據,商品追蹤,或是機票的訂票紀錄等等,而這也間接地讓電子郵件的提供廠商可以更有效率的把電子郵件的內容抓取出來。

因此,這就給了電子郵件服務的提供廠商,例如 Gmail 或 Yahoo Mail 非常好的機會:他們不但可以輕易地將用戶在網路上的購物紀錄從郵件中抓取出來,而且這些購物紀錄還不是只來自一家購物網站,而是有多重的資料來源。電商網站可以做的產品推薦可能是基於「買了 X 也買了 Y 的顧客」,電子郵件提供商知道的卻可能是「從 V1 公司買了 X,又從 V2 公司買了 Y 的顧客」,因為產品和可以追蹤的廠商更多樣,透過電子郵件可以做的產品推薦理論上可以變的更為強大,也更精準,也更個人化。

而本文即是使用 Yahoo Mail 中的顧客資料來訓練模型,並在其郵件內的廣告欄位做產品推薦。

訓練產品對產品 (Product-to-product),以及使用者對產品 (User-to-product) 兩種模型

作者訓練了兩種模型:

  • prod2vec: 用 skip-gram 的方式,訓練模型,將各個產品做嵌入 (embedding),如下圖一。在序列中相鄰產品的類似產品,在向量空間中會靠的較近。用麥當勞來舉例的話,如果中薯的前後常會出現麥克雞塊和可樂,則麥克雞塊和可樂也會靠的較近,和玉米濃湯就會離比較遠。
  • bagged-prod2vec: 考慮到許多產品可能會一起被購買,用這個方式訓練的模型會考慮每個 email 收據,而非只是產品之間的關係,如下圖二。再用麥當勞來舉例的話,這邊不是將所有賣出去的產品品項逐一列出 (大麥克、中薯、麥香魚、麥克雞塊、中薯、可樂),然後用 window size 去看相鄰產品出現的機率,而是以每個顧客點的套餐為單位去考慮,例如:(大麥克、中薯,可樂)、(麥香魚、中薯、可樂)
圖二、用 Skip-gram 訓練 prod2vec 嵌入 (embedding) 模型的示意圖。圖片來源
圖三、也是用 Skip-gram 訓練 bagged-prod2vec,但以每個購買單據為單位,而非只考慮個別產品。圖片來源

使用的資料為來自 2,900萬個使用者的 2 億 8,000 多萬個來自於 172 個網站的購買紀錄,並只考慮價格超過 5 美元的產品。訓練模型時,新的向量空間將 d 設為 300,所有模型的 window size 都設 5,並每次向量更新時,使用 10 個 negative sample。

在預測方面,我們也建了幾種模型來評估推薦的產品準不準確:

產品對產品的預測模型 (product-to-product predictive model)

  • Prod2vec-topK: 給定一個已經購買的產品,對其他已投影在向量空間中的產品分別計算餘弦相似度,然後推薦前 K 名最相似的產品給使用者
  • prod2vec-cluster: 將產品用 k-means clustering 集群分析的方式分群,給定一個已購買的產品,推薦的是從同一群體中,以余嫌相似度排序後,前 K 名的產品。

用戶對產品的預測模型 (user-to-product predictive model)

  • user2vec: 將 user 作為 Global context,推薦的產品為找出在這相鄰的嵌入空間中,K 個最接近的的產品,訓練模型時,代表用戶的向量會不斷被更新。
圖四、用戶對產品的預測模型 (user-to-product predictive model) 示意圖,將代表用戶的向量作為 Global Context。圖片來源

使用 user2vec 的好處是,推薦的產品會針對單一用戶的購買行為做推薦,缺點是必須要不斷更新模型,因為用戶感興趣的東西可能會一直改變。另一方面,產品對產品的推薦模型則可考慮比較長的週期。

實際點擊率增加 9.81%,Yield rate 增加 7.63%

圖五、不同年齡分佈的使用者的購買行為 (a) 為不同年齡分佈下,男女別購買比率 (b) 為不同年齡分佈下,男女別的購買金額。圖片來源

圖五為直接拿用戶的購買紀錄來分析,可以看出男女生購買行為大不相同。在各年齡層,女性的比例均高於男性。而女性購物比例最高為 30–34 歲的族群,男性則為 21–24 歲的族群。另外,男性購買的金額則較女性為高。

要評估模型預約準確度時,拿熱門商品當作基準來比較是很合理的做法,我們訓練出來的模型必須要比只推薦熱門商品表現得更好,才有價值。圖五則將熱門商品的準確度根據其回溯天數 (Lookback days) 與前視天數 (Lookahead days) 作圖。

圖六、熱門商品在不同的回溯天數 (Lookback days) 與前視天數 (Lookahead days) 下的準確率。圖片來源

使用者的購買喜好不斷改變,從圖六來看,熱門商品必須至少每三天更新一次,而回溯天數最多則不能超過 5 天,否則準確率會大幅下降。

我們也比較不同推薦模型的表現,並以推薦熱門商品作為基準來比較,畫成圖七。

圖七、不同推薦模型在不同前視天數 (Lookahead days) 下的準確率。圖片來源

從圖七則可發現,所有我們訓練出來的模型,準確率都比只推薦熱門商品要來得好。另外,用戶對產品的模型 user2vec 的準確率在低一天表現的最好,優於所有其他模型,但到了第三天瞬間下滑,證明了他比較適合短期的預測,因為使用者的購買行為變動的非常快。

另一方面,產品對產品 prod2vec 的各種模型 (紅線、青綠,墨綠線) 就沒有觀察到這種只有第一天表現最好,然後劇烈下降的現象。他們在一到七天的表現都相對穩定。而 bagged-prod2vec-clucster 模型則在所有的產品對產品的模型中表現最好,代表用集群式的推薦可以增加推薦商品的多樣化,會有較好的結果。

我們也用 A/B testing 的方式用 Yahoo Mail 中做產品推薦,來評估模型的表現。準備了兩組實驗組,一組為使用我們的預測模型做測試,對於之前有過購買行為的用戶,推薦 bagged-prod2vec-cluster 模型預測出來的結果,對於沒有購買紀錄的用戶,則推薦熱門商品;另外一組實驗組則只推薦熱門商品,每組均分配 5% 的 Yahoo Mail 流量,線上測試 7 天的時間,並採用相同的更新頻率。我們也另外定義了兩個指標:點擊率 CTR = #clicks / #impressions,看過產品推薦的使用者,有多少比例會點擊該推薦廣告;以及 YR (Yield Rate) = #conversions/#impressions,看過產品推薦的使用者,有多少比例會實際購買,結果如下圖八所示。

圖八、A/B 測試不同模型的實際表現。圖片來源

不論是推薦熱門商品,或是推薦我們用 prod2vec 模型預測出來的結果, CTR 表現都比控制組大幅來得好,而 prod2vec 模型預測的結果,又比僅推薦熱門商品要來的佳。另外,預測模型在 YR 上的表現比推薦熱門商品要好得非常多,代表點擊熱門商品的用戶,可能只是出於好奇心,但最後沒有購買。反之,我們的推薦模型是推給使用者真正想要的產品,因此最後購買的比率會較高。

圖九、CTR 隨著時間在熱門商品與推薦模型中的變化。圖片來源

我們訓練的模型不僅在 CTR 表現的比較好,也比較穩定。圖九可以看出推薦熱門商品的模型 (紫色的線) 有幾個缺點: CTR 在第二天後會快速下降,必須要更新模型後才有辦法將 CTR 拉抬起來,且七天一次的更新看來似乎不夠,每次的更新無法將 CTR 拉抬至與上一個高峰相同的數值。

總結來看,這篇論文有幾個創新之處:

  1. 使用用戶的電子郵件收據作為訓練推薦模型的資料,並用在廣告推薦:一般廣告系統的推薦模型都是用用戶的線上資料與行為來做預測點擊與購買,然而,通常線上資料的 feature 關聯性都較弱,電子郵件則比較不會有這個問題。另外,電商或廣告系統的推薦模型通常是使用者的站內行為來訓練模型,透過電子郵件,這篇論文使用了來自 172 個網站的購買紀錄。然而,這也是在美國這樣信用卡普及的國家,許多交易紀錄都可以從 郵件中取得,在其他國家或許不適用。另外,掃描用戶的電子郵件內容或許也會造成隱私權的疑慮,Google 在 2017 年已宣布停止掃描用戶 Email 內容作為廣告投放用途
  2. 以每張收據為單位,而非單純的產品序列:在電子郵件的情境,以及用戶的購買行為,許多商品會被一起購買,所以比起單純考慮產品的序列,以每張收據為單位,考慮到常會被一起購買的商品來訓練模型,最終也證明可以有比較好的表現。
  3. 將代表用戶的向量作為 Global Context,訓練 user2vec 模型,並與 prod2vec 模型相比較:推薦的商品考慮單個用戶的購買行為,這樣個人化的推薦證明在短期內效果最好,但因為用戶的購買行為變化太快,所以超過一天之後準確度就快速下降。
掃描 QR code 或按此連結加入 LINE 可訂閱部落格最新的文章

--

--