前言
首先,什么是Feed流?
Feed是一個互聯(lián)網(wǎng)早期的概念,本意是RSS中用來接收信息來源更新的接口。現(xiàn)在的定義比較寬泛,一般而言,持續(xù)更新并呈現(xiàn)給用戶的內(nèi)容都叫做Feed流。朋友圈是feed流,微博首頁是feed流,知乎首頁是feed流,各種門戶的內(nèi)容也是feed流。換句話說,我們大量的在線時間和視線,實際上都被Feed流掌控。
早期的Feed流主要是把用戶關(guān)注的內(nèi)容以Timeline的形式展開。但是隨著用戶場景的豐富,F(xiàn)eed流也有了更多的變種。本篇文章主要討論如何設(shè)計一個Feed流,以及Feed流背后的設(shè)計邏輯。
Feed流設(shè)計的要核心問題
之前提到,對于搜索而言,基本上是召回用戶感興趣的內(nèi)容,然后進(jìn)行篩選排序。其實Feed的設(shè)計也是如此。一個Feed流永遠(yuǎn)是在解決兩個核心問題:
應(yīng)該展示給用戶什么內(nèi)容?
這些內(nèi)容該怎么排序?
不同的Feed流其實是在給出這兩個問題不同的答案。不同的答案也沒有絕對的對與錯,更多的是場景是否合適。
永恒的經(jīng)典——Timeline
Timeline,一般而言,不對用戶主動要求獲取的內(nèi)容進(jìn)行篩選,同時所有的內(nèi)容按照時間排序。最經(jīng)典的案例就是朋友圈。關(guān)于Feed流設(shè)計的兩個核心問題,微信朋友圈的回答是這樣的:
應(yīng)該展示給用戶什么內(nèi)容:用戶好友發(fā)的內(nèi)容
這些內(nèi)容該怎么排序:按照時間先后順序
Timeline簡單的內(nèi)容選取和排序非常易于用戶理解,充滿了極簡主義的哲學(xué):隨時更新,吸引用戶隨時打開使用,而每次更新的部分都有限也保證了大部分用戶不會錯過任何消息。微信也用這個設(shè)計,獲取了用戶大量的時間。
既然Timeline有這么多優(yōu)點,那么Feed流為什么還會迭代衍生出來其他的設(shè)計?
其實這里也牽扯到一個問題,Timeline有一個致命的缺點——內(nèi)容呈現(xiàn)效率最為低下。需要內(nèi)容提供方非??酥疲瑫r也需要用戶對這些內(nèi)容足夠關(guān)注。
微信朋友圈的內(nèi)容是用戶自己的個人展示,注定不會大量更新;同時選擇都是基于熟人關(guān)系,能引起用戶足夠的關(guān)注。正是這兩個原因,保證了朋友圈內(nèi)容雖然效率低下,但是還是極具吸引力。如果動輒每天上千條陌生人更新的內(nèi)容,使用Timeline的形式呈現(xiàn)出來,想見一下,這是一個多么缺乏思考的設(shè)計。
重力排序算法——兼顧熱度和更新時間
如果每天有更新量很大的Feed流,同時大部分內(nèi)容沒有太大用戶價值,這種情況下我們該怎么排序?這個場景其實也很常見,也是一些PM在實際工作中遇到的棘手問題。答案就是重力排序算法。
重力排序算法中,對于一個在Feed流中的內(nèi)容而言,有兩種力量:重力和拉力。重力是持續(xù)讓內(nèi)容往下掉的力,這個重力就是時間,因為新的內(nèi)容會把老的內(nèi)容刷下去;同時拉力則是讓內(nèi)容排序往前的力,比如知乎的贊,貼吧的回復(fù)。
這樣的排序算法實現(xiàn)方式有很多,這里可以簡單介紹一種,也是來自Reddit的核心排序算法:

