推薦系統(tǒng)整體架構(gòu)總結(jié)
文末福利~
推薦系統(tǒng)的邏輯框架
先來簡(jiǎn)單梳理下推薦系統(tǒng)的作用和意義。
用戶的角度:推薦系統(tǒng)解決的是在‘信息過載的情況下’,用戶如何獲得感興趣信息(或者說是對(duì)自己有用的信息)的問題,特別是在互聯(lián)網(wǎng)這種擁有海量信息的場(chǎng)景下,推薦系統(tǒng)會(huì)更多地利用用戶的各類歷史信息‘猜測(cè)’其可能喜歡的內(nèi)容。
公司的角度:推薦系統(tǒng)解決產(chǎn)品能夠最大限度地吸引用戶、留存用戶、增加用戶黏性、提高用戶轉(zhuǎn)化率的問題,從而達(dá)到公司商業(yè)目標(biāo)連續(xù)增長(zhǎng)的目的。當(dāng)然,不同的業(yè)務(wù)模式的公司的優(yōu)化目標(biāo)是不同的:如視頻類公司更注重用戶觀看時(shí)長(zhǎng),電商類公司更注重用戶的購買轉(zhuǎn)化率,新聞?lì)惞靖⒅赜脩舻狞c(diǎn)擊率。
從上面可以看出,推薦系統(tǒng)要處理的核心問題就是如何更好地利用商品和人的信息來實(shí)現(xiàn)公司與用戶的雙贏。
就‘信息’來講,可以根據(jù)所屬大體劃分為三部分,分別是物品信息,用戶信息和場(chǎng)景信息。物品信息只是一個(gè)統(tǒng)稱,在不同的場(chǎng)景中也會(huì)有不同的叫法,比如在商品推薦中可以稱為‘商品信息’,在視頻推薦中可以稱為‘視頻信息’,在新聞推薦中可以稱為‘新聞信息’等等。用戶信息通常包含和用戶更加相關(guān)的信息,如人口屬性、歷史行為、關(guān)系網(wǎng)絡(luò)等等,這些信息往往可以推測(cè)出‘人’的興趣點(diǎn)。
場(chǎng)景信息一般指的是時(shí)間、地點(diǎn)等一些環(huán)境信息,常常也被稱為‘上下文信息’。
在我們獲得‘用戶信息’,‘物品信息’,‘場(chǎng)景信息’后,就可以將推薦系統(tǒng)解決的問題定義為以下形式:對(duì)于用戶 U(user),在特定場(chǎng)景下 C(context)下,針對(duì)海量的物品,構(gòu)建一個(gè)函數(shù) f (U, I, C),預(yù)測(cè)用戶對(duì)特定候選物品 I(item)的喜好程度,再根據(jù)喜好程度對(duì)所有候選物品進(jìn)行排序,生成推薦列表的問題。
這樣我們就可以大致得到如下圖所示的推薦系統(tǒng)邏輯框架。

推薦系統(tǒng)的技術(shù)架構(gòu)
不論是數(shù)據(jù)處理,還是模型訓(xùn)練,都需要各種各樣的計(jì)算,常常我們看一些文章的時(shí)候,總是會(huì)談到離線計(jì)算,近線計(jì)算,在線計(jì)算等,因此想要了解推薦系統(tǒng)的技術(shù)架構(gòu),就需要對(duì)這幾種不同的計(jì)算方式有一定的了解,直接來上張圖。

