推薦,非「黑盒」

推薦對於非技術同學而言更像是一個黑盒,越來越多產品都引入了推薦,而推薦又和流量緊緊掛鉤。此文獻給所有的運營同學。

這篇文章寫於1年前,希望可以系統又簡單地給業務、運營同學講清楚推薦的運轉邏輯、推薦可以做什麼、以及如何掌握推薦的流量密碼。

本文比較長,大約 7000 字,我把目錄放在前面,大家可以先看是否有感興趣的部分,再決定是否往下看,節約時間。

我對推薦好奇,可以通過這個文檔瞭解什麼?

簡單理解推薦

深入理解推薦

我是一個運營,我希望能掌握一些流量密碼

and,最後,你可能會關心的問題是怎麼給推薦提需求?

一、我對推薦好奇 1. 什麼是個性化推薦?

你打開今日頭條、抖音時最先看到一個頁面,一般這個頁面也會命名爲「推薦」。當然,我們不能因爲它叫推薦我們就把它視爲推薦。還有像淘寶這種,它叫做「猜你喜歡」。你會發現,你越看什麼,就越容易刷到什麼,這就是個性化推薦在起作用。

個性化推薦系統解決的是用戶和商品/內容中間的關聯關係,它是二者之間的橋樑。可能你會好奇,我有需求會用搜索,不會用推薦啊。你用過搜索,應該能感受到推薦和搜索的區別:搜索是人去找商品、推薦則是商品找人。推薦系統會根據你的興趣偏好,把你可能會感興趣的商品或內容推到你面前、提升。

哪裡有海量信息,哪裡就有推薦系統,我們每天最常用的APP都涉及到推薦功能:

2. 推薦系統解決什麼問題?

於用戶而言,推薦既要解決互聯網信息過載、用戶篩選信息乏力的問題,又要關注用戶沒有目標但想“隨便看看”的場景。

於平臺而言,推薦還需要減少馬太效應和長尾效應的影響,使商品/內容的利用率更高,盈利增長。簡單來說,推薦是爲了不佔用用戶太多時間的基礎上把商品賣給他/讓他消費內容。

推薦系統20世紀90年代就被提出來了,但真正進入大衆視野以及在各大互聯網公司中流行起來,還是最近幾年的事情。

隨着移動互聯網的發展,越來越多的信息開始在互聯網上傳播,產生了嚴重的信息過載。因此,如何從衆多信息中找到用戶感興趣的信息,這個便是推薦系統的價值。精準推薦解決了用戶痛點,提升了用戶體驗,最終便能留住用戶。

推薦系統本質上就是一個信息過濾系統,通常分爲:召回、排序、重排序這3個環節,每個環節逐層過濾,最終從海量的物料庫中篩選出幾十個用戶可能感興趣的物品推薦給用戶。

3. 推薦怎麼知道我對什麼感興趣?

推薦系統會收集你的歷史行爲數據,可能會有這些:

感覺推得不準可能有兩方面原因:一是推薦模型還不完善,二是你餵給推薦的數據不夠多。如果你想讓推薦推得更準,可以嘗試進行以下兩個操作:

注意,dislike 只能儘量過濾掉你不喜歡的內容,無法幫你找到喜歡的內容,所以如果想訓練你的推薦模型,儘量進行操作一 [主動表達興趣] 。

5. 推薦有目標嗎?

我們平臺推薦的目標是提升付費率,希望推得更準,用戶願意點、願意買。付費率是核心目標,拆解下來也會看點擊率、人均點擊數、人均瀏覽數等等,這些中間指標也能衡量推薦推的準不準。

爲什麼要拆中間指標?點擊率 = 你推給用戶他是否願意點,更能代表推的是否準;人均點擊數 = 點得越多,越能證明推薦猜你喜好猜得準。用戶進入商品詳情頁後面的事情推薦管不到,所以用付費率不能完全代表推的是否準。

6. 什麼是推薦能做的?

用更多的 [特徵] 來訓練模型,讓模型猜得更準。特徵值得是這個用戶的信息標籤,比如你的瀏覽信息、搜索信息、購買信息、分享信息、評價信息……這些都是特徵,是區別給你推什麼、給我推什麼的關鍵信息。

