產品概述:算法
推薦引擎(Recommendation Engine,如下簡稱RecEng,特指阿里雲推薦引擎)是在阿里雲計算環境下創建的一套推薦服務框架,目標是讓廣大中小互聯網企業可以在這套框架上快速的搭建知足自身業務需求的推薦服務。安全
課程連接:阿里雲推薦引擎使用教程框架
推薦服務一般由三部分組成:日誌採集,推薦計算和產品對接。推薦服務首先須要採集產品中記錄的用戶行爲日誌到離線存儲,而後在離線環境下利用推薦算法進行用戶和物品的匹配計算,找出每一個用戶可能感興趣的物品集合後,將這些預先計算好的結果推送到在線存儲上,最終產品在有用戶訪問時經過在線API向推薦服務發起請求,得到該用戶可能感興趣的物品,完成推薦業務。網站
RecEng的核心是推薦算法的定製。RecEng爲推薦業務定義了一套完整的規範,從輸入,到計算,到輸出,客戶能夠在這個框架下自定義算法和規則,以此知足各類行業的需求,包括電商,音樂,視頻,社交,新聞,閱讀等。同時,RecEng也提供了相應的方法供客戶便捷的接入用戶訪問日誌,以及自定義知足其自身業務需求的在線API。阿里雲
基本概念:雲計算
客戶/租戶(org/tenant)線程
指RecEng的使用者,系統中由其阿里雲帳號表明。一般客戶是一個組織,RecEng中經常使用org表示客戶。3d
用戶(user)日誌
指客戶的用戶,即RecEng使用者的用戶。推薦是一個2C的服務,使用推薦服務的客戶必然有其本身的用戶,RecEng使用者的用戶簡稱爲「用戶」,系統中經常使用user表示用戶。視頻
物品(item)
指被推薦給用戶的內容,能夠是商品,也能夠是歌曲,視頻等其餘內容,系統中經常使用item表示物品。
業務(biz)
業務針對數據集定義,定義了算法所能使用的數據範圍。一個客戶在RecEng上能夠有多個業務,不一樣的業務必然有不一樣的數據集。RecEng要求每一個業務提供四類數據(不要求所有提供):用戶數據,物品數據,用戶行爲數據,推薦效果數據。每一組這樣的數據就構成一個業務。系統中經常使用biz表示業務。
好比某客戶A有兩類被推薦的物品,分別是視頻和歌曲,因而客戶A能夠在RecEng上創建兩個業務M和N,其中M的物品數據爲視頻,N的物品數據爲歌曲,其餘的數據(指用戶數據,用戶行爲數據等)能夠都相同。在這種方案下,業務M和N的數據是獨立的,即業務M雖然能看到用戶對於歌曲的行爲,可是業務M中不包含歌曲的物品數據,因此會丟棄用戶對於歌曲的行爲;若是業務M中某用戶只對歌曲有行爲,對視頻沒有行爲,業務M也會丟棄這類用戶。反之對業務N亦然。
一個業務最好只推薦一類物品。多類物品的推薦在後續的行業模板會有支持,須要引入板塊(plate)的概念,一份業務數據能夠生成多個板塊的數據集,場景綁定某個板塊進行推薦算法計算。
場景(scn)
場景指的是推薦的上下文,每一個場景都會輸出一個API,場景由推薦時可用的參數決定。有兩種場景最爲常見,分別是首頁推薦場景和詳情頁推薦場景。顧名思義,在執行首頁推薦時,可用的參數只有用戶信息;而在執行詳情頁推薦時,可用的參數除了用戶信息,還包括當前詳情頁上所展現的物品信息。系統中經常使用scn表示場景。
一個業務能夠包含多個場景,即對於某個業務A,它包含多個首頁場景也是徹底能夠的。
事實上,回到場景的原始定義,場景只是由推薦的上下文決定,客戶徹底能夠根據本身的需求創建全新的場景,好比針對搜索關鍵詞的推薦場景,這時可用的參數除了用戶信息,還有用戶所輸入的關鍵詞。
流程(flow)
算法流程指數據端到端的處理流程,一部分流程屬於業務範疇,如數據導入流程,效果計算流程,數據質量分計算流程;一部分屬於場景,好比場景算法流程。從數據源類型和產出來劃分,又分爲離線流程,近線流程,在線流程
離線流程
通常狀況下,離線流程的輸入和輸出都是MaxCompute(原ODPS)表,因此離線數據規範其實上是一組MaxCompute表的格式規範,包括接入數據、中間數據和輸出數據三類數據的格式規範。接入數據指客戶離線提供的用戶、物品、日誌等數據,中間數據是在離線算法流程中產生的各類中間性質的結果數據表,輸出數據是指推薦結果數據表,該結果最終將會被導入到在線存儲中,供在線計算模塊使用。
近線流程
推薦引擎的的近線流程主要處理用戶行爲發生變化、推薦物品發生更新時,對離線推薦結果進行更新。不像離線算法,自然以MaxCompute(原ODPS)表做爲輸入和輸出,近線程序的輸入數據能夠來自多個數據源,如在線的表格存儲(原OTS),以及用戶的API請求,又或者是程序中的變量;輸出能夠是程序變量,或者寫回在線存儲,或者返回給用戶。出於安全性考慮,推薦引擎提供了一組SDK供客戶自定義在線代碼讀寫在線存儲(Table Store),不容許直接訪問,因此須要定義每類在線存儲的別名和格式。對於須要頻繁使用的在線數據,不管其來自在線存儲仍是用戶的API請求,RecEng會預先讀好,保存在在線程序的變量中,客戶自定義代碼能夠直接讀寫這些變量中的數據。
在線流程
推薦引擎的的在線流程負責的任務是推薦API接收到API請求時,實時對離線和近線修正產生的推薦結果進行過濾、排重、補足等處理;後者主要處理用戶行爲發生變化、推薦物品發生更新時,對離線推薦結果進行更新
一個場景只包含一個離線流程和一個近線流程,能夠包含多個在線流程,用於支持A/BTest。
算法策略(Algorithm Strategy)
算法策略定義了一套離線/近線流程。而且透出相關的算法參數,幫助客戶構建本身的算法流程。一個場景能夠配置多個算法策略,最終會合並執行,產出一系列推薦候選集和過濾集,在線流程經過引用這些候選集來完成個性化推薦。
做業/任務(task)
做業指運行中的離線流程實例,做業和離線流程的關係徹底等同於進程和程序的關係。每一個做業都是不可重入的,即對每一個離線流程,同一時間只容許運行一份實例。做業直接存在上下游關係,若是上游做業失敗,下游任務也會被取消。
更多精品課程:
阿里雲大學官網(阿里雲大學 - 官方網站,雲生態下的創新人才工場)