從上圖中可以看到,從上至下依次為離線(offline),近線(nearline),在線(online)三部分。
離線(offline)
存儲(chǔ)離線數(shù)據(jù),利用大數(shù)據(jù)查詢工具進(jìn)行數(shù)據(jù)查詢和處理,離線模型訓(xùn)練。離線部分對(duì)于數(shù)據(jù)數(shù)量和算法復(fù)雜度的限制較少,以批量方式完成數(shù)據(jù)處理,但是數(shù)據(jù)處理的實(shí)時(shí)性非常差,無法做到數(shù)據(jù)和模型的及時(shí)更新。
近線(near line)
基于數(shù)據(jù)消息隊(duì)列,利用一些流計(jì)算平臺(tái)進(jìn)行數(shù)據(jù)的準(zhǔn)實(shí)時(shí)處理。它居于離線和在線之間,既可以以分鐘級(jí)別甚至秒級(jí)的延時(shí)來準(zhǔn)實(shí)時(shí)地處理數(shù)據(jù),也有一定的數(shù)據(jù)批量處理能力。
在線(online)
online部分的主要任務(wù)是進(jìn)行用戶請(qǐng)求的實(shí)時(shí)處理,模型的在線服務(wù)。在線部分需要更快地響應(yīng)最近的事件和用戶交互,因此對(duì)于延遲的要求比較苛刻,一般都要求在100ms以內(nèi)完成所有處理,這會(huì)限制所用算法的復(fù)雜性和可處理的數(shù)據(jù)量。
常用的技術(shù)棧: HDFS(離線)+Spark(離線)+Flink(在線+近線)+Redis(在線+近線),從離線到在線,數(shù)據(jù)的實(shí)時(shí)性從上到下依次增強(qiáng),而數(shù)據(jù)規(guī)模和處理能力從上到下依次減弱。
推薦系統(tǒng)的技術(shù)架構(gòu)圖如下。

推薦系統(tǒng)的數(shù)據(jù)部分
在推薦系統(tǒng)的技術(shù)架構(gòu)中,數(shù)據(jù)部分主要負(fù)責(zé)收集和處理用戶信息、物品信息,場(chǎng)景信息。而海量信息是需要大數(shù)據(jù)平臺(tái)來處理的。根據(jù)實(shí)時(shí)性的強(qiáng)弱排序:依次為‘客戶端及服務(wù)器端實(shí)時(shí)數(shù)據(jù)處理’,‘流處理平臺(tái)準(zhǔn)實(shí)時(shí)數(shù)據(jù)處理’,'大數(shù)據(jù)平臺(tái)離線數(shù)據(jù)處理’。而在實(shí)時(shí)性由強(qiáng)到弱遞減的同時(shí),三種平臺(tái)的海量數(shù)據(jù)處理能力則由弱到強(qiáng)。當(dāng)然,一個(gè)成熟的推薦系統(tǒng)的數(shù)據(jù)流系統(tǒng)會(huì)將三者取長(zhǎng)補(bǔ)短,配合使用。
推薦系統(tǒng)的模型部分
推薦系統(tǒng)的模型部分是推薦系統(tǒng)的核心,也是主體,模型結(jié)構(gòu)一般由‘召回層’,‘排序?qū)印汀a(bǔ)充策略與算法層’(重排序)組成。
‘召回層’一般利用高效的召回規(guī)則、算法或簡(jiǎn)單的模型,快速從海量的候選集中召回用戶可能感興趣的物品。
‘排序?qū)印门判蚰P蛯?duì)初篩的候選集進(jìn)行精排序。
‘補(bǔ)充策略與算法層’也被稱為‘重排序?qū)印?,可以在將推薦列表返回用戶之前,為兼顧結(jié)果的‘多樣性’,‘流行度’,‘新鮮度’等指標(biāo),結(jié)合一些補(bǔ)充的策略和算法對(duì)推薦列表進(jìn)行一定的調(diào)整,最終形成用戶可見的推薦列表。
模型訓(xùn)練根據(jù)訓(xùn)練環(huán)境的不同,分為離線訓(xùn)練和在線更新兩部分,其中,離線訓(xùn)練的特點(diǎn)是可以利用全量樣本和特征,使模型逼近全局最優(yōu)點(diǎn),而在線更新則可以準(zhǔn)實(shí)時(shí)地‘消化’新的數(shù)據(jù)樣本,更快地反映新的數(shù)據(jù)變化趨勢(shì),滿足模型實(shí)時(shí)性的需求。
模型性能預(yù)估:離線指標(biāo) AUC/Recall/RMSE等,而在線評(píng)估則是AB Testing,它是用于衡量某值算法上線后帶來的真實(shí)收益情況(這里的收益可以是CTR/CVR/ecpm等),從而讓我們知道某個(gè)算法是否和離線預(yù)估表現(xiàn)的一致,是否值得上線替代老版本的算法。
常用算法框架:TensorFlow/Keras,Spark MLlib,在數(shù)據(jù)采集上,可以采用Flink;在離線批量計(jì)上,可以采用歷久彌新的Spark;在底層數(shù)據(jù)存儲(chǔ)上,可以采用HDFS;在存儲(chǔ)(U,I,C)的近線在線特征時(shí),可以采用Redis。
將上面推薦系統(tǒng)的技術(shù)架構(gòu)進(jìn)一步細(xì)化的話,可得到如下圖所示的技術(shù)架構(gòu)。

