直播App熱門列表排序方法總結

hello,大家好,我是蛋蛋。最近一直在做一款海外直播產品的列表排序,期間遇到一些問題,也找到了一些解決方法,簡單總結一下,方便自己review也跟大家分享下。

為什么要做排序?

目前移動端直播對于直播內容的展示大都采用大圖列表的形式,如下圖所示映客的首頁熱門列表,

個人認為這種展現形式在移動端不是最合適的,但是在對用戶口味很難把握的情況下,采用傳統的列表展示,讓用戶自己去挑選還是可取的。因此當用戶打開app看到的直播列表就顯得格外重要,這直接關系到用戶是否會繼續下面的操作。因此,在列表做直播內容的排序就十分必要了。

排序中遇到的問題和解決思路

在我們的直播app上線前期,列表的直播內容是很有限的,這個時候,列表排序所要解決的核心問題是:

把最好的直播間優先讓用戶看到

如何定義直播間好壞

因此,在這個階段要想的反而簡單,其實就是如何辨別一個直播間好壞的問題,我們在排序時把好的直播間放在較前的位置就好了,這就是我們經常看到的熱門列表,對于熱門的定義就是平臺對于好直播間的定義。

那問題就回到如何判斷一個直播間的好壞,對于直播間的好壞判斷有很多維度,很自然的想到,直播間人氣,直播間營收等等。這個要與產品的本身定位和所處的階段聯系起來制定。因為我們的產品剛剛處于起步階段,希望用戶能夠更多留在直播間里,同時我們對產品的定位是促進用戶和主播之間的互動(公屏文字消息),因此當時我們制定的房間好壞的標準就兩條

  • 能不能留住用戶(用戶是否愿意一直觀看)
  • 能不能讓用戶聊起來(用戶是否愿意發送公屏消息)

決定直播間好壞的因素選擇

有了這個標準之后,我們看重的主要房間因素是:人數、x分鐘留存、人均公屏消息數、公屏消息率。下面簡單介紹下這幾個因素計算(每隔時間t進行計算)

  • 人數,實時計算房間的人數。
  • x分鐘留存,x可以選擇3分鐘,或者5分鐘,其實和跳出率類似,以5分鐘留存為例,定義為,在一個5分鐘的時間段內,前面兩分鐘進來的用戶記為m,在5分鐘時間段過后(3分鐘后),依然在直播間的用戶記為n,則5分鐘留存r為


  • 人均公屏消息數,考察用戶在直播間內是否愿意和主播互動,禮物的門檻比較高,因此用公屏來判斷較為合適,人均公屏數的定義為,發言的總條數/發言的總人數。
  • 公屏消息率, 如果只考察人均公屏消息數,只能反映發言的人和主播互動的強度,同時還有就是互動的廣度,即公屏消息率,定義為,發言的人數/房間的總人數。

綜合房間因素得到排序值

有了上述因素定義之后,問題就變成了如何將這些因素綜合在一起變為一個值來反應直播間的好壞,這個值也就是排序所要用到的排序值。將多個不同維度(不同單位)的因素綜合到一起的方式有很多,比較常用和簡單的就是普通線性加權。將多個因素歸一化之后,每個因素配一個權值然后線性加到一起,如下樣式


值得一說的是,不同因素的歸一化方法,也有很多種,本人比較推崇的是從產品業務角度出發去進行非線性的歸一化,我們可以將不同因素都劃分到0到1分之間,譬如人數,那么從業務角度去定義的話,當人較少時,譬如少于10人,定義為0.1分,當人數上漲較快時,這個時候給的分數也較高,比如11到20人,0.3分,當人數特別多的時候,這個時候房間的人數已經不那么重要了,可以將過高的定義為0.9分,當再多時,甚至可以將分數降低,給予一定的懲罰,從而一定程度避免馬太效應。因此因素的歸一化如果純按照數學上提供的方法可能不太符合業務的實際情況。

同時在計算參數的過程中,還得注意的問題是,在計算一些比例項時,譬如留存項,就會出現一個問題,當分母過小時,可能就1個人在直播間,然后幾分鐘后還沒走,那么此時留存就是100%。對于這種問題的處理有很多種,有的是直接在分母中加一個常量,或者定義一個統計比例數據分母的最小閾值。

上線后如何衡量排序算法及權值參數調節

按照上述的排序算法,我們給定一個初步的權值之后基本就可以灰度(甚至直接上線)了。好像貌似可以解決列表排序的需求了。這時候需要想起的是

沒有數據優化目標的產品需求都是耍流氓

其實就是如何衡量我們做的這些有沒有用,不然調節參數,增加排序因素維度都是沒有任何意義的。其實列表和現實生活中的商店的商品櫥窗基本起著同樣的作用,展示給用戶,吸引用戶購買(進入觀看)。一個好的櫥窗展示應該是,當用戶看到商品就會去買,所以一個好的列表就是讓用戶看到就去點,然后還一直觀看,不停在里面和主播勾搭聊騷。從成本和收益的角度來看,列表上的任何主播直播間的曝光,都是我們的成本,因為用戶(流量)是有成本的,我們的收益應該就是我們所看重的點擊,觀看時長,公屏消息數等。因此我們對于衡量指標的定義就是

  • 直播間點擊量/列表曝光量
  • 直播間人均觀看時長/列表曝光量
  • 直播間消息總數/列表曝光量
  • ...

在不同階段產品的側重點也有可能不同,在不同的側重點,就應該著重關注某一個指標,當然也可以將上述衡量指標綜合成一個總的kpi。有了這個之后,我們調節參數,就可以通過這些指標來判斷調整的好壞,從而決定某一組參數要不要上線。

總結

上述的整個列表的排序思路比較基礎和簡單,但基本搭建了一個排序系統的基本框架,后續的優化基本都可在這個框架上進行,比如增加排序歷史因素的考慮,運營因素的考慮等。或者將線性加權模型改成非線性的,增加時間因素等等各種約束條件等。但是本質上都是在做一件事,也是文章最前面提到的“把最好的直播間優先讓用戶看到”。

當然列表除了承載內容的展示外,還擔負著用戶流量的引導,當產品用戶量成長到一定規模后,本文所提的算法就會遇到一個很大的麻煩,頭部集中,就會遇到一些問題,比如,把什么用戶給到什么樣的主播,如何合理流量分配,如何個性推薦。這些就放在以后的文章里總結了。

后記

其實列表的排序問題,由來已久,所有的內容型平臺都會涉及到這個問題,新聞網站熱門,社區應用的帖子排序,電商網站的商品,簡書首頁的文章排序排序,等等。直播類產品的排序算是一種特殊情況下的應用。所以這方面也有很多的資料可以參考,貼給大家

阮一峰老師之前曾經翻譯總結過一系列的文章http://www.ruanyifeng.com/blog/2012/02/ranking_algorithm_hacker_news.html
知乎的問答排序規則和威爾遜算法
https://zhuanlan.zhihu.com/p/19902495?refer=zhihu-product
https://en.wikipedia.org/wiki/Binomial_proportion_confidence_interval#Wilson_score_interval

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容