Snap:如何加速推薦系統的特徵工程
開發人員提高特徵工程的速度是許多公司快速迭代和構建 ML 應用程式的重點。沿著Airbnb 的 Zipline和 Uber 的Michelangelo Palette的路線,Snap 撰寫了關於其內部功能自動化框架 Robusta 的文章。
Snap 的特徵工程挑戰
對於許多 Snap 團隊來說,提取建模訊號一直是一項高難度的活動。從歷史上看,團隊僅依賴於需要在關鍵服務元件中實現和記錄功能的前向填充過程。然後,他們在訓練任何模型之前等待特徵日誌數週。
隨著時間的推移,這個過程被證明是一個主要瓶頸:
- ML 工程師通常不熟悉線上服務元件,接觸它們是有風險的。另一方面,委派給基礎設施工程師會引入協調開銷。
- 判斷一個功能是否有用的週轉時間非常長。
- 每個團隊都構建自己的具有重疊功能的基礎架構。雖然擁有更多工程資源的團隊可以構建更復雜的系統,但較小的團隊無法輕鬆訪問更高階的功能。此外,幾乎不可能共享功能。
正是在這種背景下,我們開始問自己:我們能否讓 ML 特徵工程變得更容易?
Robusta
功能自動化框架 Robusta(以咖啡豆命名)是我們解決痛點的初步嘗試。它側重於關聯和交換聚合特徵。這些特徵在我們的 ML 應用程式中被廣泛使用,有時佔 ML 模型中超過 80% 的訊號。關聯和交換屬性對分散式系統非常友好,允許我們做出方便的假設。事實上,業內許多公司都有類似的系統,例如Airbnb Zipline [1] 和Uber Palette [2]。我們從他們那裡得到了很大的啟發。
在設計和實施 Robusta 時,我們必須克服的一些顯著挑戰是:
- Velocity:如何透過單一的宣告性功能規範端到端啟用新功能,無需手動服務部署,也不會給 ML 基礎架構帶來風險。
- 規模:典型的 ML 用例具有數千個具有不同屬性的聚合功能。例如,它們可能有不同的滑動視窗,有時按使用者 ID 聚合,有時按快照 ID 或多個鍵的組合(即使用者 ID + 發現頻道 + 一天中的小時)。有些操作可以很容易地表示為關聯和交換操作,但也有一些操作需要一些工作來調整和適應。我們需要設計一個框架來實現這些可能性,同時每天有效地處理數十億個事件。
- 正確性:如何支援近實時特徵的離線生成,也就是解決所謂的時間點正確性問題 [3]。我們必須回答線上推理時的特徵值是什麼。當我們擁有可以以分鐘級粒度更新的滑動視窗功能時,這尤其具有挑戰性,因為對於大多數使用者來說,即使沒有任何新的參與事件,隨著時間的推移,特徵值可能每分鐘都在變化。
我們將在以下部分深入探討這些問題。
詳細點選標題
相關文章
- 關於推薦系統中的特徵工程特徵工程
- 淺談微視推薦系統中的特徵工程特徵工程
- 詳解特徵工程與推薦系統及其實踐特徵工程
- 【推薦系統篇】--推薦系統之之特徵工程部分---構建訓練集流程特徵工程
- 羅遠飛:自動特徵工程在推薦系統中的研究特徵工程
- 推薦系統工程架構架構
- 如何將知識圖譜特徵學習應用到推薦系統?特徵
- 如何構建推薦系統
- 推薦系統應該如何保障推薦的多樣性?
- 基於物件特徵的推薦物件特徵
- 推薦系統
- 【推薦系統篇】--推薦系統之訓練模型模型
- 編輯推薦之《推薦系統》
- 【推薦系統篇】--推薦系統之測試資料
- 《推薦系統學習》之推薦系統那點事
- Mahout的taste推薦系統引擎(影片推薦案例)AST
- 雲音樂推薦系統(二):推薦系統的核心演算法演算法
- 推薦系統概述
- 機器學習 — 推薦系統機器學習
- 《推薦系統實踐》筆記 01 推薦系統簡介筆記
- 企業如何選擇合適的CRM系統 CRM系統推薦
- 推薦系統論文之序列推薦:KERL
- 推薦系統: 相關推薦方法對比
- 推薦系統一——深入理解YouTube推薦系統演算法演算法
- 【推薦系統篇】--推薦系統介紹和基本架構流程架構
- YouTube深度學習推薦系統的十大工程問題深度學習
- 《推薦系統》-DIN模型模型
- 《推薦系統》-PNN模型模型
- python 推薦系統Python
- 推薦系統雜談
- 推薦系統評估
- 推薦:看板系統Trello
- 圖靈推薦系統圖靈
- 推薦系統概念篇
- PredictionIO:開源的推薦系統
- 推薦系統的評估方法
- 序列推薦系統的前世今生
- 開源的.NET系統推薦