編輯導語:百萬日活的推薦系統是很多人可望而不可求的,其系統的設計也並不簡單,那麼該如何設計這樣一款推薦系統呢?本文作者基於自己的實際搭建經驗,為我們分享了他的產品設計歷程,希望能夠幫助大家在系統搭建的過程中少走一些彎路。
前言:
本系列專欄主要講述本人從0到1搭建RES推薦系統的一些經驗,記錄下產品設計的心路歷程,以此激勵自己不斷探索新知識。
與市面上泛泛而談的博客不同的是,本文主要從產品的角度,結合行業特性,剖析踩過的坑。
一、產品架構任何一款再簡單的產品,都需要商業模式和產品架構的設計。架構不需要多麼複雜、花哨,深入理解行業背景,適合產品規劃才是最重要。
用visio畫的一個比較滿意的產品圖,基本能把要表達的思路全部畫了出來。
不同於前任設計的基於規則的1.0版本,這次重構主要在於搭建一個可擴展的體系,同時引入數據驅動、算法賦能,而不是拍腦袋決定。
從產品的角度看推薦,應屬於業務應用層。
一切的一切,都是基於底層埋點到分析流程、大數據平台、用户標籤畫像、自然語言處理等基礎服務搭建較為完善的前提下開展。
推薦的整體流程分為召回、過濾、排序(因為數據量不是非常大,所以不需要粗排、精排)、重排序,這次主要講召回層最易理解但最重要的熱門召回。
二、整體流程流程首先考慮閉環:從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)人工構建熱門詞庫
新媒體運營的專家是最懂行業,最懂當前熱點的了,引入人工規則,維護一張熱門詞庫。
字段類型説明:
熱詞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。
幾個核心的點:
- 評論:無法單一的根據內容得出用户的偏好。需要對內容做正負面分析。
- 閲讀時長:過短的閲讀時長,可能是負面反饋。這裏由於找不到好的擬合函數,就簡單做了分段函數,正常來説應該是基於預估閲讀時長做一個正態分佈。
採用經典的hacker news的排行算法:
G重力衰減因子默認為1.8,值越大衰減越快:
至於接下來的,LR+adam排序算法,將在後續章節介紹。
作者:數據增長創始人,datagrowth.cn數據驅動增長自媒體網站創始人。
本文由 @數據增長創始人 原創發佈於人人都是產品經理,未經許可,禁止轉載
題圖來自 Pexels,基於CC0協議