以圖片社區為例,如何利用熱度算法做內容質量評估?

22 評論 20426 瀏覽 137 收藏 13 分鐘

以圖片社區為例,結合我的實踐經驗,從待解決問題、輸入、計算邏輯、輸出四要素,拆解熱度算法如何設計。

一、背景

在內容社區中,熱度算法是基于實際用戶反饋行為,比如內容的點贊、收藏等數據,而實時計算得到的分數。熱度算法用于衡量內容的流行度,做對應的質量評估。這里的“質量”,更多代表的是內容受用戶歡迎程度。熱度高,表示當前內容受更多用戶歡迎,十分流行;熱度低,表示圖片較為冷門。

熱度算法為了解決什么問題而存在?

它是為了從龐大的內容庫中,簡單高效地發現大多數人喜歡的頭部內容,推薦給其他用戶,從而滿足他們的內容需要。《烏合之眾》提到,人們在群體生活中,多有從眾心理,偏好大多數人的選擇。熱度算法正是應用了大眾心理,熱度反映的是社區內部用戶大多數的口味偏好。

二、價值

熱度算法的價值在哪里?

維持老用戶的活躍度。熱度算法能夠讓老用戶最高效地獲取頭部內容,及時感知到當前社區的熱點。

以新浪微博為例,熱搜榜憑借熱度算法,快速挖掘熱點新聞,讓用戶獲取實時熱點,帶動了新浪微博整體的活躍度。吃瓜群眾喜歡的娛樂圈八卦,如若干明星出軌事件,在熱搜爆出后,讓服務器幾度宕機。

提高新用戶的留存率。熱度算法呈現的是社區最流行的內容,這能夠讓新用戶第一時間感知社區作品的優質程度,大概率滿足他們的內容需要,增加留下來的可能性。

以攝影社區圖蟲和視頻社區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協議

更多精彩內容,請關注人人都是產品經理微信公眾號或下載App
評論
評論請登錄
  1. 請問關于受歡迎分的計算
    1、如果一個內容已發布60天,之前實例設定有效期30天,前30天的數據是否計入?
    2、假設最近30天總共1000贊,情況a:前10天100贊,后20天900贊;情況b前10天900贊,后10天100贊。這2種情況下,在現時計算,按現在公司計算受歡迎分是否相同?情況a熱度越來越高,情況b熱度越來越低,理論上應該要有區別才對,應如何體現呢?

    來自廣東 回復
  2. 老師分享的很好,受教了,非常感謝,假如有機會認識您那就更好了,謝謝!

    來自河南 回復
  3. 求解,歸一化系數是怎么算出來的

    來自廣東 回復
  4. 感謝作者的詳細分享,有一點不是很明白,正向推薦為什么是-1,負向推薦-2? 如果我正向推薦填0-1不就是負數了嗎? 負向推薦只是-2那還是朝著正向的方向計算了呀? 求解

    來自廣東 回復
    1. 你理解錯了,這是名字 。推薦分為S3, 其中正推薦叫S3-1 (S3杠1) ,負推薦分叫S3-2 。

      來自廣東 回復
  5. F(T)=e^[-k1*(T-T0)],則-k1*(T-T0)=lnF(T),那么F(T)就不可能等于0,文章中是否寫錯了

    來自江蘇 回復
    1. 感謝指正,F(T)應為0.01

      來自廣東 回復
  6. 另外兩個問題:
    1.衰減系數中的時效k值,如何確定?經驗估計假設?
    2.歸一化系數這個數據如何確定?有哪些考慮因素以及其他?樓主可好做個進一步的分享?

    來自浙江 回復
    1. 1.k值應結合業務,建議同運營同學討論好內容時效性對用戶消費興趣的影響,也算是經驗主義了
      2.歸一化有挺多方法的。我理解是黑盒子調參,重點關注影響結果即可

      來自廣東 回復
    2. 對于數學是渣,百度歸一化都懵逼了,作者可以分享下嗎?

      來自廣東 回復
  7. 很好的文章,謝謝作者,但有個疑問:
    “如果你實際落地中會發現,受歡迎分S2往往很大,無論如何調節S1和S3,對分數影響都很小。這個時候,你會幡然醒悟,缺少了最重要的一步——歸一化?!?br /> “其中歸一化系數a1=1,a2=10,a3=5,a4=5”
    下面這個歸一化系數的操作與上面的描述邏輯相悖,寫錯了還是另有原因?

    來自浙江 回復
    1. 感謝指正,是寫錯

      來自廣東 回復
  8. “k值如何確定?假設熱度從100變成1,用了24小時(全衰期),可以視為基本衰減完畢,即F(T)=0,T-T0=24,依此可以求得k值。”
    這里有點沒看懂,辛苦樓主解答一下:F(T)是個指數函數,好像不能等于0,這里的k是如何計算的

    來自廣東 回復
    1. 感謝指正,F(T)應為0.01

      來自廣東 回復
  9. 有沒有文字版

    回復
    1. 具體是?

      回復
  10. 不錯 期待人人都是產品經理能增加公式編輯器功能

    回復
    1. ??

      來自廣東 回復
  11. 請教作者:現在負責直播/短視頻這塊的推薦算法產品經理,但是之前沒有過這塊的經驗,請問有哪些書籍或論壇推薦給我,可以讓我學習這相關的一些算法的。謝謝了!

    來自廣東 回復
    1. 你好,書籍的話推薦《推薦算法實踐》,算是國內第一本工程實踐的書了。

      因為推薦算法基本是算法工程師設計的,如果你所在的團隊已經有算法工程師,那么你可以更加關注在目標和算法效果評估上哈

      來自廣東 回復
    2. 你好,我想咨詢一下這種效果的評估如何進行評估

      來自北京 回復
    3. 您好啊,這邊也在參與短視頻社交這塊的內容,不嫌棄的話,能互相認識一下嗎?謝謝了!

      來自河南 回復