以圖片社區為例,如何利用熱度算法做內容質量評估?
以圖片社區為例,結合我的實踐經驗,從待解決問題、輸入、計算邏輯、輸出四要素,拆解熱度算法如何設計。
一、背景
在內容社區中,熱度算法是基于實際用戶反饋行為,比如內容的點贊、收藏等數據,而實時計算得到的分數。熱度算法用于衡量內容的流行度,做對應的質量評估。這里的“質量”,更多代表的是內容受用戶歡迎程度。熱度高,表示當前內容受更多用戶歡迎,十分流行;熱度低,表示圖片較為冷門。
熱度算法為了解決什么問題而存在?
它是為了從龐大的內容庫中,簡單高效地發現大多數人喜歡的頭部內容,推薦給其他用戶,從而滿足他們的內容需要。《烏合之眾》提到,人們在群體生活中,多有從眾心理,偏好大多數人的選擇。熱度算法正是應用了大眾心理,熱度反映的是社區內部用戶大多數的口味偏好。
二、價值
熱度算法的價值在哪里?
維持老用戶的活躍度。熱度算法能夠讓老用戶最高效地獲取頭部內容,及時感知到當前社區的熱點。
以新浪微博為例,熱搜榜憑借熱度算法,快速挖掘熱點新聞,讓用戶獲取實時熱點,帶動了新浪微博整體的活躍度。吃瓜群眾喜歡的娛樂圈八卦,如若干明星出軌事件,在熱搜爆出后,讓服務器幾度宕機。
提高新用戶的留存率。熱度算法呈現的是社區最流行的內容,這能夠讓新用戶第一時間感知社區作品的優質程度,大概率滿足他們的內容需要,增加留下來的可能性。
以攝影社區圖蟲和視頻社區B站為例,熱門Tab的優先級很高,把當前最熱的內容呈現給新用戶,對提升留存是有很大幫助的。
三、算法
以圖片社區為例,結合我的實踐經驗,從待解決問題、輸入、計算邏輯、輸出四要素,拆解熱度算法如何設計。請記住,以下思路是可以復用的,不止是圖片,其他形式的內容如文章、視頻、音頻都適用。需要注意的是,輸入及計算邏輯需要結合你的具體產品和業務背景而定。
1. 待解決問題及期望輸出
在熱度算法中,待解決問題是如何量化圖片在社區中的流行度。
期望輸出熱度排序,用于排行榜或基于一定規則下發至用戶端。
2. 輸入
從圖片的生命周期來看,一張圖片會經過四個階段:剛發布、被其他用戶消費互動、被官方推薦、成為舊圖片。依此,我們可以考慮圖片熱度S拆分為三部分組成:
- S1-初始分,指圖片剛發布,沒有任何消費互動時,賦予一定的初始分數。
- S2-受歡迎分,指圖片發布后,被其他用戶消費互動,具備一定的受歡迎分數。
- S3-推薦分,指官方運營可以對圖片進行正負推薦,做一定的人工干預。
其中,正推薦可以對分數低但具備潛力的圖片給予扶持,負推薦可以對分數高但不符合社區規范的圖片進行抑制。
這三個子分數的輸入來源,可以結合以下考慮:
- 初始分S1:用過往圖片被精選次數或該用戶的身份權重。由于我所在的產品,精選是由運營判斷的,相對質量較好,而用戶的身份如達人等相對缺乏持續運營,所以我選取精選數作為核心指標。
- 受歡迎分S2:在一定展示量下,該圖片被點贊、評論、收藏、分享的次數/人數。以上是較為常規的關鍵指標,如果你的產品有其他更為關鍵的行為,可以做對應增刪。
- 推薦分S3:S1和S2是圖片本身自帶的數據,而S3則是預留了一個運營干預的口子。這里的分數,可以做對應的運營輔助后臺,由運營同事手動設置。正推薦則加分,負推薦則減分。
3. 計算邏輯
3.1 未考慮時效性的熱度計算
- 圖片熱度S=初始分S1+受歡迎S2+正推薦分S3-1+負推薦分S3-2;
- 初始分S1=SUM(該用戶過往圖片被精選次數),精選次數封頂值為max;
- 受歡迎分S2=(h1*點贊數+h2*評論數+h3*收藏數+h4*分享數)/展示數,h1-h4為該行為的單次得分項,分數越高,表示該行為對內容更重要;
- 正推薦分S3-1=運營設定值,為正數;
- 負推薦分S3-2=運營設定值,為負數。
以上是未考慮時效性的分數計算,當圖片成為舊圖片時,我們更希望它能夠為其他新圖片讓位。也就是熱度降低,熱度與時間成負相關關系。這時候我們引入時間衰減函數,對S1、S2和S3分別考慮時間的影響。
3.2?考慮時效性的熱度計算
業內通用的時間衰減函數,是牛頓冷卻定律。偉大的牛頓發現,物體的溫度在冷卻到與室溫一致時,溫度變化并不是線性的,而是指數衰減。這個定律也被互聯網的小伙伴跨界應用到熱度算法。
公式表示為F(T)=e^[-k*(T-T0)],e是自然常數2.718,k為冷卻系數,(T-T0)為時間間隔,T為當前時間,T0為起始時間。k越大,衰減越快;k越小,衰減越慢。
k值如何確定?假設熱度從100變成1,用了24小時(全衰期),可以視為基本衰減完畢,即F(T)=0,T-T0=24,依此可以求得k值。計算時需要注意時間單位,統一換算為時間戳。在實際的落地中,難度在于如何確定全衰期。這個應該根據實際的業務需要去判定,比如新聞的全衰期一般為24小時,比較注重實效性;而其他業務,對于時效性要求不高,可以將全衰期適當延長。
加上時間衰減后,我們可以更新S1-S3的公式如下:
- 初始分S1=SUM(該用戶過往圖片被精選次數)*F1(T),精選次數封頂值為max
- 受歡迎分S2=(h1*點贊數+h2*評論數+h3*收藏數+h4*分享數)/展示數*F2(T)
- 正推薦分S3-1=運營設定值*F3(T),為正數
- 負推薦分S3-2=運營設定值,為負數
其中,F1(T)、F2(T)、F3(T)均為對應的衰減函數:
- F1(T)=e^[-k1*(T-T0)],T0為圖片發布時間
- F2(T)=e^[-k2*(T-T0)],T0為圖片發布時間
- F3(T)=e^[-k3*(T-T’)],T’為設定時間
3.3 歸一化處理
經過以上2個步驟的處理,我們得到的是:圖片熱度S=初始分S1+受歡迎S2+正推薦分S3-1+負推薦分S3-2。
如果你實際落地中會發現,受歡迎分S2往往很大,無論如何調節S1和S3,對分數影響都很小。這個時候,你會幡然醒悟,缺少了最重要的一步——歸一化。
因為我們得到的S1、S2和S3,大小不在同一量級上,如果直接簡單相加,S約等于可能約等于某個子分數。
引入歸一化系數a,將各部分分數進行適當的放大或縮小。最終得到:圖片熱度S=a1*初始分S1+a2*受歡迎S2+a3*正推薦分S3-1+a4*負推薦分S3-2。
4.實例
用戶小白在2020年3月1日0:00發布一張圖片,小白過往圖片被精選次數為20次;24小時后,該圖片累計展示1000次,獲贊數400,評論數100,收藏數50,分享數10。求此時的熱度分數。暫無運營推薦操作。
在熱度算法中:
- 初始分S1=SUM(該用戶過往圖片被精選次數)*F1(T),精選次數封頂值為max
- 受歡迎分S2=(h1*點贊數+h2*評論數+h3*收藏數+h4*分享數)/展示數*F2(T)
- 正推薦分S3-1=運營設定值*F3(T),為正數
- 負推薦分S3-2=運營設定值,為負數
若結合業務討論得到:
- 初始分S1,精選最多按10次計算,時效性3天;T-T0=24小時=1天,對應F1(T)=0.215;
- 受歡迎分S2,點贊一次計1分,評論一次計2分,收藏一次計3分,分享一次計4分,時效性30天;T-T0=1天,對應F2(T)=0.858
- 正推薦S3-1,推薦時效性7天
那么此時可以計算如下:
- S1=10*F1(T)=2.15
- S2=(1*400+2*100+3*50+4*10)/1000*F2(T)=0.68
- S3-1=S3-2=0
- 而熱度分S=a1*S1+a2*S2+a3*S3-1+a4*S3-2,其中歸一化系數a1=1,a2=10,a3=5,a4=5,則計算出最終S=8.95
四、總結
熱度算法實際很難,難就難在如何根據實際業務調參調優,以下我分享幾點心得:
(1)第一版本不在乎精度,重點在于跑通流程,確定好整個熱度算法的框架
框架必須正確,并且支持后續拓展。第二版本起,才開始調參調優。這是是一個技術活,一定要體現在分數的改變效果上,根據效果來反推調優方向,否則只是無意義的勞動。
(2)無數據不算法,巧婦難為無米之炊
輸入涉及的數據指標,都是需要正確埋點的。如果數據不可用,應該優先做數據基建。
小數據+復雜模型=一般效果
大量數據+簡單模型=很好效果
大量數據+復雜模型=更好效果
(3)熱度S能夠讓運營或用戶簡單理解的前提,是需要做對應的可視化
因為直接計算出熱度分數只是個絕對數,而相對數才是對業務有參考意義的。比如你可以將熱度S做成區間0-10,10分表示滿分。要學會將技術語言轉化為業務語言。
如果你看完以上內容,覺得熱度算法很簡單。那么恭喜你,你已經成功入坑,可以去實踐了。
如果沒看懂,你可以勇敢提出你的疑問。我們一起交流學習,共同進步。
作者:Ln,微信號:scnulhy
本文由 @Ln?原創發布于人人都是產品經理。未經許可,禁止轉載
題圖來自Unsplash,基于CC0協議
請問關于受歡迎分的計算
1、如果一個內容已發布60天,之前實例設定有效期30天,前30天的數據是否計入?
2、假設最近30天總共1000贊,情況a:前10天100贊,后20天900贊;情況b前10天900贊,后10天100贊。這2種情況下,在現時計算,按現在公司計算受歡迎分是否相同?情況a熱度越來越高,情況b熱度越來越低,理論上應該要有區別才對,應如何體現呢?
老師分享的很好,受教了,非常感謝,假如有機會認識您那就更好了,謝謝!
求解,歸一化系數是怎么算出來的
感謝作者的詳細分享,有一點不是很明白,正向推薦為什么是-1,負向推薦-2? 如果我正向推薦填0-1不就是負數了嗎? 負向推薦只是-2那還是朝著正向的方向計算了呀? 求解
你理解錯了,這是名字 。推薦分為S3, 其中正推薦叫S3-1 (S3杠1) ,負推薦分叫S3-2 。
F(T)=e^[-k1*(T-T0)],則-k1*(T-T0)=lnF(T),那么F(T)就不可能等于0,文章中是否寫錯了
感謝指正,F(T)應為0.01
另外兩個問題:
1.衰減系數中的時效k值,如何確定?經驗估計假設?
2.歸一化系數這個數據如何確定?有哪些考慮因素以及其他?樓主可好做個進一步的分享?
1.k值應結合業務,建議同運營同學討論好內容時效性對用戶消費興趣的影響,也算是經驗主義了
2.歸一化有挺多方法的。我理解是黑盒子調參,重點關注影響結果即可
對于數學是渣,百度歸一化都懵逼了,作者可以分享下嗎?
很好的文章,謝謝作者,但有個疑問:
“如果你實際落地中會發現,受歡迎分S2往往很大,無論如何調節S1和S3,對分數影響都很小。這個時候,你會幡然醒悟,缺少了最重要的一步——歸一化?!?br /> “其中歸一化系數a1=1,a2=10,a3=5,a4=5”
下面這個歸一化系數的操作與上面的描述邏輯相悖,寫錯了還是另有原因?
感謝指正,是寫錯
“k值如何確定?假設熱度從100變成1,用了24小時(全衰期),可以視為基本衰減完畢,即F(T)=0,T-T0=24,依此可以求得k值。”
這里有點沒看懂,辛苦樓主解答一下:F(T)是個指數函數,好像不能等于0,這里的k是如何計算的
感謝指正,F(T)應為0.01
有沒有文字版
具體是?
不錯 期待人人都是產品經理能增加公式編輯器功能
??
請教作者:現在負責直播/短視頻這塊的推薦算法產品經理,但是之前沒有過這塊的經驗,請問有哪些書籍或論壇推薦給我,可以讓我學習這相關的一些算法的。謝謝了!
你好,書籍的話推薦《推薦算法實踐》,算是國內第一本工程實踐的書了。
因為推薦算法基本是算法工程師設計的,如果你所在的團隊已經有算法工程師,那么你可以更加關注在目標和算法效果評估上哈
你好,我想咨詢一下這種效果的評估如何進行評估
您好啊,這邊也在參與短視頻社交這塊的內容,不嫌棄的話,能互相認識一下嗎?謝謝了!