AB Testing的流程
假設(shè)我們要上線A算法通過了我們的離線預(yù)估,準(zhǔn)備上線來與線上正在跑的B算法battle一下。
通常的AB Testing流程是:
在線上的流量池中,切出一部分流量來給A算法(該流量為實(shí)驗(yàn)組)同時(shí)為了方便對(duì),會(huì)切出等量的流量來給B算法(該流量為對(duì)照組),讓這兩個(gè)算法分別在各自的流量中運(yùn)行一段時(shí)間,看看最終在線CTR/CVR等商業(yè)指標(biāo)的表現(xiàn)情況如何。
其中的流量則指的是用戶,同時(shí)在實(shí)驗(yàn)期間:實(shí)驗(yàn)組有且僅能看到A算法效果;控制組有且僅能看到B算法效果,因此AB Testing環(huán)節(jié)的精髓便在于,怎么”公平“的切分流量。即讓兩個(gè)流量組的用戶分布均勻,不會(huì)存在實(shí)驗(yàn)組用戶和控制組用戶區(qū)分性太大,因?yàn)閰^(qū)分性太大流量就有偏了,做出來的實(shí)驗(yàn)效果自然不可信。比如實(shí)驗(yàn)組美國(guó)的用戶占比為80%,而控制組的用戶美國(guó)的用戶的10%就是一個(gè)分流非常差的結(jié)果。
AB Testing的意義在于:離線評(píng)估無法完全消除模型過擬合的影響,因此,得出的離線評(píng)估結(jié)果無法完全替代線上評(píng)估結(jié)果。一般來講,離線評(píng)估往往不會(huì) 考慮線上環(huán)境的延遲、數(shù)據(jù)丟失、標(biāo)簽數(shù)據(jù)缺失等情況。因此,離線評(píng)估的結(jié)果 是理想工程環(huán)境下的結(jié)果。線上系統(tǒng)的某些商業(yè)指標(biāo)在離線評(píng)估中無法計(jì)算。離線評(píng)估一般是針對(duì) 模型本身進(jìn)行評(píng)估,而與模型相關(guān)的其他指標(biāo),特別是商業(yè)指標(biāo),往往無法直接獲得。比如,上線了新的推薦算法,離線評(píng)估往往關(guān)注的是ROC曲線、P-R曲線等 的改進(jìn)而線上評(píng)估可以全面了解該推薦算法帶來的用戶點(diǎn)擊率、留存時(shí)長(zhǎng)、PV 訪問量等的變化。這些都要由A/B測(cè)試來進(jìn)行全面的評(píng)估。
七月在線寵粉禮
↓↓↓單推薦方向課程15個(gè)小課1分起購,更有ML、DL、CV、NLP等精品課1分秒!↓↓↓
移步→http://julyedu.com?搶購



已幫助超200人達(dá)成升職加薪愿望的【推薦高級(jí)小班】課,也有鉅惠福利,了解詳情→https://www.julyedu.com/employment/rs13
