一篇文章是如何被推薦到你眼前的?
筆者以獨特的角度入手,以一篇文章自白的角度講述了個性化推薦的功能邏輯。
“hi,我是魏無羨,我出生后被送到一個內(nèi)容庫,在這里遇到了很多師兄弟,在一個個黑盒子里,我們身上被打上了N個不同的標(biāo)簽來表明我們的出生地、武功高低、門派風(fēng)格等等,經(jīng)過各種試煉檢驗,有些師兄弟被淘汰了,而我順利通過了審核進(jìn)入下發(fā)環(huán)節(jié)。我依靠著一身武藝和好的身世背景,順利進(jìn)入尖子班,并在每一階梯流量中脫穎而出。”
現(xiàn)代人每天都在接觸個性化推薦,例如常刷的今日頭條、騰訊新聞、抖音等APP。
個性化推薦是特定場景下人和信息更有效率的連接,粗顆粒度理解就是斷物識人:左邊是內(nèi)容(斷物),右邊是用戶(識人),中間通過推薦引擎鏈接兩者,追求的是一種高效連接。
在開篇的自白里,高質(zhì)量下發(fā)的核心:識別藍(lán)忘機(jī)愛的是魏無羨,并且把魏無羨推給他。
魏無羨:我經(jīng)歷的各種“黑盒子”——內(nèi)容庫
各式各樣的黑盒子,都是為了建立人機(jī)結(jié)合的用戶喜愛的高質(zhì)量內(nèi)容生成系統(tǒng),這個實時、高效的系統(tǒng)需要具備哪些特征?
- 能夠持續(xù)發(fā)掘“高質(zhì)量”內(nèi)容;
- 能夠持續(xù)發(fā)掘用戶興趣;
- 能夠給用戶發(fā)送感興趣的“高質(zhì)量”內(nèi)容。
個性化推薦從一個好的內(nèi)容庫開始(第一個黑盒子),目的是為個性化推薦提供精準(zhǔn)的內(nèi)容數(shù)據(jù)基礎(chǔ),為了創(chuàng)造一個好的內(nèi)容庫,要做哪些工作?
總地來說,是把不能分發(fā)或影響體驗的內(nèi)容剔除:
- 硬質(zhì)量過濾:如排版錯誤、言之無物等
- 低俗色情過濾
- 敏感惡心過濾
- 高度一致過濾
- 政審安全過濾
- 推薦優(yōu)化:標(biāo)題、圖片、正文等優(yōu)化
- 其他
除了部分運營內(nèi)容外,推出的內(nèi)容基本來自內(nèi)容庫,內(nèi)容的質(zhì)量奠定了個性化推薦的基調(diào)。內(nèi)容庫里的內(nèi)容根據(jù)一定規(guī)則形成內(nèi)容候選,機(jī)器就開始挑內(nèi)容進(jìn)行后續(xù)的個性化推薦。
魏無羨奔向的藍(lán)忘機(jī)長啥樣? ——用戶畫像
如果你介紹一位朋友,在不同的場合,你也許會有不同的介紹方法。
- 在公司,你會介紹他是一位牛逼的開發(fā)大大;
- 在球場,你會介紹他是北大的流川楓;
- 在相親局,你會介紹他是你“兩眼淚汪汪”的同鄉(xiāng)。
正是因為事物具有多面性和復(fù)雜性的特點,不是一兩個詞就能概括全的。標(biāo)簽實質(zhì)上是我們對多維事物的降維理解,抽象出事物更具有表意性、更為顯著的特點,所以需要有針對性的投射,以換取信息匹配效率最大化。
用戶畫像根據(jù)用戶自然屬性、社會屬性、閱讀習(xí)慣和線上行為等信息抽象出的一個標(biāo)簽化的用戶模型,常用于用戶數(shù)據(jù)化、個性化推薦、各大業(yè)務(wù)支撐等等。簡單概括為“他是誰”,“他喜歡什么”,為個性化推薦提供豐富而精準(zhǔn)的用戶畫像。
資訊推薦的用戶畫像一般會分為長期畫像和短期畫像,前者為離線處理,后者為在線處理。
- 長期畫像:是一段時間內(nèi)的行為+用戶自主選擇或填寫的畫像+外部渠道補(bǔ)充的畫像等,相對穩(wěn)定。
- 短期畫像:是近幾天的行為(例如近7天內(nèi)點擊的100條item),受時間衰減影響較大。
- 綜合畫像:是以上兩者融合。
用戶畫像的建立更像一門統(tǒng)計學(xué),在處理數(shù)據(jù)的時候有些關(guān)注點:
- 噪音處理:如熱門事件會有惡意噪聲
- 時間衰減:自建短期模型,新動作提高權(quán)重
- 反向懲罰:如曝光未點擊進(jìn)行懲罰
- 歸一化:使計算結(jié)果具有可比性
- 其他
除了用戶在APP的閱讀行為,完善用戶畫像還有哪些路徑?
- 外部渠道數(shù)據(jù)(渠道、喚醒物料、矩陣畫像、APPlist等);
- 借助產(chǎn)品設(shè)計(如新手引導(dǎo)的興趣預(yù)選);
- 借助運營活動(如支付寶活動收集好友關(guān)系)。
畫像優(yōu)化如何評估?
以下指標(biāo)可供參考:
- 畫像覆蓋率、人均畫像個數(shù);
- 畫像準(zhǔn)確率:離線人工評估->在線abtest(點擊率、時長等指標(biāo))。
關(guān)于用戶畫像,還有一點需要了解:不是有了用戶畫像,便能驅(qū)動和提高業(yè)務(wù),而是為了驅(qū)動和提高業(yè)務(wù),才需要用戶畫像。
藍(lán)忘機(jī)還記得魏三歲的好嗎?——NLP
藍(lán)忘機(jī)已有畫像,魏無羨的標(biāo)簽怎么打?也就是機(jī)器怎么做?
資訊推薦常見的標(biāo)簽有:分類(CATEGORY)、興趣點(POI)、關(guān)鍵詞(TAG)、主題(TOPIC),顆粒度由小到大:KEYWORD<TAG<POI<TOPIC<CATEGORY。
KEYWORD
- 思路:與文章關(guān)聯(lián)度越高,出現(xiàn)頻次越高,與別的詞關(guān)聯(lián)度越高,其重要度就越高。
- 算法:tfidf,textrank,embedding。
TAG
- 思路:人工標(biāo)注(行業(yè)知識庫)、機(jī)器候選
- 算法:分詞+關(guān)鍵詞提取+詞典匹配(保留命名實體)
POI
- 思路:人工整理基于關(guān)鍵詞的實體興趣點(POW,如:彩票)+概念興趣點(POC,如:財經(jīng))
- 算法:分詞+關(guān)鍵詞抽取+詞典匹配
TOPIC
- 思路:隱式主題,粒度比分類細(xì)
- 算法:機(jī)器無監(jiān)督學(xué)習(xí),聚簇,難點是數(shù)據(jù)預(yù)處理 + 調(diào)參
CATEGORY
- 思路:(有監(jiān)督)機(jī)器學(xué)習(xí)模型或深度學(xué)習(xí)模型
- 其他:資訊類APP的分類,少則幾十,多則上百,層級多為2-5級,應(yīng)用分類時必須考慮分類權(quán)威性和信息完備性問題,避免因為子節(jié)點覆蓋不全或分類錯誤導(dǎo)致的認(rèn)知問題。
過往標(biāo)簽推薦較多,現(xiàn)在更多嘗試向量化(embedding)推薦,即把特征表征為多維向量,可通過距離衡量語義相關(guān)性,YouTube的視頻推薦率先實踐。
給想了解深度學(xué)習(xí)(Deep Learning)的產(chǎn)品汪推薦《Deep Learning with Python》[美]弗朗素瓦·肖萊 著,閱讀第一章即可(畢竟是一本開發(fā)教程書),詳見下一篇推送。
通過所有特征標(biāo)注,魏無羨隨千軍萬馬過獨木橋 ——召回
打上標(biāo)簽的內(nèi)容一起涌來,機(jī)器怎么挑?在召回環(huán)節(jié),通過索引,幾十個召回模塊一共召回幾千條內(nèi)容,各召回模塊的召回條數(shù)有限制,例如本地召回限制最多召回30條內(nèi)容,召回的內(nèi)容會根據(jù)一定條件(例如CTR、篇均時長、互動指標(biāo)等)排序后截斷,所有召回模塊召回的內(nèi)容匯總到一塊,成為一個初步的候選集。
這些召回模塊都有他自己存在的理由,例如根據(jù)地理位置的召回、根據(jù)分類興趣的召回、根據(jù)關(guān)鍵詞的召回、根據(jù)熱議度的召回等等,都是產(chǎn)品經(jīng)理或開發(fā)的想法的一種嘗試,大致可分為四類:
1. 興趣
- 基于內(nèi)容及用戶模型進(jìn)行推薦;
- 基于訂閱收藏等互動行為進(jìn)行推薦。
2. 協(xié)同
- 基于內(nèi)容:內(nèi)容的協(xié)同
- 基于用戶:用戶的協(xié)同
- 基于用戶:內(nèi)容的協(xié)同
3. 熱門
- 流量熱門推薦:用戶行為表現(xiàn)熱門的內(nèi)容;
- 事件熱門推薦:最近發(fā)生的熱搜事件。
4. 本地
- 本地內(nèi)容推薦;
- 地域內(nèi)容推薦。
產(chǎn)品汪基于業(yè)務(wù)需求,在召回模塊的探索有:增減召回模塊、召回模塊邏輯/效果優(yōu)化、調(diào)整召回條數(shù)配額。
此類abtest除了關(guān)注整體指標(biāo)外,還需要關(guān)注對召回模塊的影響:
召回過后會有一個小的過濾環(huán)節(jié),主要是一些拉黑過濾,重復(fù)過濾等等,把一些不能推或影響體驗的內(nèi)容過濾掉。此環(huán)節(jié)的過濾和索引前內(nèi)容候選的過濾不同,前者是具有普適性的過濾(例如低點擊過濾、過期過濾等),后者和用戶的行為、屬性有關(guān)。
尖子生魏無羨重新加持,開始 CTR PK 環(huán)節(jié)——排序
排序環(huán)節(jié)關(guān)注三個詞:模型、特征和權(quán)重。
- 模型:如LR、XGBoost等,單模型或多模型融合都有可能。
- 特征:一般有幾百個,如分類、興趣點、閱讀時長、閱讀速度等等,應(yīng)有盡有,只怕你想不到。
- 權(quán)重:特征之間相互PK,權(quán)重高的特征對排序結(jié)果影響較大,權(quán)重可以是機(jī)器學(xué)習(xí)的自然結(jié)果,也可能是人工干預(yù)的結(jié)果。
所以CTR工程師的工作就是選擇模型、采樣數(shù)據(jù)優(yōu)化、增刪特征和調(diào)參,字少事大的又一典型。
奔向藍(lán)忘機(jī)之前,魏無羨還要過一道人工坎——重排
重排環(huán)節(jié)主要處理一些業(yè)務(wù)規(guī)則。例如視頻推薦占比不超過60%、第2個位置固定出運營內(nèi)容、相同興趣點新聞黏連不能超過3條等等,都需要在重排環(huán)節(jié)處理,這塊代碼是開發(fā)最不忍直視。
規(guī)則是最快的上線生效途徑,可以用于糾偏、提權(quán)等操作。例如,希望增加視頻推薦,一開始可在重排環(huán)節(jié)強(qiáng)出視頻(召回環(huán)節(jié)簡單做),保證視頻的曝光增多,abtest驗證加入視頻推薦可行后,再從內(nèi)容池、召回等環(huán)節(jié)精細(xì)化開發(fā),走一個較長的排期。
總地來說,短期的人工干預(yù)應(yīng)該逐步被長期的機(jī)制所替換。過多的“補(bǔ)丁”會嚴(yán)重增加系統(tǒng)的復(fù)雜度,降低可理解性。所以更建議優(yōu)化召回模塊優(yōu)先于排序模塊,因為修改召回模塊擴(kuò)充候選集能擁有更多可能性;而主觀修改排序模塊則極有可能損失公平,降低效率。
Happy Ending
最終下發(fā)8-12條,魏無羨奔向屏幕前的藍(lán)忘機(jī),有情人點擊閱讀,終成眷屬。
有的人覺得個性化推薦是“APP更懂我”,但其實個性化推薦的過程不僅具有個體進(jìn)化意義,還具有群體評估意義,就拿正文頁末的“喜歡”、“不喜歡”按鈕來說:
- 個體進(jìn)化意義:當(dāng)用戶點擊“喜歡”按鈕時,是主動表達(dá)他喜歡這類內(nèi)容,次數(shù)可以表示程度,用戶畫像得到完善,可加權(quán)推薦此類內(nèi)容。
- 群體評估意義:當(dāng)內(nèi)容的“不喜歡”數(shù)累積到一定閾值,結(jié)合賬號等級,內(nèi)容將進(jìn)入人工復(fù)審進(jìn)行質(zhì)量判斷;若累積到一個高閾值,將直接下撤內(nèi)容或回爐再造(大概率是降低體驗感的差內(nèi)容),起到維護(hù)內(nèi)容生態(tài)的作用。
以上是智能推薦系統(tǒng)的整體概念,其中的去重、相似推薦、本地推薦、新文章冷啟動、相關(guān)視頻推薦等等,每一模塊都可以是獨立業(yè)務(wù),精細(xì)化做起來都是滿滿的工作量,學(xué)無止境。
(推薦系統(tǒng)示例)
結(jié)語
引用閆澤華在《內(nèi)容算法》里寫的:
個性化的好:在既定的指標(biāo)體系下,借助技術(shù)手段不斷追求更好的數(shù)據(jù)表現(xiàn),是生意。
好的個性化:在不改變用戶目的的前提下,借助技術(shù)手段達(dá)成用戶效率和體驗提升,是理想。
本文由 @張小喵Miu 原創(chuàng)發(fā)布于人人都是產(chǎn)品經(jīng)理,未經(jīng)作者許可,禁止轉(zhuǎn)載。
題圖來自Unsplash,基于CC0協(xié)議。
一年產(chǎn)品狗表示好多看不懂、(.﹒?︿﹒?.)
加油 ??
很強(qiáng)。
可以加你好友嗎?相互交流學(xué)習(xí)
可以通過公眾號“XO喵妖”交流學(xué)習(xí) ??
工作相關(guān)的文章 也不讓我從忘羨坑底爬起來的么 ??
忘羨魔力太大 ??