推薦算法入門:避開公式,產(chǎn)品經(jīng)理了解這些就夠了
編輯導語:推薦算法,其實早在1992年就提出來了,但是火起來卻是最近這些年的事情,因為互聯(lián)網(wǎng)的爆發(fā),有了更大的數(shù)據(jù)量可以供我們使用,推薦算法才有了很大的用武之地。對產(chǎn)品經(jīng)理來說,了解推薦算法也是其工作內(nèi)容之一,那么應(yīng)該從哪里入門呢?本文作者為我們進行了分析總結(jié)。
8月28日,商務(wù)部發(fā)布了一則公告《中國禁止出口限制出口技術(shù)目錄》,第 45 條這次調(diào)整的內(nèi)容,增加了多項目前最熱門的技術(shù),其中就提到了:個性化推送服務(wù)。
眾所周知,這次調(diào)整是有意針對Tik Tok的出售風波,昆士蘭科技大學 ( Queensland University of Technology ) 研究 Tik Tok 的研究員 Bondy Valdovinos Kaye 說:” 我個人認為,如果沒有推薦算法,Tik Tok 就不會是 Tik Tok”。
從一定程度上可以說明,正是推薦算法成就了字節(jié)跳動的今天,作為當今內(nèi)容型產(chǎn)品的“標配”,不管是業(yè)務(wù)需要還是拓寬視野,了解業(yè)界常用的推薦算法及其應(yīng)用總是很有必要的。
一、協(xié)同過濾推薦算法
協(xié)同過濾推薦算法(Collaborative Filtering recommendation)是目前最流行的推薦算法。
其算法原理通俗來說就是利用那些興趣相同的用戶群體,來為目標用戶推薦其感興趣的信息,而協(xié)同過濾算法又大致可以分為基于用戶(User-based)和基于物品(Item-based)兩種協(xié)同過濾。
1. 基于用戶的協(xié)同過濾算法(User-based):
如果說某些用戶群體對某類物品的評分是相似的,那么我們可以認為這些用戶屬于相似用戶,基于用戶的協(xié)同過濾推薦算法便是通過找到與目標用戶相似的其他用戶,然后通過其他相似用戶對某類物品的評分來預測目標用戶對該物品的評分,并以此為依據(jù)進行推薦。
如果用戶A喜歡項目A和項目C,用戶C同樣喜歡項目A與項目C,那么用戶A與用戶C可以被判定為相似用戶,根據(jù)用戶C喜歡項目D這一情況,可以推斷出用戶A喜歡項目D的概率較大,因此可以將項目D推薦給用戶A。
基于用戶的推薦算法需要計算用戶間的相似度矩陣,所以當用戶數(shù)量變化很大的時候,每次都要重新計算,比較耗時,可拓展性較差。
2. 基于物品的協(xié)同過濾算法(Item-based):
很多電商網(wǎng)站中的商品相對于用戶數(shù)量來說,變化是相對穩(wěn)定的,所以物品的相似矩陣相比用戶的相似矩陣來說要穩(wěn)定很多。
基于物品的協(xié)同過濾算法思想就是根據(jù)所有用戶的歷史偏好來計算推薦物品之間的相似性,然后把與用戶喜歡的物品相似的其他物品推薦給用戶。
如果項目A與項目C同時被多個用戶(用戶A與用戶C)喜歡,那么可以認為項目A與項目C是相似項目,便可以把它推薦給同樣喜歡項目A的用戶D。
協(xié)同過濾類推薦算法特點:
- 不需要對推薦內(nèi)容本身做太多了解便可以完成推薦工作;
- 能夠挖掘用戶的潛在興趣;
- 需要依賴大量用戶對項目的評分矩陣,存在新用戶與新物品的冷啟動問題。
二、基于內(nèi)容的推薦算法
基于內(nèi)容的推薦系統(tǒng)最早來自于對協(xié)同過濾算法的改進,協(xié)同過濾算法只考慮到了用戶對于物品的打分,而沒有考慮物品本身所具備的多種屬性特征,比如該物品是一篇文章,那么它的屬性特征就有作者、標題、類別等。
而基于內(nèi)容的推薦則是利用這些特征來進行推薦,該推薦方法會提取物品中的內(nèi)容特征,然后與用戶的興趣標簽進行匹配,匹配度高的推薦物品就可以推薦給相應(yīng)用戶:文本A的特征詞為教育、大學;文本C的特征詞為教育、高校。
那么可以認為文本A與文本C為相似文本,用戶A閱讀了文本A以后便可認為其對教育類的文章感興趣,從而將文本C推薦給用戶A。
基于內(nèi)容類推薦算法特點:
- 用戶之間保持獨立性,推薦結(jié)果與他人的行為無關(guān);
- 新項目可以立即得到推薦,新的項目加入到系統(tǒng)中時,只要擁有標簽,便可以和用戶的興趣模型進行匹配完成推薦;
- 新用戶冷啟動問題,由于新的用戶沒有歷史行為記錄,會存在冷啟動問題,這也是為什么很多產(chǎn)品第一次登陸時都會讓用戶選擇自己感興趣的內(nèi)容分類,就是為了快速對用戶建立興趣標簽。
三、推薦算法如何被應(yīng)用?
目前的主流推薦算法,大多可以歸類為以上的兩種策略,然而,在實際應(yīng)用中只使用一種推薦策略是沒有辦法滿足生產(chǎn)環(huán)境的需求的,多是將兩者混合使用。
這里我用B站的推薦Feed流來簡單舉例(真實的工業(yè)級推薦模型要更為復雜),其中很多的推薦內(nèi)容很大程度上都是通過基于內(nèi)容的方法產(chǎn)生的。
這是充分利用到基于內(nèi)容的推薦策略精細化標簽描述的優(yōu)勢:當用戶觀看過感興趣的視頻后,往往更傾向于繼續(xù)觀看類似的內(nèi)容。
比如下圖中,當我在觀看過幾次iphone12的測評視頻后,系統(tǒng)應(yīng)該會更傾向于向我繼續(xù)推薦iphone12相關(guān)的視頻;但同時我們也發(fā)現(xiàn),在Feed流中同樣還存在著一些其他類型的視頻內(nèi)容,并且這些內(nèi)容與我的觀看歷史關(guān)聯(lián)度并不高,這又是為什么呢?
這里自問自答一下,這是因為如果只為用戶推薦完全相似的內(nèi)容,會發(fā)生推薦內(nèi)容越推越窄的現(xiàn)象,這會大大降低用戶觀看內(nèi)容時的新鮮感。
這個時候,便可以利用協(xié)同過濾算法來拓寬推薦的范圍,于是在推薦Feed流中,我們常常既能看到與自己歷史觀看內(nèi)容類似的視頻,也能看到一些新奇的新內(nèi)容(當然也會有部分新內(nèi)容是通過人工干預的方式出現(xiàn)在你的Feed流中的)。
到這里,我們大致知道了我們平時所觀看的推薦Feed流中的視頻的。
四、召回與排序
像B站這樣的大型內(nèi)容平臺,內(nèi)容的數(shù)量是海量的(千萬級甚至更多),所以在為用戶進行內(nèi)容推薦時往往會面臨一個問題,即如何從海量內(nèi)容中快速尋找用戶感興趣的內(nèi)容,這個時候就需要用到召回與排序了:
1. 召回
召回階段的主要職責是:從千萬量級的候選物品里,采取簡單模型將推薦物品候選集合快速篩減到千級別甚至百級別,這樣將候選集合數(shù)量降下來,之后在排序階段就可以上一些復雜模型,細致地對候選集進行個性化排序。
在召回階段,工業(yè)界通用做法是多路召回,即使用不同的推薦策略來進行多路勁召回,每一個路徑對應(yīng)一個推薦策略,如下圖所示:
在基于內(nèi)容標簽的策略中,又被業(yè)界分了為兩種,即長期內(nèi)容標簽與實時內(nèi)容標簽:
1)實時內(nèi)容標簽
多在近線部分完成,主要目的是實時收集用戶行為反饋,并選擇訓練實例,實時抽取拼接特征,并近乎實時地更新在線推薦模型。這樣做的好處是,用戶的最新興趣能夠近乎實時地體現(xiàn)到推薦結(jié)果里。
2)長期內(nèi)容標簽
則在離線部分完成,通過對線上用戶點擊日志的存儲和清理,整理離線訓練數(shù)據(jù),并周期性地更新推薦模型。對于超大規(guī)模數(shù)據(jù)和機器學習模型來說,往往需要高效地分布式機器學習平臺來對離線訓練進行支持。
需要注意的是,由于在召回階段需要處理的數(shù)據(jù)集極其龐大。
所以需要盡量選擇簡單的模型和使用盡量少的特征,這樣才可以快速有效的將內(nèi)容視頻的數(shù)量降下來,之后在排序過程中就可以使用一些復雜的模型來進行個性化排序。
2. 排序
由于召回階段使用了不同的召回策略,導致了候選物的評判標準并不是唯一的,所以無法相互比較。
這里便需要使用排序,來對多個召回方法的結(jié)果進行統(tǒng)一打分,從召回層中選出最優(yōu)的TopK,其中需要依靠各種機器學習算法與神經(jīng)網(wǎng)絡(luò)模型來對候選集中的內(nèi)容進行預測打分排序,如WIDE&DEEP,LR+GBDT等。
這里我們來盡量通俗的描述一下機器學習與神經(jīng)網(wǎng)絡(luò)的在推薦中的作用:它們可以在依靠候選物品中大量的特征因子來尋找這些候選物品與用戶之前的潛在聯(lián)系,這里舉一個簡單的例子:
假設(shè)上圖是一個自編碼器推薦模型,它由輸入層、隱藏層和輸出層三個部分構(gòu)成,假設(shè)此時在輸入層中輸入的是一個用戶對的幾個物品的評分向量R。
該評分向量中,含有用戶打過分的數(shù)據(jù)(圖中用黑色部分表示)和用戶沒有打過分的數(shù)據(jù)(圖中用白色部分表示),自編碼器會將輸入層中的向量,通過某些規(guī)則映射到一個隱空間中(編碼過程),然后再從隱空間中將其還原到原來的空間中(解碼過程)。
此時會得另一個用戶評分向量R’,顯然兩個評分向量中的數(shù)據(jù)在經(jīng)過兩次轉(zhuǎn)換以后已經(jīng)截然不同(指黑色部分),但經(jīng)過轉(zhuǎn)換后,在輸出層的評分向量R’中,那些原本沒有被打分的項目(白色部分),這次卻擁有了分數(shù)。
此時我們需要做的就是通過對模型進行不斷的迭代訓練(即不斷調(diào)整編碼與解碼的過程),來最小化兩個評分向量之間的誤差(即黑色部分輸入與輸出之間的誤差)。
當用戶的評分向量與之間的誤差足夠小時,R’中白色部分的評分便是該用戶對這些未打分項目的預測值。
整個過程就像是一個黑盒,盡管過程不具備解釋性,結(jié)果卻意外的精準。在拿到侯選物的預測分之后便能以此為依據(jù)來進行開始排序,最后再加上一些業(yè)務(wù)規(guī)則如去重、去已讀、加廣告等,展示給用戶:
五、結(jié)語
當然,真實的推薦系統(tǒng)是更為復雜的,這里只是為了方便理解才將其簡化,省掉了很多細節(jié),內(nèi)容也是基于我自己對于推薦系統(tǒng)的理解,如有描述不足的地方,還請大家多多指教,共同進步!
本文由@Kazan 原創(chuàng)發(fā)布于人人都是產(chǎn)品經(jīng)理,未經(jīng)許可,禁止轉(zhuǎn)載
題圖來自Unsplash, 基于CC0協(xié)議
講的很清晰,適合0基礎(chǔ)的小白閱讀
淺顯易懂,深入淺出,贊
分析的很有道理!