其中:
H表示能代表內(nèi)容熱度的值:比如說收到的贊,比如說瀏覽量,也可以是綜合類似的指標(biāo),加權(quán)求和得到的值。
T代表內(nèi)容發(fā)布的時間,To代表一個時間的起始值,只要比最早發(fā)布的內(nèi)容早就行了(比如用公司創(chuàng)立時間)。T-To?用來衡量一個內(nèi)容的新舊程度,單位為秒,T-To?越大,則代表內(nèi)容越新。
A也是設(shè)立的參數(shù),A越大,T-To的影響力越小,則內(nèi)容更新的越慢。一般而言初始值可以用36000,10個小時的秒數(shù),后續(xù)不斷迭代。
關(guān)于Feed流設(shè)計的兩個核心問題,重力排序算法的回答是這樣的:
應(yīng)該展示給用戶什么內(nèi)容:用戶表現(xiàn)出喜好的內(nèi)容都推給用戶,雖然用戶不一定看得見后面的。
這些內(nèi)容該怎么排序:按照時間衰減因素和內(nèi)容受歡迎程度綜合排序。
智能排序——雙刃劍
Facebook使用智能排序之后據(jù)稱效果拔群,于是我們看到越來越多的社交網(wǎng)絡(luò)放棄使用Timeline排序,轉(zhuǎn)入智能排序的陣營,國外的Twitter,國內(nèi)的微博和知乎。
智能排序牽扯到復(fù)雜的模型構(gòu)建和機器學(xué)習(xí),這里只闡述下簡單的原理。
首先,系統(tǒng)需要知道什么是一個內(nèi)容被展示的目標(biāo)值。比如微博,一個內(nèi)容被展示的目標(biāo)值是轉(zhuǎn)發(fā),評論,點贊的次數(shù)。那么通過大量的樣本的機器學(xué)習(xí),系統(tǒng)對于什么是好的內(nèi)容會有一個預(yù)測。這個對于一個內(nèi)容的預(yù)測,則是的智能排序的基礎(chǔ)。
接下來,系統(tǒng)會屏蔽掉一些違規(guī)的內(nèi)容,比如Facebook處罰標(biāo)題黨,知乎處罰抱團(tuán)點贊。
其次,為了用戶內(nèi)容的質(zhì)量,系統(tǒng)會在用戶的Feed中增加一些熱門的內(nèi)容。
最后,考慮內(nèi)容和用戶的親密度、系統(tǒng)認(rèn)為內(nèi)容受歡迎的程度、內(nèi)容時間衰減性等因素后,系統(tǒng)進(jìn)行綜合排序。
聽起來智能排序是一個很好的主意。但是,智能排序也是一把雙刃劍。
算法質(zhì)量的高要求,導(dǎo)致一些技術(shù)比較差的公司,使用智能排序效果不佳。另一方面,因為智能排序的不透明性和擴展性,過度的商業(yè)化更是成為了用戶體驗的頭號兇手。
有的內(nèi)容因為用戶買了粉絲頭條而可以排在Feed流前面,有的內(nèi)容只要有足夠的推廣費,可以繞過關(guān)注關(guān)系,呈現(xiàn)在用戶面前。智能排序如果被過度商業(yè)化,那么Feed流的用戶體驗也會越來越差。
總結(jié)
Feed流的設(shè)計原理其實講起來比較簡單,如果需要成型的排序算法,也可以找到很多,但是更多的是,什么是真正適合的選擇。
如果選擇Timeline的排序,那么就需要考慮用戶關(guān)注的內(nèi)容是否足夠有吸引力。
如果選擇重力排序算法,那么就需要考慮該如何選擇參數(shù)保證最后的展示效果。
如果加入不斷壯大的智能排序大軍,那么就需要考慮是否有足夠的技術(shù)實力和產(chǎn)品自制力。
重要的是思考清楚兩個問題:
應(yīng)該展示給用戶什么內(nèi)容?
這些內(nèi)容該怎么排序?