同過濾到冷啟動實戰(zhàn)指南)
推薦算法這兩年幾乎成了人工智能落地最熱鬧的賽道之一。做電商的靠它提轉(zhuǎn)化做內(nèi)容平臺的靠它拉時長做工具的靠它做個性化體驗。但不管應(yīng)用場景怎么變推薦算法的基本思想始終就那么幾類。我最初接觸推薦系統(tǒng)時最深的感受是這東西不像圖像識別或語音識別有一套統(tǒng)一的、清晰的評測標(biāo)尺推薦效果的好壞取決于你在什么場景下、給什么用戶、推什么內(nèi)容。所以理解推薦算法的基本思想本質(zhì)上是理解“我到底憑什么把某個東西推薦給某個人”。這篇文章寫給兩類人一類是剛?cè)胄?、?zhǔn)備做推薦系統(tǒng)相關(guān)項目的開發(fā)者另一類是產(chǎn)品經(jīng)理或業(yè)務(wù)方想弄明白推薦系統(tǒng)能做些什么、不能做什么。我會把推薦算法的基本思想拆開講清楚包括每種思想背后的假設(shè)、適用場景、優(yōu)缺點以及我實際落地過程中踩過的坑。沒有晦澀的公式推導(dǎo)但會給出足夠明確的思路框架和實操建議。1. 推薦系統(tǒng)到底在解決什么問題一個比“猜你喜歡”大得多的命題很多人一說到推薦算法第一反應(yīng)就是“猜你喜歡”好像推薦系統(tǒng)就是個自動猜用戶偏好的工具。實際做了推薦之后會發(fā)現(xiàn)這個理解太窄了推薦系統(tǒng)的核心使命是解決信息過載下的“需求匹配效率”問題。在互聯(lián)網(wǎng)早期信息量小靠搜索和分類目錄就能完成供需對接。那時候的用戶體驗是“人找貨”用戶明確知道自己要什么去搜索引擎里輸入關(guān)鍵詞系統(tǒng)把結(jié)果列出來。但后來內(nèi)容量爆炸了尤其是短視頻、直播、電商這種場景用戶在大部分時候其實并不清楚自己“此刻”想看到什么。這時候就需要“貨找人”推薦系統(tǒng)做的是把海量候選物品里用戶大概率會喜歡的那一小撮主動拿到用戶面前。這個“大概率會喜歡”就是核心。推薦算法的一切工作都是圍繞“如何估計用戶對物品的偏好程度”來展開。但難點在于用戶偏好不是一個靜態(tài)的、能被準(zhǔn)確記錄的數(shù)值它受時間、場景、心情、身邊環(huán)境的影響是一個動態(tài)變化的隱變量。你只能通過用戶的歷史行為、物品的屬性、以及其他用戶的行為模式去推斷這個隱變量。我經(jīng)常用一個比喻來給別人解釋推薦系統(tǒng)的處境你是一個新搬進(jìn)小區(qū)的中介手里掌握著周邊五百家餐廳的信息。你現(xiàn)在的任務(wù)是在一位只在小區(qū)住了一周、只吃過兩次外賣的住戶面前猜他今晚想吃什么。你能利用的信息只有他兩次點餐的時間、菜品、價格以及小區(qū)里其他住戶的口味偏好。這就是推薦系統(tǒng)面對的真實約束數(shù)據(jù)稀疏、信息不全、極具時效性但系統(tǒng)還得給出一個排序列表。理解了這個問題本質(zhì)再看各種推薦算法的基本思想就會清晰很多它們本質(zhì)上是不同的“猜用戶偏好”的策略只是用的信息源和假設(shè)不同罷了。推薦系統(tǒng)在業(yè)務(wù)層面的價值也不只是提升點擊率。它同時承擔(dān)著挖掘長尾內(nèi)容、降低用戶流失、提高轉(zhuǎn)化效率甚至塑造平臺心智的任務(wù)。不同業(yè)務(wù)目標(biāo)下你對“好推薦”的定義完全不同。內(nèi)容平臺更關(guān)注用戶瀏覽時長和留存電商平臺更關(guān)注GMV和復(fù)購率社交平臺更關(guān)注互動率。推薦算法的基本思想只是提供底層框架落地時你需要圍繞業(yè)務(wù)目標(biāo)做大量調(diào)整。2. 五類基礎(chǔ)推薦思想的拆解與對比推薦系統(tǒng)幾十年的發(fā)展產(chǎn)生了大量論文和算法但底層的推薦算法基本思想歸納起來就那么幾類協(xié)同過濾、基于內(nèi)容、基于關(guān)聯(lián)規(guī)則、基于統(tǒng)計人口屬性以及混合推薦。絕大多數(shù)工程場景里的推薦系統(tǒng)都能歸入其中一類或它們的組合。2.1 協(xié)同過濾用戶行為驅(qū)動的群體智慧協(xié)同過濾是推薦系統(tǒng)最經(jīng)典、應(yīng)用最廣泛的一類思想基本假設(shè)是歷史行為相似的用戶未來偏好也會相似或者一個用戶曾經(jīng)喜歡的物品相關(guān)的物品未來他也會喜歡。它通常被分成兩種實現(xiàn)路線。第一種是基于用戶的協(xié)同過濾核心動作是找“鄰居”。系統(tǒng)先把每個用戶或訪客和TA有過正反饋交互的物品映射成一個向量計算用戶之間的相似度然后找到與當(dāng)前用戶最相似的一批用戶把這批用戶喜歡過、但當(dāng)前用戶沒碰過的物品推薦出來。這個思路很直覺本質(zhì)上就是大眾點評里那套“和你口味相同的人都去過這家店你要不要試試”的邏輯。第二種是基于物品的協(xié)同過濾核心動作是找“相似物品”但它不是靠物品本身的內(nèi)容特征找相似而是靠“用戶行為”找相似。系統(tǒng)統(tǒng)計的是同一批用戶對哪些物品同時產(chǎn)生了交互如果大量用戶同時收藏了物品A和物品B那A和B就在該系統(tǒng)的語境下被視為“相似物品”?;谖锲返膮f(xié)同過濾在電商領(lǐng)域的應(yīng)用尤其成功因為商品集合相對穩(wěn)定用戶行為數(shù)據(jù)量大且行為意圖明確算出的相關(guān)關(guān)系往往比基于商品文本分類的相似性更精準(zhǔn)。這里有個容易被新人忽略的細(xì)節(jié)基于物品的協(xié)同過濾計算物品相似矩陣時對“用戶行為”的定義極其關(guān)鍵。用“點擊”和用“購買”算出來的相似矩陣幾乎兩回事。點擊行為噪聲大但覆蓋率高購買行為信號強但極端稀疏。我早期做電商推薦時用點擊數(shù)據(jù)給商品算相似性結(jié)果把奶粉和啤酒算成了強關(guān)聯(lián)——因為很多買奶粉的人是順手點一下啤酒但并沒有想收藏的關(guān)系。后來改用加權(quán)方案點擊、收藏、加購、購買分別給不同的權(quán)重相似度結(jié)果才變得合理可用。協(xié)同過濾的最大優(yōu)勢是它對物品內(nèi)容“一無所知”也能工作得很好。你不需要給物品打標(biāo)簽、做文本理解模型完全從行為數(shù)據(jù)中自動挖掘關(guān)系。但它的困境也很明顯冷啟動。新用戶沒有行為歷史新物品沒有交互記錄幾乎無法被推薦出去。這個問題后面我會專門展開講。2.2 基于內(nèi)容的推薦從物品屬性到用戶畫像的映射基于內(nèi)容的推薦走了另一條路它不關(guān)心“別人怎么看這個物品”而是關(guān)注這個物品本身的屬性以及用戶歷史上喜歡過什么屬性。基本思路是先為每個物品建立內(nèi)容特征向量。在文本場景下這是關(guān)鍵詞、主題、分類在電商場景下是類目、品牌、價格帶、材質(zhì)在視頻場景下是標(biāo)簽、時長、題材。然后基于用戶過往的正反饋交互歷史計算得到用戶的畫像其實就是一組特征權(quán)重最后計算新物品特征與用戶畫像之間的匹配得分按得分排序輸出推薦結(jié)果。這種方法的信息來源純粹是“用戶自己的歷史”和“物品自己的屬性”所以它不依賴其他用戶的行為數(shù)據(jù)新物品只要完成內(nèi)容特征入庫就能被推薦給匹配的用戶。這一點在新聞推薦、論文推薦等領(lǐng)域特別有意義因為新聞和論文這類物品時效性極強冷啟動是常態(tài)協(xié)同過濾根本等不及積累交互數(shù)據(jù)。但基于內(nèi)容的方法也有明顯的天花板推薦結(jié)果容易“窄化”。因為系統(tǒng)只會推薦和用戶歷史上喜歡過物品相似的物品用戶很難有意外驚喜也就是所謂的“信息繭房”。我之前做過一個音樂推薦項目基于內(nèi)容的算法給某用戶推了半年民謠用戶偶爾聽了一首電子音樂但由于系統(tǒng)畫像更新滯后接下來兩周依然全推民謠。后來我們做了一輪算法改造將“短期興趣漂移檢測”加入畫像更新策略才讓推薦列表能較快捕捉用戶的興趣切換。另外基于內(nèi)容的方法依賴高質(zhì)量的內(nèi)容特征。物品內(nèi)容特征的提取質(zhì)量直接決定推薦效果上限。早期做內(nèi)容標(biāo)簽時我們用人工標(biāo)注準(zhǔn)確率高但覆蓋率和實時性差后來換成自動抽取模型覆蓋率上來了但噪聲也多了。做特征工程時不建議追求“完美的單點特征”而應(yīng)該保證特征體系的健壯性——多來源、多粒度、可校驗。2.3 基于關(guān)聯(lián)規(guī)則的推薦把“常被一同購買”變成規(guī)則體系在數(shù)據(jù)挖掘早期關(guān)聯(lián)規(guī)則挖掘是非常熱門的方向最經(jīng)典的場景就是購物籃分析分析用戶一次購買了哪些東西挖掘物品之間的共現(xiàn)關(guān)系生成“買了A的人經(jīng)常買B”這類強規(guī)則規(guī)則。這類思想跟基于物品的協(xié)同過濾有相似之處區(qū)別在于關(guān)聯(lián)規(guī)則傾向于挖掘的是“包含關(guān)系”和“順序關(guān)系”而且它在業(yè)務(wù)上有極強的解釋性。實際工程中關(guān)聯(lián)規(guī)則推薦適合用在購物車加購階段或結(jié)算前最后一步。比如用戶把手機加入購物車后系統(tǒng)基于“手機手機殼”的高置信度規(guī)則立即推薦手機殼。這種推薦不需要復(fù)雜的模型推理直接用規(guī)則查詢匹配響應(yīng)速度極快且因為解釋性強產(chǎn)品上可以做成“搭配購”、“猜你喜歡”等文案用戶接受度高。但關(guān)聯(lián)規(guī)則推薦的適用面比較窄。它對數(shù)據(jù)形態(tài)有硬性要求需要有明確的“交易集合”來定義物品的共現(xiàn)比如一筆訂單、一次結(jié)賬。在純?yōu)g覽場景用戶今天看了手機、明天看了耳機很難定義“共現(xiàn)”。此外規(guī)則挖掘容易產(chǎn)生高頻物品的虛假關(guān)聯(lián)比如熱門商品會跟幾乎所有商品產(chǎn)生強關(guān)聯(lián)這會在落地時影響推薦結(jié)果的多樣性。因此用關(guān)聯(lián)規(guī)則時要注意做“受歡迎度修正”不應(yīng)當(dāng)讓推薦結(jié)果持續(xù)扎堆在暢銷爆款上。2.4 基于人口統(tǒng)計學(xué)特征的推薦最樸素也最穩(wěn)的兜底方案當(dāng)系統(tǒng)的行為數(shù)據(jù)極度稀疏時基于人口統(tǒng)計學(xué)特征做推薦往往是最先能跑起來的方案。它按年齡段、性別、職業(yè)、地域、設(shè)備等屬性將用戶分群給同一族群內(nèi)的用戶推薦相同的物品。背后的假設(shè)是同一社會屬性人群具有相近的消費或內(nèi)容偏好。我在一個教育類App項目里就采用過這個思想做第一版“推薦”。當(dāng)時新用戶量很大但行為數(shù)據(jù)很少冷啟動必須靠注冊時收集的人口屬性。上線后效果雖然粗糙——很多用戶在評論區(qū)反饋“系統(tǒng)推的東西太傻”——但業(yè)務(wù)方仍然滿意因為點擊率比純熱門排行高了接近50%。這就是這類推薦的價值粗糙但有效能快速讓系統(tǒng)從零到一跑起來。這類推薦的局限是顆粒度太粗。同樣是25歲北京男性程序員喜歡搖滾樂和喜歡古典樂的可能同時存在僅靠人口屬性無法區(qū)分。所以它通常只作為冷啟動的兜底策略或混合推薦中的一個權(quán)重因子不能作為長期主推方案。2.5 混合推薦算法組合不是堆砌而是各取所長實際工業(yè)界的推薦系統(tǒng)極少只用單一算法。因為不同算法的推薦算法基本思想各有側(cè)重單獨使用總有死角協(xié)同過濾有冷啟動問題基于內(nèi)容容易窄化關(guān)聯(lián)規(guī)則受限于共現(xiàn)數(shù)據(jù)人口屬性太粗?;旌贤扑]就是把多種算法組合起來在一個框架內(nèi)統(tǒng)一輸出最終推薦列表。組合方式有幾種常見的套路。一是加權(quán)式多個算法各自給物品打分最終得分是各分?jǐn)?shù)加權(quán)求和。權(quán)重可以固定也可以跟隨場景動態(tài)調(diào)整比如用戶新注冊時期內(nèi)容算法的權(quán)重調(diào)高用戶行為數(shù)據(jù)充足后協(xié)同過濾的權(quán)重調(diào)高。二是切換式根據(jù)場景條件選擇最合適的算法比如當(dāng)物品是重度新聞類內(nèi)容時直接切基于內(nèi)容的當(dāng)品類是標(biāo)品商品時切協(xié)同過濾。三是瀑布式先由一個粗排算法從海量物品里篩出一個精排候選集再由另一個精細(xì)模型對候選集做排序典型的粗排精排架構(gòu)。四是元級組合將一個算法的輸出特征作為另一個算法的輸入這種在深度學(xué)習(xí)時代尤其常見比如用向量召回結(jié)果作為排序模型的特征輸入。我在實踐中比較推薦“瀑布式加權(quán)式”的組合因為這種結(jié)構(gòu)最可解釋、最容易分模塊調(diào)優(yōu)。先說召回協(xié)同過濾、內(nèi)容匹配、關(guān)聯(lián)規(guī)則、熱門兜底分別各自召回一批候選做合并去重。再說排序用一個統(tǒng)一的排序模型邏輯回歸、GBDT、深度排序模型均可對候選集做打分排序。最后做業(yè)務(wù)重排過濾掉用戶已購內(nèi)容、屏蔽廣告內(nèi)容、插入運營強制內(nèi)容等。這樣整個推薦系統(tǒng)的可診斷性和迭代速度都遠(yuǎn)勝于單模型端到端方案。3. 推薦效果落地必須面對的四個核心難題懂得了一些算法、能跑通流程只能說你跨過了門檻。真正做推薦系統(tǒng)你會發(fā)現(xiàn)大部分精力都不是花在調(diào)模型上而是在解決下面這四個長期存在的工程和算法難題。3.1 冷啟動沒有歷史行為的用戶和物品該怎么推冷啟動是推薦系統(tǒng)場景里最經(jīng)典的問題幾乎沒有之一。它分為三個子問題。第一新用戶冷啟動用戶剛剛注冊沒有任何行為歷史。此時協(xié)同過濾完全失效基于內(nèi)容的算法也沒有用戶畫像可用。我見過比較有效的方式是結(jié)合“注冊信息即時交互反饋熱門商品修正”。注冊信息包括年齡、性別、職業(yè)、興趣標(biāo)簽等系統(tǒng)先按統(tǒng)計屬性推送第一屏內(nèi)容用戶隨即產(chǎn)生幾次點擊或跳過行為實時信號立刻被加載到畫像中同時混入一定比例的泛熱門內(nèi)容做探索防止首屏內(nèi)容過于單一。第二新物品冷啟動新物品剛?cè)霂鞗]有用戶交互。這條在協(xié)同過濾視角下很致命——一個沒有行為記錄的物品計算不出跟任何物品的相似度。解決辦法通常是給新物品打上高質(zhì)量的內(nèi)容標(biāo)簽讓基于內(nèi)容的算法能把它匹配給潛在感興趣的用戶或者在策略層給新物品一段時間內(nèi)的“探索加權(quán)”讓它們有機會出現(xiàn)在用戶面前獲取初始反饋數(shù)據(jù)。第三新系統(tǒng)冷啟動從零開始搭建推薦系統(tǒng)的首周倉庫里既沒有足量用戶行為也沒有物品內(nèi)容標(biāo)簽。我的建議是分三步走第一步用基于人口統(tǒng)計學(xué)特征的熱門榜兜底第二步上線內(nèi)容標(biāo)簽系統(tǒng)這部分只覆蓋核心品類的頭部物品就能帶來效果提升第三步開始積累用戶行為等到單品類行為交互量超過百萬級時再上協(xié)同過濾和排序模型。3.2 流行度偏差與長尾挖掘推薦系統(tǒng)天然有“馬太效應(yīng)”。越熱門的物品被推薦的頻率越高收集到的行為數(shù)據(jù)越多然后越容易被推薦。這個循環(huán)會讓推薦結(jié)果嚴(yán)重集中到少數(shù)爆款上用戶的個性化體驗名存實亡變成另類的熱門榜。我在電商項目中遇到過如此一幕排序模型上線一個月后推薦列表里前五十名基本被暢銷Top 100霸占很多小而美的長尾商品永遠(yuǎn)沉底。后期復(fù)盤時發(fā)現(xiàn)不僅是排序模型學(xué)出了“推薦熱門物品”的捷徑召回階段也出了問題——熱門物品因為行為數(shù)據(jù)豐富在向量召回和協(xié)同過濾召回中得分天然偏高。長尾挖掘的核心在于調(diào)整候選集合的采樣分布和對多樣性的約束。工程上常用的手段包括召回階段按類目和價格帶做強制配額避免單一維度壟斷排序模型的訓(xùn)練樣本里對熱門物品降采樣讓模型學(xué)會“在長尾物品里分辨好壞”排序后的重排階段引入MMR最大邊際相關(guān)性等多樣性算法讓推薦列表同時兼顧精準(zhǔn)度和內(nèi)容多樣性。不要指望單靠模型就能自動解決流行度偏差策略層的干預(yù)往往是必不可少的。3.3 精準(zhǔn)度與多樣性的權(quán)衡推薦不只是越準(zhǔn)越好很多剛做推薦的同學(xué)會陷入一個誤區(qū)認(rèn)為指標(biāo)越高推薦越好。準(zhǔn)確率、點擊率做得越高推薦效果真的就越好嗎不一定。如果推薦結(jié)果永遠(yuǎn)是用戶最可能點擊的那三樣?xùn)|西短期內(nèi)指標(biāo)好看長期來看用戶會覺得內(nèi)容太單調(diào)逐漸流失。一個真實的例子參考某視頻平臺的推薦團(tuán)隊做過一次實驗將推薦列表中的相似度閾值調(diào)低允許更多“弱相關(guān)”內(nèi)容混入結(jié)果。離線評估時準(zhǔn)確率下降了約6%但線上用戶人均使用時長不降反升次周留存提升了2%。這說明用戶對“多樣性”的隱性需求往往被低估了。所謂精準(zhǔn)度和多樣性的權(quán)衡最終要比的是“體驗的置信度”。推薦系統(tǒng)的目標(biāo)不是預(yù)測最準(zhǔn)而是讓用戶持續(xù)發(fā)現(xiàn)更好的內(nèi)容。實際操作中我會給推薦列表預(yù)留一個“探索位”比如每屏1-2條內(nèi)容不按模型得分排序而是從探索池新內(nèi)容、長尾內(nèi)容、不同類目內(nèi)容里抽樣展示。這樣既保證了主列表的精準(zhǔn)度又給系統(tǒng)留出了探索用戶新興趣的空間。3.4 用戶興趣漂移昨天的推薦不是今天的推薦用戶的興趣從來不是靜止的。一個平時只看紀(jì)錄片的人可能因為朋友分享開始刷起了萌寵短視頻一個在備婚的用戶婚禮結(jié)束后的第30天大概率就不會再看婚紗廣告了。推薦系統(tǒng)如果對用戶最近的行為不敏感就會持續(xù)消費歷史畫像給用戶推一批早已不合時宜的內(nèi)容。解決興趣漂移的兩個基本策略一是時間衰減給用戶行為樣本按時間做加權(quán)越近的行為權(quán)重越大越遠(yuǎn)的行為權(quán)重越小二是窗口化在計算用戶畫像時只使用最近7天或30天的數(shù)據(jù)超過窗口的舊行為不再參與計算。我在音樂推薦場景里做過對比加上時間衰減后新歌的曝光比例提升了約35%說明畫像確實能更及時地捕捉興趣遷移。此外對于短期會話型場景比如短視頻的連續(xù)滑動我們還可以用“上下文狀態(tài)”來增強推薦用戶當(dāng)前會話里最近瀏覽的N條內(nèi)容是什么、停留時長的變化趨勢如何這些短期信號往往比長期畫像更能反映用戶此刻的意圖。4. 從想法到落地推薦系統(tǒng)評估指標(biāo)與實操路徑聊完了推薦算法基本思想接下來聊聊我對落地和評估的理解。有不少項目在實驗室里指標(biāo)很漂亮一到線上就崩原因就是對推薦效果的評估體系理解得不夠全面。4.1 離線評估指標(biāo)不能只看準(zhǔn)確率離線評估時最直接的思路是拿歷史數(shù)據(jù)切出訓(xùn)練集和測試集模型在測試集上算預(yù)測準(zhǔn)確度。但推薦場景的特殊性在于你預(yù)測的對象是“用戶會交互哪些物品”是一個排序問題而不是簡單的分類問題。長期實踐中我會同時盯幾組指標(biāo)準(zhǔn)確率與召回率在Top-K推薦列表里有多少是用戶真正交互過的。這只是最基礎(chǔ)的參考單獨使用時容易誤導(dǎo)尤其在數(shù)據(jù)稀疏時指標(biāo)會虛高。覆蓋率推薦系統(tǒng)能夠推薦出去的物品占總物品的比例。覆蓋率過低說明推薦集中在少量頭部長尾挖掘能力差。多樣性/新穎性推薦列表里物品之間的相異程度以及推薦結(jié)果中用戶未看過物品的比例。NDCG歸一化折損累計增益衡量推薦排序質(zhì)量給排在前面的正確推薦更高權(quán)重。核心要點是離線評估只能驗證模型的相對優(yōu)劣不能代表線上真實效果。原因很簡單離線評估用的是歷史行為而線上推薦會影響用戶行為這之間存在反饋循環(huán)。你無法用離線的靜態(tài)數(shù)據(jù)模擬“推薦了A后用戶決定不去看B”這種動態(tài)變化。4.2 在線效果驗證A/B測試是唯一的最終準(zhǔn)繩真正判斷推薦算法是否有效最終要依賴于線上A/B測試。把流量分成幾組一組用新算法一組用舊算法比較業(yè)務(wù)核心指標(biāo)點擊率、人均時長、轉(zhuǎn)化率、復(fù)購率等的變化。做A/B測試最需要注意的坑是只盯著單一指標(biāo)結(jié)果被“夾帶私貨”。比如你把推薦列表改得更長、塞進(jìn)更多位置點擊率可能上升看起來新算法贏了但實際是因為曝光位置多了。這時需要同時監(jiān)測探索位點擊率、人均推薦消費深度、負(fù)反饋率、次日留存等多個指標(biāo)。另外A/B測試的時間窗口要拉夠。推薦系統(tǒng)有很強的“訓(xùn)練-服務(wù)閉環(huán)”新算法上線后模型還在持續(xù)利用新數(shù)據(jù)做更新短期一兩天看不出最終效果通常建議觀察至少7天。如果業(yè)務(wù)周期有明顯的周末效應(yīng)還需要保證實驗組和對照組在時間上對齊比較同一星期幾的數(shù)據(jù)。4.3 我推薦的最小可行落地路徑如果你是第一次搭建推薦系統(tǒng)我建議不要一上來就引深度神經(jīng)網(wǎng)絡(luò)做端到端模型。最小可行路徑是先做規(guī)則和熱門榜再做基于內(nèi)容的相似推薦接著上協(xié)同過濾召回最后再考慮做重排向量模型和精排模型。每一步都以離線評估在線A/B測試作為驗證門檻保證每一次迭代都有明確的效果增幅。我過去帶過一個模擬項目X功能是給垂直社區(qū)做內(nèi)容流推薦。啟動第一周只上線了按分類加權(quán)的熱門榜業(yè)務(wù)點擊率有了但也只算及格第二周加入基于內(nèi)容的標(biāo)簽匹配點擊率和時長都有提升到第三周引入基于用戶協(xié)同過濾人均曝光到點擊的轉(zhuǎn)化率提高了接近兩成。這個過程中沒有用任何復(fù)雜的模型框架就靠理解推薦算法基本思想和工程細(xì)節(jié)效果已經(jīng)相當(dāng)可觀。5. 我踩過的那些坑和總結(jié)的經(jīng)驗做推薦系統(tǒng)的過程中我踩過的坑不少每一個都讓我對推薦算法基本思想的理解更務(wù)實。挑幾個印象最深的寫下來希望能幫后人避坑。第一個坑是把排序模型優(yōu)化成了“熱門度模型”。具體表現(xiàn)在模型訓(xùn)練數(shù)據(jù)里的正樣本大多數(shù)是熱門物品負(fù)樣本大多是長尾物品。模型只要學(xué)到“推薦熱門物品”這條捷徑離線指標(biāo)還不差線上就是災(zāi)難。這個問題的解法是重排階段的流行度控制以及訓(xùn)練樣本的降偏采樣。我后來在排序模型的特征里強制加入“物品熱度”這一列并在訓(xùn)練時單獨做樣本加權(quán)才把模型的真實泛化能力逼出來。第二個坑是對用戶反饋定義得太單薄。誤以為用戶“沒點”就是“不喜歡”忽略了大量曝光但未被點擊的樣本里其實有很多是根本沒看見。后來我們把負(fù)反饋的定義從“曝光未點擊”改進(jìn)為“露出超過一定時長且未點擊”的精排反饋并引入“用戶主動點了不感興趣”這類明確負(fù)信號模型效果提升明顯。第三個坑是推薦結(jié)果解釋性被忽視。協(xié)同過濾和深度模型給出來的推薦很難直接解釋“為什么推這個”。用戶端如果完全不理解推薦理由很容易產(chǎn)生不信任感甚至懷疑平臺偷窺隱私。后來我們在產(chǎn)品層給每個推薦卡片加上了“相似推薦理由”——比如“因為你收藏了A所以推薦B”解釋性帶動的點擊提升超過了10%。這讓我明白推薦不只是算法問題也是用戶體驗問題。再分享一個并行經(jīng)驗推薦系統(tǒng)一定要做模型之外的行為日志采集設(shè)計。你用來訓(xùn)練和評估模型的能力上限由日志字段決定。搭建數(shù)據(jù)管道時就要考慮這個需求日志里除了用戶ID、物品ID、行為時間還需要場景ID、曝光位置、來源模塊等上下文信息。這些字段在離線驗證時看起來沒什么用但做在線A/B分析和實驗歸因時缺了它們簡直寸步難行。最后補充一點工具上的體會工程上不必迷信最前沿的大模型框架。在一個中小型限定的推薦場景里成熟的I2I協(xié)同過濾加一個調(diào)好參數(shù)的GBDT排序模型往往就能達(dá)到上線線目標(biāo)。先把基礎(chǔ)思想吃透把數(shù)據(jù)處理和指標(biāo)體系做扎實再去考慮復(fù)雜的深度模型才是更穩(wěn)妥的路線。推薦系統(tǒng)的上限是模型決定的但它的下限是數(shù)據(jù)質(zhì)量和工程水平?jīng)Q定的。6. 經(jīng)驗沉淀推薦系統(tǒng)誕生的完整環(huán)節(jié)回顧文章到這里主要思想都覆蓋了。我再用盡量簡短的方式回顧一下做推薦系統(tǒng)的完整脈絡(luò)方便你回頭自查。推薦系統(tǒng)的輸入端永遠(yuǎn)是業(yè)務(wù)目標(biāo)和約束條件。你在做推薦系統(tǒng)之前最先想清楚的應(yīng)該是我服務(wù)的用戶是誰物品是什么樣的業(yè)務(wù)核心指標(biāo)是什么這些決定了你會選擇哪種推薦算法基本思想作為主線選擇什么作為輔助策略。接下來是數(shù)據(jù)處理和畫像建設(shè)。用戶畫像、物品畫像、行為日志質(zhì)量決定了推薦系統(tǒng)的地基。這部分工作有時候枯燥但值得花時間。然后才是推薦算法的主體工程。在上面我們討論的幾類基礎(chǔ)思想中選定適合的作為召回策略構(gòu)建候選物品池再設(shè)計一個排序模型對候選集打分排序最后通過重排規(guī)則完成業(yè)務(wù)約束和用戶體感優(yōu)化。這就是工業(yè)界最常見的推薦系統(tǒng)主流程。最后評估和迭代是貫穿始終的環(huán)節(jié)。每上線一個策略都應(yīng)該配套對應(yīng)的離線評估和在線A/B實驗。把每一次迭代當(dāng)作一次“有假設(shè)、有驗證、有總結(jié)”的實驗來對待你的推薦系統(tǒng)會越走越穩(wěn)。我個人的體會是只要把推薦算法的基礎(chǔ)思想理解扎實、對用戶行為保持敬畏心態(tài)、在工程落地上不做虛功推薦系統(tǒng)的效果是不會差的。它不需要你有什么天才般的靈感需要的只是耐心、嚴(yán)謹(jǐn)和持續(xù)用數(shù)據(jù)做決策的習(xí)慣。這一點無論在哪個行業(yè)做推薦都一樣。