從0到1,基于內(nèi)容的推薦算法的產(chǎn)品設(shè)計(jì)
本文從定義和框架出發(fā),結(jié)合實(shí)際案例,深入淺出地闡述了基于內(nèi)容的推薦算法及其產(chǎn)品設(shè)計(jì)。
一、前言&定義
可能很多和筆者一樣非數(shù)據(jù)或算法科班出身的產(chǎn)品同學(xué)在涉及到需要進(jìn)行內(nèi)容推薦的產(chǎn)品時(shí)無從下手,盡管在網(wǎng)絡(luò)上可搜索到各種算法的基本原理和公式,但或過于專業(yè)或直接呈現(xiàn)最終邏輯,但具體怎么做還是一頭霧水,筆者拋開理論和復(fù)雜的公式,直接從產(chǎn)品出發(fā)設(shè)計(jì)一套最小可行性從0到1的推薦算法能力。
什么是基于內(nèi)容的推薦算法
基于內(nèi)容的推薦:核心思想是根據(jù)推薦物品或內(nèi)容的元數(shù)據(jù),發(fā)現(xiàn)物品或者內(nèi)容的相關(guān)性,然后基于用戶以往的喜好記錄,推薦給用戶相似的物品。
簡(jiǎn)單地理解就是:根據(jù)用戶過去喜歡的內(nèi)容,為用戶推薦和他過去喜歡的內(nèi)容相似的內(nèi)容。
二、算法整體架構(gòu)說明
1. 明確算法目的
我們?cè)谧铋_始做推薦算法時(shí),要清楚初始階段目的:即在保證內(nèi)容質(zhì)量的前提下根據(jù)用戶行為推薦盡可能符合用戶期望的豐富內(nèi)容。
這句話雖然很短,但包含了三個(gè)很重要的關(guān)鍵詞:內(nèi)容的質(zhì)量、內(nèi)容豐富(多元)度和符合預(yù)期。
2. 推薦算法整體邏輯
基于推算的場(chǎng)景,我們很容易發(fā)現(xiàn)推薦邏輯:用戶在線進(jìn)行操作行為時(shí),系統(tǒng)向后臺(tái)發(fā)起用戶數(shù)據(jù)召回請(qǐng)求,然后根據(jù)排序模型形成最終用戶看見的內(nèi)容,最后通過用戶的請(qǐng)求和記錄完善用戶行為,以進(jìn)行后續(xù)的內(nèi)容匹配。常見的推算下圖:
圖片雖然看起有點(diǎn)復(fù)雜,抽絲剝繭就三個(gè)核心:一套內(nèi)容管理后臺(tái)+多個(gè)權(quán)重算法+展示邏輯。
3. 推薦算法產(chǎn)品框架
基于算法邏輯和最小可行性目的,我們可以整理出簡(jiǎn)單的產(chǎn)品框架,如下圖:
很明顯算法推薦公式可以不用立馬就建立一套復(fù)雜的算法模型,只要有基礎(chǔ)的用戶管理、內(nèi)容管理能力,結(jié)合內(nèi)容質(zhì)量權(quán)重和用戶喜好權(quán)重,考慮到去中心化和時(shí)效應(yīng)影響,就可完成在保證內(nèi)容質(zhì)量的前提下根據(jù)用戶行為推薦盡可能符合用戶期望的豐富內(nèi)容。
三、具體算法權(quán)重設(shè)計(jì)
1. 質(zhì)量管理評(píng)分公式
質(zhì)量評(píng)分總得分Score由三大模塊得分加權(quán)計(jì)算得出,其公式如下所示:
(系數(shù)可根據(jù)業(yè)務(wù)情況自行調(diào)整,起始分為100)
其中A、B、C為三大模塊各自得分值。Score得分為三大模塊得分乘以各自對(duì)應(yīng)系數(shù)。
各模塊得分由其多項(xiàng)評(píng)分指標(biāo)及對(duì)應(yīng)系數(shù)加權(quán)計(jì)算得到,此處以A模塊為例:
其中為A模塊下對(duì)應(yīng)的各項(xiàng)指標(biāo)得分,?
為各項(xiàng)指標(biāo)得分所對(duì)應(yīng)的權(quán)重系數(shù)。
A-內(nèi)容流量模塊評(píng)分
內(nèi)容流量為是內(nèi)容對(duì)流量的吸引能力體現(xiàn),初始化的產(chǎn)品建議的核心熱度加權(quán):停留時(shí)間(退出率)>評(píng)論量>點(diǎn)贊量>收藏量>PV/UV>轉(zhuǎn)發(fā)量。下表為案例:
B-內(nèi)容質(zhì)量模塊評(píng)分
主要根據(jù)后臺(tái)內(nèi)容的狀態(tài)進(jìn)行評(píng)斷,在機(jī)審能力未完全搭建以前,本模塊受到人工影響較大。
附:評(píng)分公式
目前對(duì)于內(nèi)容推薦型的評(píng)分算法,推薦貝葉斯平均評(píng)分法作。其公式如下:
其中,n為當(dāng)前內(nèi)容的評(píng)分次數(shù),M為總內(nèi)容平均得分,S為單個(gè)內(nèi)容總得分,C為動(dòng)態(tài)系數(shù)。
單個(gè)內(nèi)容評(píng)分得分 = (總內(nèi)容的平均得分 * C系數(shù)) + 單個(gè)產(chǎn)品的評(píng)分總和) / (當(dāng)前內(nèi)容的評(píng)分次數(shù)+ C系數(shù))
C系數(shù)為每個(gè)內(nèi)容的被評(píng)分的平均次數(shù),即C=所有內(nèi)容被評(píng)論的總次數(shù)/所有內(nèi)容數(shù)量。例如:總共有1000個(gè)文章 一共被評(píng)論了50000次,那C就等于50000/1000=50。
小例:
(貝葉斯平均法評(píng)估示例)
結(jié)論:以貝葉斯平均為依據(jù)的排序更能反應(yīng)真實(shí)的情況,打分次數(shù)多且評(píng)分較高的產(chǎn)品會(huì)更加靠前,打分次數(shù)多評(píng)分較低的產(chǎn)品則會(huì)更加靠后,與單純依據(jù)每個(gè)產(chǎn)品的平均分排序相比,這種結(jié)果更有意義。
C-用戶質(zhì)量模塊評(píng)分
用戶質(zhì)量根據(jù)后臺(tái)人工標(biāo)識(shí)用戶屬性加上其發(fā)帖質(zhì)量2個(gè)維度構(gòu)成。
2. 用戶喜好評(píng)分公式
用戶行為記錄是獲取用戶相關(guān)推薦的主要依據(jù),初期是根據(jù)用戶關(guān)注、瀏覽喜好以及用戶搜索關(guān)鍵詞對(duì)用戶喜好進(jìn)行統(tǒng)計(jì),基本的邏輯如下:
喜好評(píng)分=瀏覽喜好分類*0.6+關(guān)注人內(nèi)容*0.4 +搜素內(nèi)容分類*0.0
(系數(shù)可根據(jù)業(yè)務(wù)情況自行調(diào)整,起始分為100)
舉例說明:
(1)通過用戶的瀏覽記錄,獲得用戶的喜好標(biāo)簽
那么對(duì)于同一分類下的內(nèi)容按照公式增加喜好值。
(2)獲取用戶的關(guān)注用戶,獲得喜好標(biāo)簽
那么對(duì)于關(guān)注用戶下的內(nèi)容按照公式增加喜好值。
(3)如果內(nèi)容1屬于分類A,并且是用戶D創(chuàng)建的,這個(gè)內(nèi)容對(duì)于用戶來說就是兩個(gè)權(quán)重值相加? =查看內(nèi)容分類*0.6+關(guān)注人內(nèi)容*0.4
四、前端展示權(quán)重設(shè)計(jì)
通過質(zhì)量評(píng)分和用戶喜好評(píng)分,我們能得到以內(nèi)容為主。針對(duì)不同用戶的內(nèi)容質(zhì)量和喜好評(píng)分值,那么就可以得到一個(gè)簡(jiǎn)單的推薦邏輯(推薦列表):按照用戶喜好評(píng)分推薦質(zhì)量評(píng)分較高的內(nèi)容,若得分相同則按內(nèi)容創(chuàng)建時(shí)間倒序排列進(jìn)行推薦。
但在實(shí)際推薦中除了保證用戶喜好外,需要嘗試去中心化的內(nèi)容展示模式,所以最終展示的推薦內(nèi)容,應(yīng)該來自三個(gè)模塊:
A、用戶喜好列表:通過用戶喜好評(píng)分,為用戶推薦內(nèi)容評(píng)分質(zhì)量較高的內(nèi)容,這是主要推薦內(nèi)容。
推薦邏輯:先對(duì)內(nèi)容按照用戶喜好值進(jìn)行從高到低的排序,再喜好值A(chǔ)以上的內(nèi)容中依次健康值高于閥值B、閥值C、閥值D的內(nèi)容隨機(jī)推薦,低于閥值D不進(jìn)行推薦。
B、高質(zhì)量非喜好列表:用戶喜好值低于某個(gè)閥值但內(nèi)容流量評(píng)分較高的內(nèi)容。
C、初始流量推薦列表:通過用戶喜好評(píng)分,為用戶推薦內(nèi)容質(zhì)量審核過但流量不高的內(nèi)容。
老用戶算法為:Score=A*0.7+B*0.2 +C*0.1(系數(shù)可根據(jù)業(yè)務(wù)情況自行調(diào)整)
其中0.7、0.2、0.1位A、B、C為三大模塊初始系數(shù),它受到時(shí)間效應(yīng)變化。
新用戶冷啟動(dòng)的算法為:ScoreL= B*0.9 +C*0.1
其中B模塊直接調(diào)用流量池健康評(píng)分。
注意:喜好評(píng)分和健康值相同時(shí),隨機(jī)選取加載量,在同一輪加載過程中同一信息需要剔重。
1. 時(shí)間效應(yīng)計(jì)算方式
為了進(jìn)一步去中心化,以及推薦準(zhǔn)確性,根據(jù)熱度冷卻公式:
本期系數(shù) = 上期系數(shù) x exp(-(冷卻系數(shù)) x 間隔的小時(shí)數(shù))。T為初始熱度,此處默認(rèn)為0.7,
為上一期溫度,
為冷卻系數(shù),為間隔小時(shí)數(shù)。
五、關(guān)于A/B測(cè)試
推算推薦更加需要進(jìn)行A/B test,因?yàn)槲覀冊(cè)诔跏蓟倪^程中,具體的權(quán)重設(shè)置是否合理是無法得知的,但是能保證的時(shí)沒有垃圾推薦的流出,所以A/B測(cè)試結(jié)果對(duì)優(yōu)化權(quán)重格外重要,將用戶分流至對(duì)應(yīng)方案內(nèi),在保證每組用戶特征相同的前提下,根據(jù)用戶的真實(shí)數(shù)據(jù)反饋,幫助產(chǎn)品決策。當(dāng)然隨著測(cè)試樣本變多對(duì)技術(shù)架構(gòu)考驗(yàn)越大。
六、尾聲
正如開頭所說本文的算法是剝離于內(nèi)容推薦算法理論公式,根據(jù)實(shí)際產(chǎn)品出發(fā)進(jìn)行的設(shè)計(jì),其核心是保證內(nèi)容質(zhì)量的前提下根據(jù)用戶行為推薦盡可能符合用戶期望的豐富內(nèi)容,具有相當(dāng)?shù)木窒扌?,它適用于沒有完善的算法團(tuán)隊(duì)和進(jìn)行最小可行試驗(yàn)的產(chǎn)品。希望文章對(duì)和我一樣沒有算法基礎(chǔ)的同學(xué)帶來幫助和啟發(fā),野路子的產(chǎn)品悲哀。歡迎大家交流。
本文由 @jingtianz 原創(chuàng)發(fā)布于人人都是產(chǎn)品經(jīng)理。未經(jīng)許可,禁止轉(zhuǎn)載
題圖來自Unsplash,基于CC0協(xié)議
請(qǐng)問幾個(gè)問題:1.如果一個(gè)用戶給自己作品重復(fù)評(píng)論,那么這個(gè)評(píng)論數(shù)量累計(jì)起來會(huì)不會(huì)影響作品的權(quán)重,如果其他用戶給自己作品重復(fù)評(píng)論又怎么計(jì)算作品的權(quán)重
2.怎樣算是完成了一個(gè)分享流程,對(duì)于web來說。
想請(qǐng)問一下,所以離線部分的加權(quán)模型=內(nèi)容質(zhì)量評(píng)分嗎,數(shù)據(jù)應(yīng)該多久更新一次呢
一樣的野路子。。最近在做用戶推薦關(guān)注,看完蠻有啟發(fā)!
按照你第一個(gè)表格如果點(diǎn)贊數(shù)15000那一項(xiàng)得分是多少啊
感恩樓主,寫的很詳細(xì),準(zhǔn)備拿一個(gè)項(xiàng)目簡(jiǎn)單搭一下內(nèi)容推薦了~~:)
有結(jié)果我們可以探討
請(qǐng)教下,去中心化是什么意思?是什么樣的業(yè)務(wù)場(chǎng)景需要去中心化
流量的分發(fā)基于用戶的偏好+內(nèi)容創(chuàng)建者+內(nèi)容質(zhì)量(平臺(tái)設(shè)定自動(dòng)甄別+人工干預(yù)),而不是單純的依靠?jī)?nèi)容創(chuàng)建者或平臺(tái)的權(quán)重,
嗯嗯,謝謝解釋
我想問問這個(gè)評(píng)分的概念,初始100,根據(jù)加分、減分項(xiàng),要是這個(gè)視頻非常好的話,這個(gè)分?jǐn)?shù)會(huì)沒有上限嗎?比如到10000分
您好,本期系數(shù)T和質(zhì)量評(píng)分總得分Score有什么關(guān)系嗎?或者這個(gè)時(shí)間效應(yīng)怎么運(yùn)用進(jìn)去的
可以的
清晰明了,學(xué)習(xí)了
這個(gè)指標(biāo)權(quán)重和權(quán)重計(jì)算是什么關(guān)系呀
比如 訪問數(shù)占整個(gè)權(quán)重的10%(權(quán)重值為10分),總的UV大于20則獲得這個(gè)10%的100%,大于10低于20則獲得80%。如果一個(gè)內(nèi)容的訪問量大于20,這個(gè)內(nèi)容的訪問數(shù)權(quán)重得分就是10*100%=10分,同理如果是后者這個(gè)權(quán)重值只有 10*80%=8分
100%是給10分,80%是給8分,那么120%是給12分?-20%是給-2分?
QAQ看完的第一感受:我TM數(shù)學(xué)還得再修個(gè)幾年!
說的是抖音推薦算法么
個(gè)人覺得內(nèi)容類都適合,但是比較簡(jiǎn)單粗暴
明明咱們都是九年義務(wù)教育,你咋那么優(yōu)秀?
構(gòu)思有了,就可以去畫原型了,對(duì)了原型工具我覺得axure強(qiáng)大,但是上手好難,其他的邏輯也比較復(fù)雜 /哭唧唧,用著墨刀還挺順手,之前想過找人做,結(jié)果要價(jià)太高,逼著自學(xué)墨刀,一個(gè)星期就順利畫出了 /樂呵呵