除此之外,還可以通過一些 [策略] 來滿足業務其他訴求,如通過 boost 規則給指定商品/內容曝光(關於如何使用 boost 規則見本文第20條)。

7. 什麼是推薦做不來的?

如果你在逛推薦時遇到一些問題,需要注意以下幾類問題不能依賴推薦解決:

1)畫風不好

畫風是一個主觀感知,用戶 A 覺得這個畫風不好(標題、文案、封面、音樂等使人不適),可能用戶 B 會覺得不錯,即便用戶 A 反饋了畫風不好的問題,也不意味着用戶 B 就不喜歡。

推薦不解決主觀感受,只解決“這個商品/內容本身你是否會感興趣,而不是這個畫風你是否會喜歡”。畫風問題依賴審覈和推薦審覈,同時我們也會通過 dislike 收集關於封面體驗不好的問題,並交給供給側去優化。

2)標題不好

不要試圖希望推薦推一些標題更好的商品/內容,因爲它不知道什麼是好標題。如果一個商品/內容的標題很差、但點擊、付費率很高,它在推薦裡就會很容易被推出。審覈和推薦審覈是非常重要的。

3)質量不好

解決不了有一些盜版內容、分銷課程(在多個機構上傳)、換多個標題都是同一門課/內容的問題。從推薦來看,如果本身點擊率很高,推薦通過用戶歷史行爲、預估這些課程都是用戶可能會感興趣的,都會展現,但對於用戶而言同一個商品/內容看到好多遍,體驗必然不好。這個還是需要審覈去解決。

二、深入理解推薦 1. 推薦是如何運作的?

用戶打開App,刷新首頁(下拉刷新 or 重啓app刷新),客戶端會請求服務端(數據),服務端會請求推薦(模型),這個時候推薦會返回幾條數據給服務端,服務端傳給客戶端,最終在用戶的手機上展示。

那麼,推薦是如何選擇內容的呢?爲什麼用戶最後看到的是這些?選擇-呈現過程是這樣的:

這個部分是我原來業務的推薦運轉流程,保留這個部分是爲了還原一個推薦應用場景,幫助大家理解後面的東西。

1)召回

運營同學建立《推薦課程審覈標準》,從所有課程中按照推薦標準,將符合標準的課程審覈召回至推薦池。即:在售課程池(全量)➝推薦課程池(部分),能被推薦的只有推薦課程池的課程。

2)粗排

推薦取了所有召回課程的歷史點擊率、轉化率、銷量數據,儘可能的模擬精排模型的打分,在所有召回的課程中選出得分靠前的幾百個視頻送給精排。粗排是大數據結果,也就是根據所有用戶產生的數據做了一個預估,最終呈現給其他用戶的也是大數據的結果。

比如ABCD都買A課,那麼XYZ來了我優先推A課、他的付費概率更高。粗排召回更適用於新用戶,因爲新用戶沒有任何行爲,推薦模型沒辦法預估他可能喜歡什麼類型的課程,這個時候就用大數據的預估(大家都買什麼、點什麼)來推給用戶。一句話解釋:你可以理解爲粗排相當於一個熱銷榜。

3)精排

對於已經有消費行爲的用戶(付費、點擊、收藏等),我們會把他的這些行爲特徵收集起來,去預估他可能還會對什麼課程感興趣。精排是在粗排的基礎上做的,粗排的作用是把得分靠前的課程遞給精排。一句話解釋:如果你有行爲,最終推給你的課就跟推給我的不一樣。

4)規則

在精排的基礎上應用幾個規則,比如

把這些規則應用完之後,會把排在前面的課程展現給用戶。

打散策略是爲了避免相同類型的課程扎堆,容易引發用戶不好的體驗:刷來刷去都是講學習音標的,平臺的內容會不會太少了些。

而 send 消重和 show 消重的區別是:

5)收集反饋

