推薦系統和搜尋引擎是現代App解決資訊過載的標配系統,如果從零開發推薦系統,不僅需要耗費大量金錢和時間,而且很難滿足快速上線推薦系統及不斷迭代各種演算法的業務要求。本文為您介紹如何使用阿里雲產品建立推薦系統的資料和模型,從而快速搭建自己的推薦系統。
架構
完整的推薦流程包括召回和排序。召回是指從海量的待推薦候選集中,選取待推薦列表。排序是指對待推薦列表的每個Item與User的關聯程度進行排序。推薦系統的架構如下。
基於PAI產品實現推薦系統的架構如下。其中:
資料分為User、Item及Behavior,均儲存於MaxCompute。
使用DataWorks進行資料預先處理和基礎特徵構建。
部分特徵向量寫入Tablestore。
使用Designer進行召回和排序演算法相關計算。
排序模型可以直接通過EAS部署為RESTful API。
可以先將召回結果寫入Tablestore,再使用PAI-AutoLearning進行配置,最終將結果傳入EAS並部署為RESTful API。
完整的推薦流程如下。使用者進入PAI平台,首先調用EAS的召回服務擷取召回列表,然後在Tablestore中,使用User ID和Item ID讀取特徵,並將拼接好的樣本傳入EAS排序服務,最終擷取排序結果。
推薦系統的相關資料
【強烈推薦】完整的推薦解決方案(基於該資料,一個人僅需一周即可搭建一套完整的企業級推薦系統):PAI平台搭建企業級個人化推薦系統。
【強烈推薦】通過視頻,介紹如何快速搭建一套基於協同過濾的簡單推薦系統;從零構建推薦系統。
FM-Embedding用法:使用FM-Embedding實現推薦召回。
冷啟動情境
如果需要推薦很多Item,則可以考慮使用文章的標題和本文訓練一個Doc2vec模型,並對每個Item產生一個向量,詳情請參見文本分析。
您可以將向量放至ES引擎中,並添加向量檢索外掛程式,從而使每個向量可以召回相似向量。建議先對Item進行分類,再在同一個大類中尋找相似向量。如果沒有對Item進行分類,則可以標註部分Item,並將其作為分類模型。
基於使用者行為的推薦情境
擁有冷啟動及使用者點擊資料後,您可以按照如下方法構建推薦情境:
使用使用者點擊序列計算物品和物品之間的關係。您可以通過自然語言處理中的Word2vec演算法,將每個使用者點擊的多個Item作為一個句子,並對該Item序列進行清洗(例如,訪問的Item屬於同一個大類、訪問的Item在同一個Session中或兩次訪問Item的時間間隔不超過30分鐘),詳情請參見文本分析。
獲得足夠的User和Item資料後,您可以通過協同過濾etrec演算法或矩陣分解演算法計算得到Item-Item資料,詳情請參見組件配置。
說明etrec演算法中可以設定權重weight。例如,對點擊、收藏及購買設定不同的權重。
獲得使用者點擊Item的日誌和曝光日誌後,您可以使用GBDT模型(避免特徵工程)或樹模型(例如PS-SMART)整理使用者特徵和Item特徵,詳情請參見組件配置或GBDT迴歸。
使用如下任何一種演算法挖掘特徵(User和Item本身特徵、User-Item交叉特徵及Context特徵):
挖掘特徵工程:特徵工程。
自動挖掘Autocross特徵:Auto ML自動特徵工程使用說明。
使用FM演算法自動挖掘二階交叉特徵:使用FM-Embedding實現推薦召回。
模型訓練完成後,使用EAS將其部署為RESTful API,詳情請參見服務部署:控制台。
使用TextRank演算法提取關鍵詞,從而挖掘Item中的標籤資訊,詳情請參見文本分析。