Yelp是如何用數據驅動搜索過濾器的?
在美國最大的點評網站 Yelp 上,許多用戶都會使用高級搜索過濾器準確地查找某個地方。像“價格”、“距離”、“評級”這樣的過濾器很容易使用,但像“戶外座位”或“現場音樂”這種更 專門的過濾器就有些難用了。因此,他們需要尋找一種方法,在不影響用戶體驗的情況下,使用戶更方便地使用高級過濾器。Yelp數據挖掘工程師Ray M. G.近日 撰文介紹 了他們如何使用數據驅動搜索過濾器。
在設計新的過濾器之前,他們需要通過挖掘數據更好地理解用戶如何使用過濾器。他們發現,用戶選擇的過濾器很大程度上取決于他們使用的查詢詞。而 且,大部分用戶都只使用一個過濾器。他們由此得出,他們需要一種簡單的設計,只提供少數幾個同查詢詞相關的過濾器。以下是設計變化前后的界面:
圖一:舊搜索界面
圖二:新搜索界面
可以看出,新搜索界面隱藏了相關度較低的過濾器,極大地節省了頁面空間。而且,如果Yelp展示的過濾器不能滿足用戶需求,那么他們仍然可以點擊“所有過濾器”來選擇需要的過濾器。
為了支撐這種變化,他們需要構建一個模型。該模型可以接受一組信息特征(如查詢、日期&時間、位置、個人偏好及其他特征),并給出向客戶 展示哪些過濾器的建議。查詢字符串是最為重要的特征,但查詢文本是一種稀疏&長尾特征,且基數很大,很難為模型所用。他們希望可以構建一個函數, 將查詢文本映射成一個可以反映查詢與特定過濾器相關度的數值。下圖是他們構建的語言模型:
可以將該模型看作一個函數,輸入一個單詞序列,輸出單詞序列的概率估計。該模型是貝葉斯定理的一個簡單應用。在查詢一定的情況下,它可以計算出所 有過濾器的先驗概率P(filter|query)。可以看出,對于查詢詞“業余酒吧(after work bars)”,過濾器“歡樂時光”和“戶外座位”的概率值為正,說明它們與查詢相關,而過濾器“適合早午餐”和“適合孩子”被認為是不相關的。
為了測試該模型的有效性,他們使用了如下兩個指標:
- 過濾器使用率:由于Yelp搜索過濾器可以幫助用戶更快地發現相關內容,所以他們希望該模型可以提高過濾器使用率;
- 搜索質量:他們希望該模型推薦的過濾器有助于提供相關度更高的內容,提升搜索體驗。
測試發現,過濾器使用率較之前提高了20%,像“現在開放”、“快樂時光”這樣的過濾器使用次數明顯增加,而其他過濾器的使用次數稍微減少。在搜 索質量方面,他們通過連續的觀察發現,在測試人群中,搜索會話CRT(Click Through Rate,點進率)穩步上升。點擊數非常容易度量,但也是一個很容易產生迷惑性的指標,因為用戶點擊搜索結果,并不能讓被點擊的結果相關。因此,他們還輔 以其他指標,比如用戶找到相關結果所用的時間。按照Ray的說法,重新設計的搜索過濾器界面得到了一致好評,效果超出預期。