你點擊了短視頻剪輯課程,推薦認爲你對短視頻課程更感興趣,則後面短視頻剪輯的課程得分就更高,更容易優先展示給你。也就是你越用,推薦模型就可能預估得越精準,推給你的內容你越感興趣。

3. 爲什麼要有召回、粗排、精排?不能直接用精排嗎?

性能因素。直接用一個複雜的模型從大量數據中找幾十條內容速度會非常慢。所以先召回幾千條,再用粗排找到幾百條,再從幾百條裡找到幾十個推給用戶。

4. 推薦模型是如何優化的?

推薦模型的優化由兩部分驅動:模型本身訓練、調優需求,業務側新需求。

模型訓練調優主要是指性能優化、新增用戶特徵讓模型猜的更準,如模型結構的改進、增加更多用戶/商品特徵、擴大候選集(召回)、提高數據反饋時效(模型更及時的得到數據反饋);業務側也會有控制價格出現比例、給精選課程增加 boost 等優化體驗需求和運營需求。

但,無論是模型調優需求還是業務需求,每一次修改(稱作一個策略)都需要遵循下述流程:

推薦實驗是非常高頻的。並不是一個實驗/策略有了結果纔可以開啓新實驗,可以多個實驗並行、同時驗證多個策略,最終選擇效果更好的策略全量上線。比如我們兩個月就開了 30 多組實驗。

6. 爲什麼上了新策略沒有效果?

推薦是一個長週期的事情,不是一朝一夕就訓練好的。推薦相信的是長期有收益,且模型的養成是需要數據餵養的,喂得越多就推得越準。

所以一個新的推薦策略上線,肯定不會馬上有效果。就像我們要增肥,不是今天吃一頓明天就能胖了,身體需要吸收、持續吸收。

7. 爲什麼要做實驗不能直接全量?

經驗上,預期的效果和實際的效果可能會有非常大的差異。不做AB實驗直接上線,可能會帶來嚴重的影響。不是每一個策略都是正向的,推薦模型只是預估用戶更可能喜歡什麼,這不意味着用戶真的喜歡。所以新的策略上線後,有一定概率是負向的,也就是用戶覺得推得更不準了。

一般,實驗需要觀測 1-2 周來看數據是否穩定。如果有正向收益or損失不大,但相信長期有收益,即可上線。

8. 沒有收益的策略,一定不能上線嗎?

AB 實驗沒有顯著正向或略負向也可以上線。必須滿足以下大前提:

沒有流量的原因有很多。一般來說會有以下幾種可能,不僅僅是推薦的原因:

推薦會把商品/內容推薦給可能對它感興趣的用戶。一開始推的多,是因爲預估可能感興趣的用戶多,在推了1萬次之後,大家都不點擊,推薦就會認爲這部分用戶對這個商品/內容不感興趣、該商品/內容的得分就會越來越低(推薦排序就會靠後),那麼越往後就越推不出來了。

2. 爲什麼課程點擊率很高,曝光數不高?

點擊率高是因爲推得比較準,推過去後用戶更愛點。曝光數不高的可能性有很多:

判斷比較主觀,推薦看的不是一個人的主觀判斷,而是用戶的行爲選擇。

4. 推薦怎麼給新用戶做推薦?

冷啓動包括新用戶冷啓動和商品冷啓動。新用戶冷啓動是當一個用戶沒有任何行爲數據和輔助信息的情況下,如何給他做好推薦?商品的冷啓動即長尾問題——如何將新的物品快速推薦給可能對它感興趣的用戶?

新用戶是沒有歷史行爲數據的,那個性化推薦模型就無法對其產生作用,我們如何做推薦呢?

一種方法是新用戶主動選擇興趣偏好,讓用戶自己去選自己對什麼感興趣;另一種是先按照統計模型(Thompson 湯普森採樣 – 可以理解爲按照一個標準)去推。也就是如果從第一天開始,所有新用戶看到的都是一樣的,但同時我加快動作的反饋,也就是當用戶一旦有了點擊、收藏、付費等行爲,那麼下一次請求數據的時候,推薦就可以起作用了。

5. 怎麼給老師多一些曝光機會?

