如何設計一款百萬日活的推薦系統(1)-大智慧RES從0到1實戰

編輯導語:百萬日活的推薦系統是很多人可望而不可求的,其系統的設計也並不簡單,那麼該如何設計這樣一款推薦系統呢?本文作者基於自己的實際搭建經驗,為我們分享了他的產品設計歷程,希望能夠幫助大家在系統搭建的過程中少走一些彎路。

如何設計一款百萬日活的推薦系統(1)-大智慧RES從0到1實戰

前言:

本系列專欄主要講述本人從0到1搭建RES推薦系統的一些經驗,記錄下產品設計的心路歷程,以此激勵自己不斷探索新知識。

與市面上泛泛而談的博客不同的是,本文主要從產品的角度,結合行業特性,剖析踩過的坑。

一、產品架構

任何一款再簡單的產品,都需要商業模式和產品架構的設計。架構不需要多麼複雜、花哨,深入理解行業背景,適合產品規劃才是最重要。

如何設計一款百萬日活的推薦系統(1)-大智慧RES從0到1實戰

用visio畫的一個比較滿意的產品圖,基本能把要表達的思路全部畫了出來。

不同於前任設計的基於規則的1.0版本,這次重構主要在於搭建一個可擴展的體系,同時引入數據驅動、算法賦能,而不是拍腦袋決定。

從產品的角度看推薦,應屬於業務應用層。

一切的一切,都是基於底層埋點到分析流程、大數據平台、用户標籤畫像、自然語言處理等基礎服務搭建較為完善的前提下開展。

推薦的整體流程分為召回、過濾、排序(因為數據量不是非常大,所以不需要粗排、精排)、重排序,這次主要講召回層最易理解但最重要的熱門召回。

二、整體流程
如何設計一款百萬日活的推薦系統(1)-大智慧RES從0到1實戰

流程首先考慮閉環:從app用户行為產生、大數據實時統計,到產生熱門召回、過濾、排序後,形成熱門推薦服務;又通過用户行為來評估推薦效果【產品指標,如PV/UV、人均閲讀時長、轉化率等 】。

根據整體流程,發現核心在於熱門值的計算方案。

新聞入到資訊的es庫中,系統賦予一個初始熱度值;進入推薦列表後,用户的點擊、分享、點贊等交互行為可以提升新聞的熱度值。由於新聞有較強的時效性,新聞發佈後,熱度非線性衰減。

資訊熱度分=(初始熱度值+用户交互產生熱度值-低質量懲罰分(暫無))*時間衰減係數。

1. 初始熱度值

1)不同類別的文章給與不同的權重

根據用户數據反饋,選擇其中某些熱門主題類型的文章,同時綜合考慮高質量的類目,給與較高的權重。

類別初始熱門值:

  • 行業主題新聞1054.735564
  • 港美要聞1245.855933
  • 研究報告1120.392939
  • 公司公告1512.846047
  • 最要聞1289.611752
  • 負面輿情個股評分1258.429732
  • 大宗交易1563.380282
  • 負面輿情1212.765957
  • 置頂快訊1276.711414
  • 媒體公眾號1200.016274
  • 公司新聞1251.293961
  • 行業負面輿情1119.495341
  • 投資機會1150.045185
  • 董秘爆料1182.643536
  • 熱點財經1151.139303
  • 個股預警快訊1315.388798

2)人工構建熱門詞庫

新媒體運營的專家是最懂行業,最懂當前熱點的了,引入人工規則,維護一張熱門詞庫。

如何設計一款百萬日活的推薦系統(1)-大智慧RES從0到1實戰

字段類型説明:

熱詞idstring自增,主鍵熱門詞string不可為空,不可重複狀態string枚舉值:

0未生效;1已生效操作button狀態操作對應:已生效,操作為下線,點擊後狀態為下線;反之創建時間datetime創建時間。

對文章進行提取關鍵字,進行匹配,根據匹配程度適當提升熱門權重。提取關鍵字的算法也很簡單,利用textrank,彌補tf-idf無法提取上下文關係的劣勢,取共現詞topN。

作為關鍵詞,當然前置工作有去除停用詞,後置工作有同義詞歸併等等,所以NLP的底層基礎能力很重要。

3)自動發現熱詞

若某一段時間,某一些文章的點擊/搜素數量劇增,排除置頂等運營幹預後,就應該考慮到可能出現了熱門詞。這種可以通過算法自動捕捉:算法思路也很簡單,通過聚類,提取共性主題的關鍵字。

2. 交互熱度值

取前M小時用户的不同行為賦予不同的分數,如【具體分值根據數據表現配置】:

行為分值點擊PV10;收藏PV50;分享PV100;評論PV100;點贊PV50;閲讀時長(s):時長小於3s:-5、時長大於3s:15、點衰PV-20。

幾個核心的點:

  1. 評論:無法單一的根據內容得出用户的偏好。需要對內容做正負面分析。
  2. 閲讀時長:過短的閲讀時長,可能是負面反饋。這裏由於找不到好的擬合函數,就簡單做了分段函數,正常來説應該是基於預估閲讀時長做一個正態分佈。
3. 時間衰減

採用經典的hacker news的排行算法:

G重力衰減因子默認為1.8,值越大衰減越快:

如何設計一款百萬日活的推薦系統(1)-大智慧RES從0到1實戰
如何設計一款百萬日活的推薦系統(1)-大智慧RES從0到1實戰

至於接下來的,LR+adam排序算法,將在後續章節介紹。

作者:數據增長創始人,datagrowth.cn數據驅動增長自媒體網站創始人。

本文由 @數據增長創始人 原創發佈於人人都是產品經理,未經許可,禁止轉載

題圖來自 Pexels,基於CC0協議

版權聲明:本文源自 網絡, 於,由 楠木軒 整理發佈,共 1886 字。

轉載請註明: 如何設計一款百萬日活的推薦系統(1)-大智慧RES從0到1實戰 - 楠木軒