Instacart如何使用機器學習幫助人們裝滿購物車?
對於像 Instacart 這樣的電子商務平臺,搜尋是一個重要的工具,它可以幫助人們找到他們想要的產品,即使他們不確定自己在尋找什麼,也能讓他們輕鬆購物。在使用者開始輸入時自動完成使用者的查詢是提高搜尋體驗效率的好方法。它幫助使用者清楚地表達他們的購物意圖,並幫助他們探索各種各樣的選擇。
在這篇文章中,我們描述了我們如何在自動完成中生成和排名查詢建議,以及這如何塑造使用者的搜尋行為——轉化為更大的購物籃大小。
自動完成 (AC) 是確保我們的使用者擁有愉快購物體驗的重要介面:
首先,它可以讓他們輕鬆找到他們想要的產品,從而幫助他們節省時間。接下來,它會激發他們探索我們目錄的全部範圍並嘗試新產品。這種探索很重要,因為它可以幫助我們的客戶從 Instacart 中獲得更多價值,並在他們的常規購物清單之外更多地使用該應用程式。最後,它透過深入瞭解他們當前的購物會話和推薦搜尋來指導他們的旅程,這將幫助我們的客戶找到他們想要的物品。
在 Instacart,我們設計了自動完成功能,透過幫助我們的使用者透過更少的擊鍵來表達他們的搜尋意圖來創造出色的搜尋體驗,從而節省時間和精力。我們還希望引導我們的使用者發出有意義的查詢——這意味著建議可能產生與使用者需求高度相關的結果的查詢,更正任何拼寫錯誤,並引導使用者使用廣泛的意圖查詢,讓他們充分探索整個廣度我們的目錄。最後,我們希望儘快提供相關建議——確保為我們的使用者提供流暢的搜尋體驗。
提示從何而來
我們依靠之前在 Instacart 上的客戶搜尋來確定一組全面的建議,這些建議可用於預測客戶的搜尋查詢。使用基於我們的搜尋日誌的資料集的優勢在於,它提供了豐富的自然語言建議,使用者可以輕鬆關聯。我們的詞彙表由 5.7 萬個單片語成,從 1130 萬個符合條件的產品和品牌中提取——在所有零售商中產生了約 78.5 萬個不同的自動填充術語。
由於使用者查詢不一定總是格式正確,因此我們應用一組規則來過濾候選者,例如:
- 刪除帶有壞詞和列入黑名單的詞的建議
- 從 Instacart 定義的詞彙表中刪除建議,該詞彙表特定於我們平臺上的購物意圖
- 刪除過長的建議
- 刪除複數重複(我們不想顯示“egg”和“eggs”,所以我們得到最流行的版本)
我們確保我們的資料集包含流行、趨勢、季節性相關且最重要的查詢的良好表示——如果使用者選擇建議的查詢,則會產生高度相關的結果。
匹配使用者意圖
給定搜尋欄中的使用者輸入,我們稱之為字首,我們需要檢索與字首匹配的所有查詢建議。
例如,對於字首“ice c”,我們檢索所有包含“ice c”的候選,條件是匹配需要發生在候選集中任何單詞的開頭,以允許更大和更多樣化的集合。在這個例子中,我們將檢索以下列表:“冰淇淋”、“冰淇淋三明治”、“冰咖啡”、“冰淇淋棒”、“香草冰淇淋”、“番茄冰淇淋”令”等。
下面,我們概述了為產生高質量建議而必須克服的一些挑戰。
處理拼寫錯誤
儘管對我們的自動完成語料庫實施了一些質量措施,例如過濾未轉換的查詢,但仍然存在具有高流量的高轉換搜尋,例如“avacado”。
當使用者輸入包含拼寫錯誤時,使用適當調整的折扣因子啟用模糊匹配有助於顯示正確的術語,因為“avocado”比拼寫錯誤的術語“avacado”具有更高的排名分數。模糊匹配將自動完成參與率提高了 1%,從而將轉換查詢的百分比提高了 0.5%。
此外,我們計劃將搜尋團隊的拼寫檢查器應用於自動完成語料庫,以識別常見的拼寫錯誤,同時顯示更正的術語。
語義重複資料刪除
從使用者日誌生成的搜尋查詢詞通常會包含多個語義相同的自動完成詞。有時,有一個幾乎完全匹配的單詞(例如“新鮮香蕉”和“新鮮香蕉”,單數與複數形式,如“蘋果”和“蘋果”,或複合名詞,如“蘋果醬”與“蘋果醬”)。具有語義相同的建議會給使用者帶來更多不必要的選擇,並降低出現使用者意圖查詢的可能性。此外,刪除重複項將產生更多樣化的結果集。
我們使用搜尋嵌入模型解決了語義重複資料刪除問題。搜尋嵌入經過訓練以定義查詢和產品之間的相關性。語義去重演算法的核心是使用預訓練的查詢嵌入來識別語義相似的術語對,方法是檢視定義為一對查詢嵌入的點積的相似度得分。
讓我們看看幾個搜尋詞之間的語義相似度得分:
- 芝士片Cheese slices → Sliced cheese: 98%
- 蛋黃醬Mayo → Mayonnaise: 97%
- 通心粉乳酪Mac cheese → Macaroni cheese: 97%
透過離線分析和實驗,我們選擇了一個查詢相似度閾值並將其應用於標記具有更高階別語義重複的查詢建議。
利用 Instacart 目錄改善冷啟動問題
在 Instacart,客戶可以在多家零售商處購買產品,從他們最喜歡的全國連鎖店到獨立的社群雜貨店。我們的基本演算法根據過去在每個零售商處進行的搜尋生成查詢建議資料集。原因是零售商之間的產品目錄和廣度可能會有很大差異——因此,為所有零售商使用通用建議資料集可能會產生不相關的建議。
然而,這意味著我們需要足夠的流量在零售商處產生,然後才能為他們生成有用的查詢建議。這對於新的或較小的零售商來說尤其是一個問題,並且通常是所有零售商的尾部查詢問題。
我們利用在零售商之間共享的標準化 Instacart 目錄克服了這個問題。通用目錄使我們能夠增強對搜尋詞、產品的理解並生成查詢建議,以使用所有零售商共享的產品來滿足搜尋流量較低的新的和較小的零售商。這種方法將新使用者的自動完成率提高了 0.8%,並將購物籃大小提高了 0.7%。
我們解決冷啟動問題的下一步是深入研究神經生成語言模型,以從目錄 ( doc2query ) 中可用的每個產品中提取查詢候選詞。
除了增加自動完成術語的覆蓋範圍外,我們還採用了類似的方法來增加顯示在建議旁邊的縮圖的覆蓋範圍。
排名:超越人氣
我們最初的自動完成排名模型是基於受歡迎程度的,效果相當好。然而,隨著自動完成使用量的增加,我們問了自己很多重要的問題——“它能否影響使用者的搜尋行為”、“它能否推動更大的購物籃大小”、“它能否激發使用者搜尋新奇的查詢”。這導致我們探索新的排名模型來確定建議的最終排序。
自動完成參與模型
我們從一個模型開始,其目標是在頂部顯示最相關的建議。使用自動完成參與日誌作為我們的訓練資料集,使用者點選的查詢建議用作正面示例,其餘建議用作負面示例。使用這個資料集,我們現在可以訓練一個學習排序模型。
考慮到嚴格的延遲,我們首先開發了一種輕量級排名演算法,該演算法被建模為二進位制分類問題,混合了查詢特徵,如流行度和字首查詢互動特徵。
最相關的功能是:
- ac_conversion_rate,測量在給定字首的情況下觀察和單擊建議術語的速率。
- ac_skip_rate旨在透過對使用者看到但未參與的熱門建議術語的比率進行建模來控制位置偏差。
- is_start_match,一個布林特徵,用於指示字首是否從建議術語的開頭匹配(即“紙巾”從開頭匹配字首“ p ”,但“toilet paper ”不匹配)。
- is_fuzzy_match,一個布林特徵,用於指示匹配是否模糊。
- has_thumbnail,一個布林特徵,用於指示建議是否包含縮圖。
- normalized_popularity,一種標準化的查詢流行度特徵(作為總搜尋量的一小部分),在零售商級別。
該模型提高了自動填充參與率,並減少了平均字首長度,從而幫助客戶透過減少輸入來更快地獲得搜尋結果。
這種改進的購物體驗的有效性滲透到下游核心指標,每次搜尋新增到購物車的商品增加了 2%,廣告收入增加了 1.6%。
多目標排名
我們展示了自動完成功能是引導客戶獲得更好的搜尋體驗和提高整體搜尋效能的一個很好的工具。我們可以透過聯合最佳化自動完成參與(幫助使用者更快地找到他們正在尋找的內容)和新增到購物車(將搜尋流量推向更高轉化的查詢)來進一步推動業務價值。
搜尋的目標是實現使用者透過搜尋查詢表達的意圖。我們知道,當有一個(或多個)專案新增到與該搜尋查詢相關聯的購物車時,一個意圖已經實現。
在搜尋過程的過度簡化中,在表達意圖和新增到購物車之間有三個步驟:
第一步,使用者在搜尋欄(字首)中輸入他們的意圖,並動態地看到一個排序的建議列表。
如果使用者選擇了其中一個建議(第 2 步),我們就會進行自動完成轉換。
在第 3 步中,使用者登陸搜尋結果頁面,顯示所選術語的建議專案,現在可以選擇將專案新增到購物車 - 我們將此事件稱為search conversion o或add to cart.
在自動完成參與模型中,我們只關注第 1 步和第 2 步,並訓練最佳化自動完成轉化的排名模型。Instacart 在搜尋方面的最終目標是幫助客戶構建購物車。出於這個原因,我們建立了一個新的訓練資料集,專注於所有三個步驟,並構建了一個多目標模型,最終目標是增加購物車的新增量。
我們嘗試了一些多目標方法,例如標籤聚合方法,透過將多個目標聚合為一個目標,將問題簡化為一個目標。在我們的自動完成場景中,只有在自動完成展示被轉換時才會新增到購物車,因此我們可以簡單地將 AC 目標交換為新增到購物車目標。然而,我們遇到了資料稀疏問題並選擇了模型聚合方法——為每個目標獨立調整的模型融合。
詳細點選標題
自動完成不僅僅是一個導航工具,它可以在使用者鍵入時預測使用者的意圖。它也是一個強大的途徑,可以將搜尋流量塑造成有意義的查詢,並提高 Instacart 產品的可發現性。
為了在構建購物車的過程中最好地引導和啟發使用者,自動完成功能需要考慮除流行度和搜尋指標之外的各種因素。我們正在努力使我們的自動完成功能個性化,並利用上下文資訊(例如本地趨勢產品和使用者在購物車中的當前物品)來幫助導航並透過相關和鼓舞人心的提示建議取悅客戶。
相關文章
- 如何幫助人們以不同方式思考?
- 購物車模組
- 大資料如何幫助人工智慧?大資料人工智慧
- 使用Vue做一個購物車Vue
- 說說如何使用 Vue.js 開發購物車功能Vue.js
- flutter 購物車功能Flutter
- iOS 購物車動畫iOS動畫
- 淘寶買家授權API系列:新增購物車商品、刪除購物車商品、獲取購物車商品列表API
- 使用SSH+session+mysql實現購物車SessionMySql
- 完善購物車系統
- 購物車的實現原理
- python之購物車程式Python
- 購物車原理以及實現
- jQuery 加入購物車 彈窗jQuery
- vue例項-購物車功能Vue
- Vue實現購物車效果Vue
- jquery簡單購物車功能jQuery
- React實現購物車功能React
- iOS加入購物車動畫效果iOS動畫
- 想請問下關於購物車如何實現
- 改版後前端購物車系統前端
- 加入購物車動畫效果實現動畫
- VUE-書籍購物車案例Vue
- 微信小程式的購物車功能微信小程式
- 【jquery】實現購物車加減jQuery
- jQuery商品飛入購物車效果jQuery
- 購物車(OK HTTP方法請求)HTTP
- 微信小程式之購物車功能微信小程式
- PHP 實現機器學習挖掘使用者的購物習慣PHP機器學習
- HMS Core機器學習服務助力Zaful使用者便捷購物機器學習
- 商城購物車加減控制元件的簡單封裝控制元件封裝
- 原生js實現購物車結算JS
- Android實現商城購物車功能Android
- python-購物車程式練習Python
- vue2.0實現購物車功能Vue
- 二級列表完美實現購物車
- javascript仿天貓加入購物車動畫效果JavaScript動畫
- AngularJS 實現簡單購物車AngularJS