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