導(dǎo)讀:你是否有過來自用戶、業(yè)務(wù)和老板們的 badcase "靈魂拷問":
我運(yùn)營的首頁頻道入口不可用,怎么回事呢?
為什么推送的消息,點(diǎn)進(jìn)去是空白頁面?
為何這個(gè)商品的排序是這樣的?
這個(gè)前端改版為什么效果一般,這個(gè)頻道入口為什么排在前面?
這個(gè)商品是我們運(yùn)營 BD 了很久的商品,折扣非常低,怎么排序就這么靠后呢?
這個(gè)賣家最近被投訴了這么多,商品評(píng)分這么低,為什么排在第一個(gè)位置?
這個(gè)商品怎么會(huì)展示給我看呢?太惡心了,根本不是我喜歡的!
我的首頁推薦的為什么有情趣相關(guān)的商品?
我剛剛下了一單買了個(gè)寶寶推車,怎么還在給我推薦呢?我又不會(huì)買2輛。
昨天我買了個(gè) iphone 11手機(jī),怎么今天給我推送了關(guān)于 iphone 11 降價(jià)的消息?
首頁猜你喜歡推薦怎么都是同類型的,多樣性怎么這么差?用戶沒法逛起來的。
剛剛點(diǎn)擊了一個(gè)商品,下拉刷新推薦為什么沒有變,方案不是實(shí)時(shí)的嗎?
剛買了桶食用油,怎么這么多坑位給我展示食用油???體驗(yàn)太差了?。ū緱l來自阿里朱仰慕老師的知識(shí)圖譜分享)
"知乎這個(gè)相關(guān)問題是什么鬼?"(來自知乎)
----瞬間崩潰----
潘亂老師的文章中有一段敘述,描述了 Robin 經(jīng)常反饋 badcase 的情況:
李彥宏愛看互聯(lián)網(wǎng)新聞,但手百的個(gè)性化算法滿足不了需求,策略部門天天就被李彥宏報(bào)各種 badcase,比如去年底爆出的百度內(nèi) Feed 業(yè)務(wù)推薦溝通群的群聊截圖,李彥宏問一條"搜狗 IPO 路演 PPT 注釋"的新聞并未推送給自己。....手百團(tuán)隊(duì)的應(yīng)對(duì)是給李彥宏私人定制一條流。手百的策略部門找到百度新聞的科技內(nèi)容運(yùn)營,把手百 Feed 推優(yōu)平臺(tái)的互聯(lián)網(wǎng)分類做成了李彥宏專用的定制流,早6點(diǎn)到晚12點(diǎn)要有人時(shí)刻在推。算法搞不定李彥宏的口味,就靠編輯們純?nèi)斯ぜ影嗉狱c(diǎn)。當(dāng)然李彥宏知道后廢止了這個(gè)行為,但不知他是否知道他經(jīng)常搜索的花草樹木搜索結(jié)果頁也是優(yōu)化定制的。
我覺得 Robin 反饋問題應(yīng)該是真實(shí)的,畢竟信息流是百度重要的業(yè)務(wù)線,但是后面的專門定制和人工運(yùn)營可能稍微有點(diǎn)夸張了。但是這背后是互聯(lián)網(wǎng)激烈競(jìng)爭(zhēng)下,老板對(duì)于產(chǎn)品的要求越來越高。
互聯(lián)網(wǎng)流量紅利見頂?shù)那闆r下, 誰能更好地精細(xì)化地滿足用戶需求,誰就能在激烈競(jìng)爭(zhēng)中勝出。而 badcase 確實(shí)是一個(gè)個(gè)的坑,用戶摔跤多了,以后就不來你這條路了,挽回往往需要高昂的成本;用戶開開心心使用一般不會(huì)反饋問題,一旦不開心就有可能投訴反饋。如果一個(gè)產(chǎn)品很久沒有投訴反饋了,那倒要關(guān)心下活躍度了。如何快速地定位和識(shí)別哪些是坑 ( 有些不是坑,是看上去像坑 ),并且快速填平這些坑是重點(diǎn)。
本文主要從個(gè)人角度給出一些看法,如有不妥之處還望大家批評(píng)指正。
01
怎么看 badcase
1. 存在的必然性
世界上沒有完美的事,也沒有完美的人,人設(shè)計(jì)的產(chǎn)品也不可能有絕對(duì)完美;很多產(chǎn)品、算法模型都做不到完美,badcase 總是存在的。人工運(yùn)營或設(shè)計(jì)的產(chǎn)品,肯定就沒有那么千人千面,用一個(gè)或者幾個(gè)形態(tài)去滿足萬千用戶,肯定無法讓所有人滿意;就算是千人千面的產(chǎn)品 ( 比如淘寶已經(jīng)非常智能、個(gè)性化 ),還是存在著被用戶吐槽的各種問題,因?yàn)闄C(jī)器學(xué)習(xí)/算法,也始終是在預(yù)估一定的概率,模型最后得到的也是兼顧大部分的一個(gè)解,也不是覆蓋全部用戶的最優(yōu)解;更何況是各類模型的訓(xùn)練基于的數(shù)據(jù)也是有偏的,存在一定的噪聲 ( 比如網(wǎng)站數(shù)據(jù)中存在刷單、爬蟲、惡意攻擊、用戶誤點(diǎn)等各類非正常數(shù)據(jù) ),那學(xué)習(xí)出來的模型更加有偏了。
2. 分類
Badcase 背后是對(duì)于理想態(tài)的追求,從 badcase 中可以發(fā)現(xiàn):系統(tǒng) Bug、邏輯漏洞、業(yè)務(wù)迭代方向。我們先對(duì) badcase 問題進(jìn)行一個(gè)分類 ( 你也可以有自己的分類 ),然后集中討論其中若干問題。
① 功能性問題:系統(tǒng) bug
服務(wù)器日志打滿了,造成服務(wù)阻塞
運(yùn)營配置的鏈接過期了,用戶無法進(jìn)入活動(dòng)頁
② 體驗(yàn)性問題:
推薦系統(tǒng)中推薦買過的商品、推薦買過并且降價(jià)了的商品
搜索系統(tǒng)中搜了綠色襪子,但是紅色襪子排在了綠色襪子的前面
首頁猜你喜歡的推薦都是色情類內(nèi)容、各種標(biāo)題黨內(nèi)容
個(gè)性化推薦結(jié)果中都是同類型的內(nèi)容或者商品,沒有多樣性
③ 政治正確性問題:
各類政治反動(dòng)類的內(nèi)容
④ 不明確問題:
為什么這個(gè)商品/內(nèi)容排在第一個(gè)
為什么頻道的排布是這樣的
為什么運(yùn)營BD的高折扣商品流量不大
其次我們將上述四種問題進(jìn)行優(yōu)先級(jí)排定,毫無疑問,①和③類問題非常致命,需要馬上解決,這些問題往往決定了產(chǎn)品的生死。對(duì)于①類核心鏈路上的功能類的 badcase,隨著這幾年互聯(lián)網(wǎng)的發(fā)展沉淀了一套測(cè)試和監(jiān)控體系,③類問題目前內(nèi)容類產(chǎn)品遇到的比較多,解決方案是通過自然語言、圖像、流量分發(fā)算法與人力審核結(jié)合的方式解決。
而②類問題和④類問題,我們需要結(jié)合數(shù)據(jù)來做判斷和優(yōu)先級(jí)排定;對(duì)于②和④類的需求,構(gòu)建 "badcase 收集 -> case 分析與挖掘 -> 策略嘗試 -> 觀察線上核心指標(biāo)與 badcase 重新評(píng)估" 的閉環(huán)。
這里主要對(duì)②和④類問題進(jìn)行展開,本文接下來主要會(huì)對(duì)一些偏不明確類需求來做更多的展開與介紹。我們從 case 分析開始介紹,關(guān)于 case 的收集我們?cè)谧詈舐宰鼋榻B。
02
分析
單 case 分析能夠從若干個(gè)樣本點(diǎn)發(fā)現(xiàn)用戶體驗(yàn)問題,可以幫助算法工程師尋找迭代點(diǎn),是產(chǎn)品經(jīng)理進(jìn)行需求挖掘的手段,但需求的論證還是需要與覆蓋更全面的數(shù)據(jù)分析結(jié)合,特別是 case 背后問題的覆蓋率 ( 比如 case 是偶發(fā)還是大面積的 ) 和一些系統(tǒng)性的問題 ( 全局流量分配問題,商品/賣家成長性問題等 ),這些問題需要從全局維度進(jìn)行一些數(shù)據(jù)匯總和挖掘,才能發(fā)現(xiàn)一些問題。不要先說對(duì)錯(cuò),請(qǐng)先用數(shù)據(jù)分析度量一下,資源有限,根據(jù)分析結(jié)論確定優(yōu)先級(jí)。無法衡量就無法優(yōu)化,對(duì)于互聯(lián)網(wǎng)產(chǎn)品而言,系統(tǒng)的更新迭代必然需要建立一套度量衡,來把控整個(gè)流程優(yōu)化的方向。
1.?線上問題分析的前提
通過埋點(diǎn)盡量多的收集數(shù)據(jù),包括用戶行為數(shù)據(jù)、線上當(dāng)前環(huán)境數(shù)據(jù)、產(chǎn)品展現(xiàn)邏輯數(shù)據(jù) ( 比如推薦召回、排序、業(yè)務(wù)邏輯流程數(shù)據(jù) );這些數(shù)據(jù)盡量全,盡量覆蓋用戶全生命周期;沒有埋點(diǎn)和數(shù)據(jù)回流為前提的線上迭代,都是耍流氓。
2. 分析與挖掘
那怎么分析呢?我們來舉幾個(gè)例子,包括線上和離線2種,離線主要涉及模型迭代中的一些問題 ( 機(jī)器學(xué)習(xí)模型的優(yōu)化可以從特征分析、樣本分析、模型分析出發(fā) )。
線上:
①?老板提了一個(gè) case:
"剛剛猜你喜歡點(diǎn)擊了一個(gè)商品,下拉刷新推薦為什么沒有變,方案不是實(shí)時(shí)的嗎?"
我們先來這個(gè) badcase 發(fā)生時(shí)的真實(shí)情況,查看 badcase 問題的日志發(fā)現(xiàn),此次點(diǎn)擊進(jìn)入商品詳情頁只停留了0.5秒就馬上退出,進(jìn)而在首頁下拉刷新了頁面,并快速再次劃到了猜你喜歡。
我們?cè)賮砜磶讉€(gè)數(shù)據(jù):下拉刷新用戶占比、用戶各頁面停留時(shí)長、平均用戶偏好衰減情況:
首先我們看到有下拉刷新的用戶占比只在0.85%,其次用戶在商詳頁的停留時(shí)長集中在2-17秒之間,并且結(jié)合用戶行為衰減情況,在短時(shí)間周期內(nèi),用戶行為聚集程度較高。通過分析結(jié)合問題,第一個(gè)下拉刷新的問題,此功能是一個(gè)極少用的功能,更多人是下滑加載新的頁面時(shí)才會(huì)再次請(qǐng)求推薦接口;第二個(gè)問題點(diǎn)擊商品后,推薦過程中兼顧2秒內(nèi)完成實(shí)時(shí)日志回流并在下次翻頁請(qǐng)求時(shí)完成計(jì)算就可以做到一定程度上的符合,但是這個(gè) case 中商品詳情頁停留時(shí)長過短,整個(gè)推薦日志流還未返回。
當(dāng)然在成本可接受的范圍內(nèi),實(shí)時(shí)性的提升肯定可以帶來更多收益,只不過成本的上升與收益的增加是否能夠相對(duì)正向是需要考量的。當(dāng)然推薦策略的實(shí)時(shí)性還可以嫁接一定的分群策略,比如新用戶剛進(jìn)入推薦資源位,基本沒有行為,快速的正負(fù)行為 ( 有點(diǎn)擊和曝光無點(diǎn)擊 ) 反饋收集可以幫助推薦更精準(zhǔn),并且產(chǎn)品每天有大量新用戶來訪,這時(shí)候可以看看是否有必要加快日志的回流。
② 類目或者行業(yè)運(yùn)營提出了一個(gè) case:
"首頁猜你喜歡在鞋子類目分發(fā)到的流量占總流量的7%,而搜索卻有15%;搜索代表了主動(dòng)意圖,更能夠代表全站用戶的意圖,理應(yīng)猜你喜歡也是這樣的類目分布?"
因?yàn)閱栴}是類目在商品粒度的曝光量問題,我們可以先看幾個(gè)數(shù)據(jù),2個(gè)場(chǎng)景曝光的商品在商品畫像維度有啥區(qū)別嗎?對(duì)于有區(qū)分性的特征,展開進(jìn)行二次分析。
上圖的分值是通過曝光商品的曝光量與商品特征中的特征值加權(quán)平均后的值,描述曝光情況的。從上圖我們可以看到在評(píng)分和客單上搜索明顯低于猜你喜歡,但是 CVR 上明顯高于猜你喜歡。
那我們逐個(gè)再做分析,評(píng)分我們拉取了推薦和搜索的數(shù)據(jù),發(fā)現(xiàn)原來推薦場(chǎng)景3分以下的商品沒有曝光;恍然大悟,之前推薦場(chǎng)景為了提升產(chǎn)品調(diào)性,對(duì)于低評(píng)分的商品不做展示,所以天然推薦場(chǎng)景就少了一波商品;在看價(jià)格那欄,搜索3分以下的價(jià)格明顯較低,那也一定程度上說明了上面圖中搜索客單價(jià)低的一個(gè)點(diǎn);最后我們?cè)倏纯?CVR 猜你喜歡低的很多的原因,其實(shí)我們分析各個(gè)類目都會(huì)發(fā)現(xiàn)搜索要高很多,為什么呢?因?yàn)樗阉鲌?chǎng)景天然是用戶主動(dòng)意圖場(chǎng)景,而猜你喜歡場(chǎng)景意圖更弱,所以天然就是高的,所以 CVR 這個(gè)的差異是正常的。
我們還可以對(duì)其它維度再進(jìn)行拆解分析,但是你已經(jīng)發(fā)現(xiàn)了評(píng)分帶來的問題,這時(shí)候,可以在低評(píng)分是否展現(xiàn) ( 調(diào)性訴求 ) 上與類目流量上進(jìn)行權(quán)衡,也可以通過 AB 實(shí)驗(yàn)觀測(cè)相關(guān)指標(biāo)。
上面問題延伸出來還有一個(gè)問題是,用戶冷啟動(dòng)時(shí),冷啟動(dòng)的商品列表如何分配類目流量,可以參考下圖,通過點(diǎn)擊、訂單、gmv 貢獻(xiàn)率三者給予不同的權(quán)重,來進(jìn)行配比。
③ 我們?cè)賮砜匆粋€(gè) case:
"首頁猜你喜歡怎么類目這么單一,用戶沒法逛起來,多樣的話用戶長期留存會(huì)好。"
這里隱含了幾個(gè)問題:用戶可能喜歡看到多類目的猜你喜歡推薦列表,才會(huì)逛起來;用戶看到的類目多了,長期來說可以增加其粘性。這里我們可以通過撈取歷史的用戶日志,分析用戶的購物路徑下的商品瀏覽情況;其次我們可以通過歷史數(shù)據(jù)分析用戶瀏覽類目數(shù)多的情況下,未來回訪和留存是否好。
首先我們將全站用戶進(jìn)行區(qū)分和篩選,畫出了全局用戶在類目維度隨著瀏覽時(shí)間的衰減曲線,說明在2.5分鐘后用戶行為類目集中在原有類目的概率下降非常快。但是不管時(shí)間多短怎么樣,在二級(jí)類目平均的類目數(shù)都在2個(gè)以上的。我們?cè)偻ㄟ^一些業(yè)務(wù)規(guī)則,區(qū)分用戶為強(qiáng)弱意圖用戶,分析這兩類用戶,發(fā)現(xiàn)強(qiáng)意圖用戶在非常長的時(shí)間段內(nèi)都維持著較高的同類目瀏覽,而弱意圖用戶則出現(xiàn)了隨著時(shí)間快速衰減的情況。這時(shí)候可以在推薦或者搜索模塊架設(shè)意圖預(yù)測(cè)子模塊,對(duì)于強(qiáng)弱意圖明顯的用戶進(jìn)行不同類目的干預(yù),并且初期可以根據(jù)用戶分群選擇在每20個(gè)出 N 中選擇一定區(qū)間,配合負(fù)反饋/EE策略,進(jìn)行類目衰減來做類目坑位更替,做到多樣性。
第二個(gè)問題,我們可以通過分析,發(fā)現(xiàn)如果過少的類目瀏覽確實(shí)長期來說回訪不足,當(dāng)然這個(gè)可能只是相關(guān),不是因果關(guān)系,但是這個(gè)已經(jīng)可以說明在策略上是可以增加一定類目多樣性來保證回訪的。
稍微擴(kuò)展一下,還可以分析消費(fèi)折扣商品的用戶未來留存和回訪是否提升。這里想說的是當(dāng)你的排序模型無法優(yōu)化長期指標(biāo) ( LTV、回訪、留存 ) 時(shí),你可以考慮建立長期指標(biāo)和短期指標(biāo)的相關(guān)性,從而保證留存應(yīng)有的良好前提。做了 ( 保證曝光有類目多樣性 ) 不一定能提升長期留存,但是不做 ( 推薦結(jié)果讓用戶沒機(jī)會(huì)看到更多的類目 ) 肯定會(huì)讓長期留存變低。短期實(shí)驗(yàn)上線全量時(shí),還可以考慮切小流量做反向 AB 實(shí)驗(yàn),來做最終的長期指標(biāo)因果關(guān)系觀察。
離線:
排序模型迭代兩個(gè)模型架構(gòu)設(shè)計(jì)差異大,但是離線 AUC 接近,如何選取和優(yōu)化;或者深度學(xué)習(xí)模型排序結(jié)果有 badcase,如何找出其中不足的地方進(jìn)行優(yōu)化?
比如你有 NN 類模型和 GBDT 2 類模型,離線指標(biāo)差異小如何選取和融合呢?我們先看看數(shù)據(jù),取出兩類模型測(cè)試樣本集的預(yù)測(cè)結(jié)果與真實(shí)結(jié)果,分別對(duì)預(yù)測(cè)結(jié)果高度一致和非高度一致的取出分析 ( 分類模型可以取出錯(cuò)分樣本或者分類正確樣本 ),通過樣本背后的特征做分析,如下圖:
從上面的表格中,我們看到 GBDT 模型錯(cuò)分的樣本相對(duì) NN 模型在平均商品周曝光量上要高,用戶活躍度也相對(duì)較低;我們通過平均商品周曝光量這個(gè)維度,進(jìn)行切分,將全站周平均曝光量的25分位和75分位作為曝光量高低的切分點(diǎn),分別分析,出現(xiàn)下面的表格,以及右邊的圖表;最終在結(jié)合同樣樣本集上,兩個(gè)模型 AUC 接近,得出在現(xiàn)有的樣本、特征下 NN 模型在長尾商品上表現(xiàn)更好,GBDT 在頭部商品上表現(xiàn)更好;這樣可以嘗試在 NN 模型中加入一些先驗(yàn)統(tǒng)計(jì)類特征,或者在 GBDT 類模型中加入泛化類特征,或者可以做模型的融合。
這里還有幾個(gè)點(diǎn)需要注意,就是 GBDT 模型也可以和 LR 類模型進(jìn)行對(duì)比,模型迭代升級(jí)過程中也可以自己做對(duì)比,比如錯(cuò)分與正確的樣本也可以做對(duì)比分析,或者高錯(cuò)誤率的與低錯(cuò)誤率的進(jìn)行對(duì)比。
基于分析結(jié)果,我們可以對(duì)需求有大致地一個(gè)判斷,到底是否非常用戶體驗(yàn)的情況還是個(gè)例,還是非典型用戶的 YY,大致預(yù)估出迭代能夠帶來的影響。但數(shù)據(jù)不是總能描述全部的真實(shí)世界,或者不是所有的事情都是可以用數(shù)據(jù)描述的,這時(shí)候往往還需要結(jié)合其它方法,比如用戶訪談和調(diào)研,當(dāng)然這里面需要設(shè)計(jì)可靠的人群選取和調(diào)研內(nèi)容設(shè)計(jì),傾聽利益相關(guān)方的訴求,也可能可以從用戶口中了解到競(jìng)對(duì)的優(yōu)缺點(diǎn),進(jìn)行對(duì)比和迭代點(diǎn)挖掘。
03
如何處理與干預(yù)
1. 基礎(chǔ)和快速版本
先策略規(guī)則、然后通過分析找出漏洞發(fā)生的點(diǎn),進(jìn)而通過算法和模型的方式進(jìn)行彌補(bǔ)和修復(fù)。基礎(chǔ)、簡單快速類版本,往往希望在系統(tǒng)設(shè)計(jì)和方案選型的時(shí)候就要考慮到如何才能低成本、無其他副作用、快速準(zhǔn)確地修復(fù) badcase。
比如搜索引擎中通過有個(gè)搜索干預(yù)平臺(tái),某個(gè)搜索詞搜不到結(jié)果或者結(jié)果不準(zhǔn),在搜索的 QP ( query process ) 階段嵌入一個(gè)規(guī)則邏輯,對(duì)用戶 Query 在配置的詞庫中的查找,如果命中則直接將其映射為配置詞 ( 比如把搜索結(jié)果不準(zhǔn)的非常見詞通過規(guī)則映射為同義的常見詞 ),對(duì)前面各個(gè)模塊處理的結(jié)果能進(jìn)行干預(yù)以快速響應(yīng) badcase 處理。
比如首頁猜你喜歡不允許有黃圖、或者色情類內(nèi)容出現(xiàn),可以在類目 id、商品 id 維度進(jìn)行干預(yù),比如對(duì)召回模塊后,截?cái)嗪瓦^濾模塊對(duì)命中黑名單類目 id 和商品 id 的商品進(jìn)行過濾,或者通過敏感詞庫對(duì)召回候選內(nèi)容標(biāo)題進(jìn)行檢測(cè)是否包含,避免較明顯的 badcase,從而優(yōu)化用戶體驗(yàn)。
2. 復(fù)雜邏輯迭代
上述方式往往在問題可枚舉,或者可枚舉方案可以覆蓋80%-90%問題的時(shí)候被使用和長期維護(hù),這類方案簡單、快速地解決線上問題。但長期來說,不會(huì)配置大量的邏輯在策略中,可維護(hù)性差,可能解決了這個(gè) badcase 又引入了另一個(gè) badcase, 線上一堆修修補(bǔ)補(bǔ)的規(guī)則,未來問題的定位和調(diào)優(yōu)變成了比較困難的一件事。除了兜底策略以外,需要時(shí)常對(duì)規(guī)則收口分析,最終落地為通用的模塊。根據(jù)規(guī)則所覆蓋的邏輯進(jìn)行抽象,抽取出背后所代表的問題,從 badcase 中學(xué)習(xí)總結(jié)規(guī)律持續(xù)尋找更優(yōu)雅的方式解決。
通過將問題背后的遺漏點(diǎn)融入原有體系,比如對(duì)模型依賴的樣本進(jìn)行清洗和去噪,構(gòu)建相關(guān)特征納入到模型中,將 badcase 背后欠考慮的目標(biāo)融入原有目標(biāo),或者通過業(yè)務(wù)干預(yù)層的方案設(shè)計(jì)收口等,前三種都是在模型效果維度進(jìn)行干預(yù):特征,樣本,模型。
① 搜索中場(chǎng)景的相關(guān)問題
搜索中常見的一些相關(guān)性問題,可以歸納為詞匯的同義、多義問題 ( 蘋果 ),語言表達(dá)差異 ( 襪子男,男襪 )、輸入錯(cuò)誤 ( 背帶庫 )、泛語義/非常用詞召回 ( BTS->防彈少年團(tuán) ),無供給問題 ( 沒有匹配搜索詞的商品/內(nèi)容 )、誤召回問題 ( 相關(guān)性問題 )、展示問題 ( 真正意圖商品排序靠后 ) 等。語義/非常用詞召回可以考慮引入領(lǐng)域詞庫,訓(xùn)練的 NLP 模型 ( 比如 Embeding ),自動(dòng)建立非常見詞與常見詞的關(guān)系,并在用戶搜索詞調(diào)用搜索擴(kuò)展和歸一。
下面為搜索模塊圖,相關(guān)可參見:萬字長文解讀電商搜索——如何讓你買得又快又好
② 流量分發(fā)中的內(nèi)容不合規(guī) ( 黃圖、色情文字 )
內(nèi)容不合規(guī)問題 ( 黃圖、色情文章 ),可以通過圖像和 NLP 模型進(jìn)行識(shí)別,結(jié)合用戶的行為數(shù)據(jù)來做干預(yù)的方式來解決 ( 我們發(fā)現(xiàn)電商中色情類商品,往往點(diǎn)擊率高 ( 前25%分位 ),但是同樣的轉(zhuǎn)化率很低 ( 后25%分位 )),可以大大減小 badcase 的情況。
③ 多目標(biāo)/多階段問題
比如建模過程中希望兼顧多目標(biāo)時(shí),算法模型不是離線 AUC 提升就可以上了,你的建模是有偏的 ( 比如 point wise 的建模 ),樣本無法描述用戶真實(shí)的情況。推薦場(chǎng)景中往往需要考慮點(diǎn)擊率、轉(zhuǎn)化率、客單價(jià)、回訪、留存等。你需要做的事情是,模型的目標(biāo)如果沒有涉及 badcase 背后的東西,那模型只會(huì)考慮當(dāng)前指標(biāo),帶來 badcase。當(dāng)然第一步是需要給出指標(biāo)的度量方式,比如很多時(shí)候產(chǎn)品調(diào)性是一個(gè)常被提及的詞,那什么叫產(chǎn)品調(diào)性呢,如何度量是關(guān)鍵,如果可以度量,被模型納入進(jìn)行才能成為可能。
比如推薦中的多樣性問題,只通過 point wise 的 CTR 預(yù)估,很容易喪失多樣性。這時(shí)候你最后還有打散的功能,這個(gè)功能無法被 AUC 指標(biāo)所描述;這時(shí)候可以考慮引入 listwise 的排序策略,或多樣性干預(yù)及建模 ( DPP 或 MRR ) 方式。當(dāng)然多樣性也可能不是最后模型的問題,而是推薦的前置模塊出現(xiàn)了問題 ( 如下圖 ),導(dǎo)致如何修正目標(biāo)和數(shù)據(jù),都無法在排序階段拿到很好的多樣性。進(jìn)行充分的埋點(diǎn)完成日志收集,如果按類目和主題在排序漏斗上快速收縮,則需要優(yōu)化前置邏輯 ( 比如召回 ),否則無法在精排層完成多樣性的提升。
當(dāng)然這里需要設(shè)計(jì)一套合理的方案去嘗試評(píng)估前后依賴的模塊。文章可以參見:
https://engineering.linkedin.com/blog/2019/06/community-focused-feed-optimization
04
總結(jié)
細(xì)節(jié)決定成敗,從 badcase 出發(fā),充分分析過后可以帶來全新的世界。
1. 分析例行化
先找到核心指標(biāo)背后的若干可度量指標(biāo),并建立起與短期可觀測(cè)指標(biāo)的聯(lián)系 ( 因?yàn)橥總€(gè)產(chǎn)品的核心指標(biāo)都是長期的 )。比如用戶回訪、單次 session 內(nèi)轉(zhuǎn)化率與長期留存和 LTV 相關(guān)的指標(biāo),單次 session 內(nèi)轉(zhuǎn)化率好評(píng)估,但是用戶未來的回訪怎么在每次用戶來訪時(shí)度量?這個(gè)可以結(jié)合之前長短期指標(biāo)關(guān)系出出發(fā),通過分析相關(guān)性建立兩者的聯(lián)系,假設(shè)最終我們分析到用戶單次瀏覽的類目數(shù)和折扣商品數(shù)均會(huì)帶來用戶回訪的提升,那我們就可以從這兩個(gè)指標(biāo)出發(fā)構(gòu)建一個(gè)自動(dòng)報(bào)表提升。
① Badcase 提取器
通過 badcase 尋找優(yōu)化迭代點(diǎn),不失為一種好的方法,那如何收集和挖掘呢?如何找典型樣本點(diǎn)?
比如通過每天或者每周自動(dòng)化統(tǒng)計(jì)各個(gè)場(chǎng)景高流低轉(zhuǎn)的商品 ( 曝光量屬于類目25分位,轉(zhuǎn)化率屬于類目75分位的商品 ),通過商品A的id查找當(dāng)日的行為日志,隨機(jī)挑選若干用戶作為 case;將這些用戶在場(chǎng)景內(nèi)推薦、搜索、分發(fā)置頂策略的執(zhí)行過程日志撈取,并做分析,分析為什么這些商品能夠被召回和排序出來,可能是召回問題,可能是特征問題,可能是模型問題;找到一定規(guī)律后就可以針對(duì)性的優(yōu)化了。
上述問題還可以通過 badcase 找到對(duì)應(yīng)的人群,分析人群的效果。比如對(duì)上述商品A的所有曝光,我們拉取后根據(jù)用戶維度進(jìn)行聚合,發(fā)現(xiàn)都是這個(gè)商品相對(duì)于全局,被分發(fā)到了非常高比例的新用戶,那可以看看推薦邏輯中是否有跟新用戶相關(guān)的邏輯,有可能是你的冷啟動(dòng)列表問題;你也可能發(fā)現(xiàn)這個(gè)商品的近期轉(zhuǎn)化數(shù)據(jù)異常高 ( 背后可能是商家的刷單 ),導(dǎo)致流量在某個(gè)時(shí)間節(jié)點(diǎn)突然變多,那你就找到了如何對(duì)作弊商家和商品的處理方向;也可能是發(fā)現(xiàn)這些商品同屬于一個(gè)類目 ( 情趣用品 ),這類商品往往點(diǎn)擊率高,轉(zhuǎn)化低。
分群還可以發(fā)現(xiàn)新上策略的問題,比如 B 策略在 ABtest 中表現(xiàn)較好,很快就全量上線了,但是通過高流低轉(zhuǎn) badcase,發(fā)現(xiàn)原來 B 策略在人群1 ( 老用戶 ) 上效果翻倍,人群2 ( 新用戶 ) 上效果減半,但是最終效果只提升了25%;這時(shí)候你可能在人群2上沿用老策略,人群1上使用B策略,效果就又有了一個(gè)很高的提升。
搜索中則可以分析熱搜詞中低點(diǎn)擊率的 Query,同樣可以分類目來看??赡芸梢哉业絾栴},是在這個(gè) Query 下,QP 邏輯處理不好,導(dǎo)致召回商品不相關(guān),可以優(yōu)化 QP 問題;或者這個(gè) Query 下根本沒有相關(guān)的商品,比如用戶搜了 BTS ( 防彈少年團(tuán) ),你根本沒有相關(guān)的周邊產(chǎn)品,可以做類目和商品擴(kuò)展。還可以在搜索詞維度區(qū)分并分析,比如下圖中的一些維度。
上述溯源過程中,需要強(qiáng)調(diào)的是分析過程不要僅僅只關(guān)注全局均值,需要做細(xì)粒度拆分 ( 比如分類目 ),考慮分位數(shù)、眾數(shù),甚至考慮觀察方差情況,并且進(jìn)行對(duì)比分析。
2. 迭代閉環(huán)
業(yè)務(wù)方、算法、產(chǎn)品、老板反饋,收集 badcase 信息;通過數(shù)據(jù)分析,將分析結(jié)論通過規(guī)則或模塊快速應(yīng)用,并結(jié)合 ABtest 進(jìn)行觀測(cè);定期梳理規(guī)則、干預(yù)模塊,通過樣本、特征、模型融合,并結(jié)合 ABtest 進(jìn)行觀測(cè);分析跟蹤發(fā)現(xiàn)新一輪的問題。
3. 架構(gòu)
① 推薦、搜索預(yù)覽平臺(tái)
除了離線指標(biāo)的評(píng)估,往往算法工程師上線前,可以通過隨機(jī)挑選一些用戶請(qǐng)求即將上線 AB 的策略,通過用戶畫像及歷史行為來主觀觀測(cè)和評(píng)估效果,相當(dāng)于抽樣統(tǒng)計(jì)來反映整體情況的分析方法。先從用戶表中隨機(jī)抽取用戶,通過用戶 id 查詢用戶最近的行為 ( 包括搜索、點(diǎn)擊、加購、收藏、購買等行為 ),再請(qǐng)求待評(píng)估場(chǎng)景策略,最終使用用戶行為與策略結(jié)果進(jìn)行比對(duì),主觀判斷是否有不妥和直觀 bug 存在。比如下面的猜你喜歡推薦和商品詳情頁推薦:
② 系統(tǒng)拆解與日志上報(bào)
除了日常前后端系統(tǒng)的日志上報(bào)以外,推薦各模塊邏輯也需要盡量埋點(diǎn)記錄過程 ( 包括規(guī)則邏輯,記錄每個(gè)規(guī)則被觸發(fā)的條件和使用的頻率 ) 這個(gè)被使用的定義是:被命中,且結(jié)果和 ML 模型結(jié)果不同。規(guī)則從增加到過期下線的整個(gè)生存期都應(yīng)該被仔細(xì)管理。
快速定位問題的能力,抗風(fēng)險(xiǎn)能力。一條明顯的推薦的 badcase 是否能夠很快找出錯(cuò)誤的原因?是召回 i2i、c2i 等等 x2i 數(shù)據(jù)沒有 dump,還是特征數(shù)據(jù)有問題,還是排序模型更新的問題?這里關(guān)乎監(jiān)控和報(bào)警,能否從監(jiān)控和日志中快速定位原因?前端、后端、算法引擎、推薦策略 ( 召回、過濾、粗排、精排、業(yè)務(wù)邏輯等模塊 ) 各個(gè)模塊,如何協(xié)作才能使團(tuán)隊(duì)合作的成本最低而整體利益最大化?
總之,通過監(jiān)控做到早于老板發(fā)現(xiàn)問題,通過清洗的架構(gòu)快速修復(fù)問題。
4. Badcase 可以幫助你加深業(yè)務(wù)理解
Badcase 可以幫助理解用戶,通過親自體驗(yàn)、badcase 收集、分析挖掘、實(shí)驗(yàn)迭代反饋驗(yàn)證等環(huán)節(jié),構(gòu)建用戶模型;把產(chǎn)品用得比任何人都熟,典型用戶能夠熟練地說出重點(diǎn)標(biāo)簽,負(fù)責(zé)場(chǎng)景核心數(shù)據(jù)非常了解,并能注意到和總結(jié)出優(yōu)秀競(jìng)品的細(xì)節(jié)差異、和規(guī)律性內(nèi)容,再對(duì)場(chǎng)景進(jìn)行迭代的時(shí)候就更加順手了。至于其它常規(guī)工具和技能的學(xué)習(xí),那不是問題。
算法工程師需要多看數(shù)據(jù)、多做分析,養(yǎng)成 badcase review 的好習(xí)慣;判斷一個(gè)事情是否應(yīng)該投入,投入多少資源去做,在什么時(shí)候做,最終收益如何。
數(shù)據(jù)無法度量所有,由于原有機(jī)制的邏輯,非全面覆蓋用戶情況,所以存在實(shí)驗(yàn)的必要性。需要上線 A/B Testing 驗(yàn)證優(yōu)化效果,根據(jù)指標(biāo)評(píng)估項(xiàng)目收益,效果正向則擴(kuò)量,負(fù)向則分析調(diào)整或下線,并繼續(xù)迭代優(yōu)化。
很多算法工程師執(zhí)著于算法模型迭代,沒有抽離出來,對(duì)業(yè)務(wù)及迭代優(yōu)先級(jí)排定,反而會(huì)事倍功半。
今天的分享就到這里,謝謝大家。
下一期話題《如何平衡全局收益和單場(chǎng)景收益》
因?yàn)橛脩粜枨蠊潭?,往往單?chǎng)景會(huì)搶流量,造成1+1<2的情況,比如電商推薦中,往往各個(gè)場(chǎng)景實(shí)驗(yàn)迭代獨(dú)立,比如首頁猜你喜歡分了aab三組實(shí)驗(yàn)(分別1/3的流量),b組的推薦策略實(shí)驗(yàn)效果明顯好于另外2組aa實(shí)驗(yàn),然后你上線了,但是你去分析全局的實(shí)驗(yàn)結(jié)果,你發(fā)現(xiàn)其它場(chǎng)景(搜索、類目導(dǎo)航、商詳、頻道等)b組對(duì)應(yīng)的人群反而低于了aa組,什么原因呢?通過分析,我們發(fā)現(xiàn)當(dāng)b組推薦策略相對(duì)于aa組較優(yōu)時(shí),用戶很快會(huì)在首頁b策略成交,所以指標(biāo)提升了;但其實(shí)a組部分用戶雖然沒在首頁成交,但是他們通過搜索或者類目或者商詳相似推薦等場(chǎng)景最終也完成了成交。所以實(shí)際全局增益小于局部增益,并且在上述單場(chǎng)景AB中,往往各場(chǎng)景都會(huì)上線效果明顯但同質(zhì)化的策略,導(dǎo)致全局推薦結(jié)果接近,比如開頭手淘食用油的情況出現(xiàn)。
如何去兼顧全局增益呢?欲知詳情,請(qǐng)看下回分解。
知識(shí)星球
我開通了知識(shí)星球,我還給你們準(zhǔn)備了一張優(yōu)惠券(在文章最后,掃碼進(jìn)去就有「10元優(yōu)惠券」)。
1.星球主要會(huì)分享一些推薦、搜索、風(fēng)控等領(lǐng)域的一些算法、產(chǎn)品、技術(shù)相關(guān)的資料,其次也會(huì)有一些好的內(nèi)容分享,好的文章、好的書等。
2.在星球內(nèi)你也可以向我提問,后期會(huì)有幾個(gè)嘉賓加入,暫定為推薦算法&工程、圖像、NLP、供應(yīng)鏈等領(lǐng)域的專家,后期看大家的需求可能也會(huì)有產(chǎn)品和業(yè)務(wù)的嘉賓加入。
3.目前主題為推薦系統(tǒng)的細(xì)節(jié)(快速得分項(xiàng))、搜索引擎的細(xì)節(jié)、用戶畫像、業(yè)務(wù)sense、生態(tài)系統(tǒng)、優(yōu)質(zhì)資料、好習(xí)慣、好內(nèi)容、日常思考等。