數(shù)據(jù)算法:推薦系統(tǒng)的實踐與思考(下)
繼上篇為大家介紹了算法和數(shù)據(jù)部分后,本篇文章將繼續(xù)介紹推薦系統(tǒng)的在線服務(wù)和評估方法。
推薦系統(tǒng)之在線服務(wù)
在解決了算法和數(shù)據(jù)層面的問題之后,我們需要構(gòu)建一個推薦系統(tǒng)的在線服務(wù),用來響應(yīng)用戶的推薦請求。假設(shè)企業(yè)初期的 DAU 是 10 萬,當(dāng) DAU 漲到一百萬的時候,希望能夠通過增加機(jī)器的形式,解決服務(wù)性能響應(yīng)的問題。如果每當(dāng) DAU 擴(kuò)大時就要去重構(gòu)推薦服務(wù)的話,代價實在太大,所以我們希望我們的推薦服務(wù)具備高可擴(kuò)展性。
另外一些常見的需求是:如何實現(xiàn)高維向量的查詢和計算?如何滿足不同場景時效性不同的需求?監(jiān)控和報警怎么做……
盡管深度學(xué)習(xí)的模型復(fù)雜、效果又好,但哪怕把模型訓(xùn)練出來之后,等過渡到在線服務(wù)時還是會遇到很大的挑戰(zhàn)。今天我就幾個實踐問題在這里跟大家做一些分享。
1. 如何做高維的向量查詢?
舉個例子。假設(shè)目前有 10 萬個商品,每一個商品擁有一個向量的話,就會有 10 萬個向量,當(dāng)用戶來到后,一個用戶對應(yīng)一個向量,這個時候我們需要在這 10 萬個項目里面去查找到跟這一個用戶向量最匹配的 100 個或者 500 個向量。同時還要保證在足夠短的時間之內(nèi)(10-20 毫秒)將向量找出,所以在響應(yīng)時間的層面還面臨著較大的挑戰(zhàn)。
我們的解決方案是運(yùn)用一個叫做 Faiss 的工具,它可以解決大規(guī)模的向量的相似度查找問題,且最大可支持 10 億規(guī)模的內(nèi)容空間。簡而言之,當(dāng)我們有 10 億商品的時候,仍可以用此組件去做基于向量的相似度查找。
2. 如何讓推薦系統(tǒng)的在線服務(wù)具備高可擴(kuò)展性?
我一直在強(qiáng)調(diào),我希望我們的可擴(kuò)展性是水平的,流量上來之后,僅通過加機(jī)器的方式就能解決服務(wù)的壓力。我們的思路是,把在線服務(wù)分為三組:在線存儲、在線服務(wù)群、模型服務(wù)群。
我們把模型服務(wù)和在線服務(wù)做一些邏輯上的解耦,從而保證整個架構(gòu)在可擴(kuò)展性上是水平的,這樣既可去單加模型服務(wù)也可以去單加在線服務(wù),解決服務(wù)器上的壓力。
3. 不同場景下不同的時效性,該如何支持?
我作為一個技術(shù)的人員,在做 Feed 流時經(jīng)常會接到產(chǎn)品經(jīng)理如下的需求,比如,需要在綜合頻道推薦最近 3 天的文章,最近 7 天的視頻;歷史頻道的數(shù)據(jù)量對時效性要求沒那么高,需要推薦近 30 天的文章和最近 60 天的視頻;相關(guān)文章中要求推薦最近 7 天的文章,相關(guān)視頻中推薦近 30 天的視頻。
這些需求嚴(yán)格上來說是非常合理的,因為這是基于產(chǎn)品本身以及用戶對于此產(chǎn)品的訴求,但這些需求其實會給推薦系統(tǒng)帶來很大的問題。
我們簡單來計算一下場景數(shù)量:
產(chǎn)品經(jīng)理需要我們支持文章推薦和視頻推薦兩種類型,同時還要分成不同的頻道,而綜合頻道和其他小頻道所涵蓋的內(nèi)容和范圍又不一樣,小頻道少則十幾個,匹配上兩種架構(gòu)類型,大概 2×10=20 份數(shù)據(jù),再加上相關(guān)文件的推薦,可能會產(chǎn)生 40 份數(shù)據(jù)。
為了支持不同的時效性,我就需要維護(hù) 40 套不同的數(shù)據(jù),在推薦系統(tǒng)里面維護(hù) 40 套數(shù)據(jù)意味著維護(hù)成本和出錯的風(fēng)險都相當(dāng)大。40 套數(shù)據(jù),可能擁有 40 條邏輯,40 個數(shù)據(jù)流,一旦發(fā)生人員變動,對于接手的人員來說簡直噩夢。
所以我們在整體的架構(gòu)中,會去為不同場景、不同時效性設(shè)計一整套的工具和流程來解決諸如此類的問題,這可以使我們的線上管理較為簡潔,不會出錯但又非常靈活,即使有其他的時效性需求時,也能很容易地加入。
推薦系統(tǒng)之效果評估
評估一個推薦系統(tǒng),會涉及到一些常用指標(biāo):點擊率、點擊人數(shù)比、人均點擊次數(shù)、留存率、轉(zhuǎn)化率等。
1. 點擊人數(shù)比
指點擊的人數(shù)除以推薦的曝光人數(shù),這是一個用來衡量推薦系統(tǒng)觸達(dá)率的一個重要指標(biāo)。在評估一個模型效果時,可能點擊率上漲,但點擊人數(shù)比并沒有變化,這說明推薦結(jié)果只對于部分老用戶產(chǎn)生比較好的效果,對于觸達(dá)不到的用戶,仍然沒有成功吸引他們來使用我們的推薦系統(tǒng),所以點擊人數(shù)比與點擊率是對推薦系統(tǒng)在不同方面的評估。
2. 人均點擊次數(shù)
指每個人在推薦系統(tǒng)里面平均每天點擊了多少次。人均點擊次數(shù)是需要大家持續(xù)去關(guān)注的指標(biāo),因為這個指標(biāo)真正體現(xiàn)出用戶在這款產(chǎn)品中的使用深度。
3. 留存率和轉(zhuǎn)化率
留存率和轉(zhuǎn)化率實際上來說對于推薦系統(tǒng)來說,可能并不是一個那么直接的指標(biāo),比如推薦對留存的影響到底有多大,很大程度上決定于不同的產(chǎn)品形態(tài),但它仍是我們?nèi)ピu估推薦系統(tǒng)的一個指標(biāo),至少我們需要知道此次推薦系統(tǒng)的迭代到底對于留存率的影響有多大,如果迭代后的留存率下降,即使點擊率和點擊人數(shù)比都在上升,可能這一次迭代仍不能上線,因為它影響了留存的指標(biāo)。
還有一些方面,其實在之前的文章中神策數(shù)據(jù) VP 張濤:個性化推薦從入門到精通(附推薦產(chǎn)品經(jīng)理修煉秘籍)已經(jīng)跟大家提到過。
時效性。如果我們在做一個新聞產(chǎn)品的推薦系統(tǒng),那么給用戶推薦的內(nèi)容就應(yīng)該是實時的,而不是上周發(fā)生的事情。
多樣性。多樣性其實是容易被忽視的一個指標(biāo),因為如果不追求多樣性的話,點擊率的數(shù)據(jù)會好看一點。
不知道大家有沒有這樣的體驗,如果你對體育內(nèi)容感興趣,慢慢的你所有的推薦內(nèi)容都變成了體育相關(guān),似乎很難看到其他內(nèi)容,推薦的內(nèi)容越來越窄。短期來說,提升多樣性可能會讓點擊率有一些損失,但是長期來說,多樣性是為了提升整個產(chǎn)品用戶體驗所做的一種優(yōu)化,這里需要考慮長期和短期的權(quán)衡。
穩(wěn)定性。如果服務(wù)器經(jīng)常掛掉,或者說響應(yīng)時間總是五秒鐘,這樣的服務(wù)基本上是不可用的,我們一定要站在服務(wù)的角度去評估我們的推薦系統(tǒng)。
覆蓋率。覆蓋率指能夠推薦出來足夠多的長尾內(nèi)容,一個 UGC 平臺,需要去鼓勵一些用戶讓他們來生成內(nèi)容,即使是一些很小的用戶,即使沒有粉絲,我也希望他的內(nèi)容可以有一些曝光,有曝光就會有人去點贊,久而久之會形成一種良性循環(huán)。
如果平臺總是分發(fā)一些大 V 的內(nèi)容,平臺里小白用戶的使用和體驗就會變得非常糟糕,慢慢的就沒有這些小的內(nèi)容窗口了,平臺將被大 V 占領(lǐng),所以覆蓋率也是一個推薦系統(tǒng)需要考慮的指標(biāo)。
至于具體需要去考慮哪些指標(biāo),以及怎么去制定這些指標(biāo),我覺得要根據(jù)不同的產(chǎn)品形態(tài)以及產(chǎn)品不同的階段而定。
那么面對這些指標(biāo),我們有給力的分析工具去支持我做這件事情嗎?比如我想對比推薦系統(tǒng)的轉(zhuǎn)化率和另外一個 banner 的轉(zhuǎn)化率區(qū)別的時候,我們的分析工具具備這種能力嗎?
在我的日常工作中,是依據(jù)神策分析去做整個轉(zhuǎn)化率漏斗分析,以及留存分析等。留存分析其實是一種比較復(fù)雜的分析方法,它強(qiáng)調(diào)的維度比較多,它可能要從各個時間段以及各個條件去分析用戶的留存行為。
如果想要去分析推薦效果對于留存的影響,可以直接在神策分析中去做留存率的分析。
另外,跟大家分享一些關(guān)于迭代的思路。
以下圖為例,我們分析推薦系統(tǒng)在 12 月 18 號新增用戶上的不同表現(xiàn)。
我們想知道,對于新用戶和老用戶而言,推薦系統(tǒng)的這次迭代表現(xiàn)究竟如何。
從圖中可知,新用戶在第二天有一個明顯的提升,但是老用戶并沒有。說明這一次模型的上線對于新用戶而言效果是較好的,我們要進(jìn)一步去分析——為什么會對新用戶的效果提升明顯而對老用戶沒什么效果。
可能是因為使用的數(shù)據(jù)采樣方式對于新用戶更加有利,或者是因為對于新用戶的特征反饋比較及時,而對老用戶的一些長期特征做了一些不太合適的處理方式等等,都有可能。
所以,實現(xiàn)一個好用的推薦系統(tǒng),可能面臨這幾方面的挑戰(zhàn):
第一,數(shù)據(jù)獲取和處理質(zhì)量,就是我前面提到的如何做數(shù)據(jù)的采集,以及如何做特征工程。
第二,將算法跟業(yè)務(wù)結(jié)合,我們怎么去深入地理解業(yè)務(wù)場景,以及去選擇合適的算法方案。
第三,構(gòu)建推薦系統(tǒng)和評價體系,以及如何去解決在線服務(wù)這部分的挑戰(zhàn)。
第四,成本控制,當(dāng)我們?nèi)念^構(gòu)建算法、數(shù)據(jù)、在線服務(wù)以及評估方法這幾個方面的事情時,人力和時間都會耗費相當(dāng)大的成本。
最后回答演講剛開始時大家問我的一個問題——如何搭建一個閉環(huán),讓其流程化體系化。其實就是神策智能推薦系統(tǒng)的核心優(yōu)勢——全流程、實時、可快速迭代的推薦閉環(huán)。
通過我的分享,大家也可以看到我們在實際構(gòu)建一個推薦系統(tǒng)時,會遇到各種各樣的問題,基于之前的經(jīng)驗,數(shù)據(jù)質(zhì)量是非常需要注意的一部分。它包括全端采集數(shù)據(jù)、數(shù)據(jù)處理和建模、標(biāo)簽體系和用戶畫像建立。
接著,當(dāng)我們有了數(shù)據(jù)后我們就去構(gòu)建算法,我們擁有豐富的算法建模經(jīng)驗,并且數(shù)據(jù)基于神策分析,擁有實時數(shù)據(jù)反饋和快速的建模能力。
在算法生效之后,我們會對結(jié)果進(jìn)行多維的驗證分析,一方面我們要對于本次的推薦效果有一個認(rèn)知,另外一方面要明白后續(xù)將如何改進(jìn)。同時,在我們提供的解決方案里,還有兩個比較重要的環(huán)節(jié)。
第一,神策數(shù)據(jù)是一家支持私有化部署的公司,所以神策智能推薦系統(tǒng)同樣支持私有化部署,一整套系統(tǒng)都部署在客戶自己的服務(wù)器層。
第二,具有開放性。各種中間數(shù)據(jù)和接口客戶都可以自己去調(diào)用,比如我們幫助客戶采集行為數(shù)據(jù),在構(gòu)建整個推薦系統(tǒng)時所生成的各種用戶畫像和模型結(jié)果,以及內(nèi)容分析的一些結(jié)果,還有各個階段產(chǎn)生的一些模型方法,客戶都可以去調(diào)動。神策數(shù)據(jù)的解決方案是一個開放性的白盒,從實驗設(shè)計,到數(shù)據(jù)的采集,到中間的特征工程,到模型構(gòu)建,到最終推薦結(jié)果,里面的數(shù)據(jù)和接口都可供客戶訪問和查看。
最后,我想強(qiáng)調(diào)兩點內(nèi)容:
第一,推薦系統(tǒng)不只是算法,它是一個系統(tǒng)工程,算法只占四個部分中的一部分,通常我們?nèi)崿F(xiàn)一個推薦系統(tǒng)時,構(gòu)建算法的時間通常只占 20% 到 30%。
第二,數(shù)據(jù)先行,數(shù)據(jù)是一切算法的前提,根據(jù)過去的經(jīng)驗總結(jié),很多時候真的不是因為模型的問題,也不是因為服務(wù)的問題,而就是因為數(shù)據(jù)沒有做對,導(dǎo)致我們推薦系統(tǒng)的效果沒有那么符合預(yù)期。
以上就是我從多年的工作經(jīng)驗和實踐中總結(jié)出的一些關(guān)于推薦系統(tǒng)的思考,希望能對大家的工作有所啟發(fā)。
最后,告訴大家一個好消息:
為了幫助在運(yùn)營進(jìn)階路上,執(zhí)著前進(jìn)的伙伴們能夠更快速的提升,我們聯(lián)合了騰訊、百度等擁有10年以上經(jīng)驗沉淀的實戰(zhàn)派導(dǎo)師,推出了【運(yùn)營總監(jiān)修煉之道】,至今已幫助5000多名運(yùn)營管理者和進(jìn)階者,掌握了更加系統(tǒng)全面的運(yùn)營專業(yè)知識和管理思路,在處理類似運(yùn)營戰(zhàn)略規(guī)劃、不同渠道運(yùn)營策略和流量變現(xiàn)、品牌營銷玩法、數(shù)據(jù)分析等實際問題時有更清晰的解決方向!
掃描二維碼添加小助手了解詳情,還可以回復(fù)“筆記”領(lǐng)取【運(yùn)營總監(jiān)課程學(xué)習(xí)筆記】哦!
再猶豫,機(jī)會就沒啦~
相關(guān)閱讀
數(shù)據(jù)算法:推薦系統(tǒng)的實踐與思考(上)
分享者:胡士文
本文由 @神策數(shù)據(jù) 整理發(fā)布于人人都是產(chǎn)品經(jīng)理。未經(jīng)許可,禁止轉(zhuǎn)載
題圖來自Unsplash,基于CC0協(xié)議
想跟著BAT大咖老師學(xué)習(xí)更多進(jìn)階運(yùn)營知識體系嗎?
在【運(yùn)營總監(jiān)修煉之道】,四位來自騰訊、百度等擁有10年以上經(jīng)驗沉淀的實戰(zhàn)派導(dǎo)師,將和你面對面分享高階運(yùn)營的系統(tǒng)知識,幫你掌握更加系統(tǒng)全面的運(yùn)營專業(yè)體系和高效管理思路…….
想了解更多詳情?立即聯(lián)系Leo咨詢哦~微信/TEL:13028897966
PS:除了咨詢問題,還可以領(lǐng)取【運(yùn)營總監(jiān)課程學(xué)習(xí)筆記】! ??