這個問題需要先理解另外兩個問題:爲什麼推薦不多給老師一些曝光機會?如何理解boost?

爲什麼不多給老師一些曝光機會?

推薦的目標是讓用戶滿意(買課的人),一般不會考慮老師的滿意度。當然,從平臺生態的角度來考慮,只有讓老師滿意,老師纔會傳更多的課到平臺,平臺纔有更多的課提供給用戶(推薦去推)。

所以,在讓用戶滿意的基礎上(推得更準),也會加一些規則去保證老師的利益。比如課程冷啓動規則(給一些新課固定的曝光資源)、運營精選boost(給一些優質課加權重)、已購老師boost(購買過的老師的課程加權重)。當然,後續可能也會有一些其他新策略,既讓推薦推的更準,也能給到老師一些資源保證。

如何理解 boost ?

從推薦視角來看,是反對 boost 的,因爲任何 boost 都是人的主觀意願:我認爲用戶對這個更感興趣、我希望用戶能看到這個內容。實際上,boost 並不能讓推薦推得更準,過多的 boost 干擾還可能影響推薦的策略。

那爲什麼我們還會加一些 boost 的策略呢?

如果運營側有給老師曝光的訴求、想用流量作爲運營老師的激勵點,或者爲了讓一些尾部但優質的課程有售出機會,需要在推薦模型的基礎上加干預規則,那麼可以把你的訴求提給產品,產品和推薦同學會在不傷害用戶體驗、推薦仍然有作用空間、且能實現運營目標的基礎上共同制定策略。

四、我怎麼給推薦提需求

可以以這樣的姿勢給推薦同學提需求:需求目的是什麼?想要解決什麼問題?預期效果是什麼?對用戶會有什麼影響?你要相信,推薦同學瞭解的推薦策略會比你多很多,把你的問題交給他,他們會選出更能幫你實現目標的策略。

❌ 錯誤的方式:我想在推薦強插某老師課程。

✅ 正確的方式:我們想要給優質課程更多的曝光機會,一方面是這些課程質量很好應該不會對用戶體驗造成損傷,另一方面也可以作爲老師運營的抓手,能激勵老師產生更多優質課程。

❌ 錯誤的方式:我想在模型里加個特徵。

✅ 正確的方式:我發現最近給我推的課程價格都偏高,調研了幾個用戶也是如此。如果我們持續推高於用戶消費水平的課程,付費率可能會越來越低。我們看下是通過推薦價格佔比、還是引入用戶歷史/最近一次消費金額,來減少大量推高單價的情況。

❌ 錯誤的方式:能不能給新課加 boost。

✅ 正確的方式:老師拉新團隊最近拉了很多新老師入駐,但是這些老師的課程都沒有曝光量,這影響了老師傳課的積極性,長期來看我們會做大量的老師拉新工作、如果新老師的新課沒有流量會影響整個平臺的老師生態。有沒有什麼方法,可以給這些老師/課程一些曝光的機會?

五、我爲什麼要寫這個

這篇文章不能說把推薦講得非常透徹、但也盡力從業務視角把一個技術邏輯講得更易懂。

我們是個平臺產品,既有C端用戶也有B端用戶。負責B端拓展的同學就希望流量有傾斜,運營同學對各項指標負責又希望基於他的目標做策略調整,產品考慮用戶體驗也會有體驗向的需求,不同角色的需求經常會相悖。而推薦本身也有自己的運轉邏輯,一定會有不能滿足、或者滿足的不好的地方。

想要取得好的溝通效果、達成目標,就要先了解對方的邏輯(推薦),以及如何利用資源(推薦機制),這篇文章原本是寫給我合作的運營同學,藉此也獻給所有會關注推薦和流量的運營夥伴。

專欄作家

燒包鹿,微信公衆號:燒包鹿(hishaobaolu),所有的文字都爲了傳遞如何思考,人人都是產品經理專欄作家。

本文原創發佈於人人都是產品經理。未經許可,禁止轉載

題圖來自 Unsplash,基於CC0協議

該文觀點僅代表作者本人,人人都是產品經理平臺僅提供信息存儲空間服務。