推薦策略在圖庫行業(yè)的應(yīng)用
文章從圖庫行業(yè)的產(chǎn)品需求出發(fā),分析了基于內(nèi)容的推薦、協(xié)同過濾推薦、 多臂老虎機(jī)策略、上下文感知推薦和人工規(guī)則推薦,這五種常見的推薦策略具體如何進(jìn)行應(yīng)用,并簡單介紹了ALS算法。推薦對算法推薦模式感興趣的同學(xué)閱讀。
一、背景
以內(nèi)容為主體的產(chǎn)品(應(yīng)用/網(wǎng)站)往往離不開推薦策略,如何在搜索功能之外,將用戶感興趣的內(nèi)容推送到用戶面前,提高內(nèi)容的點(diǎn)擊率、下載率、購買率是當(dāng)前互聯(lián)網(wǎng)行業(yè)一個(gè)非常通用性的問題。
我基于自己在圖庫行業(yè)的工作經(jīng)驗(yàn),以圖庫行業(yè)為示例,簡單說一下推薦策略在圖庫行業(yè)的應(yīng)用。文中重點(diǎn)會講述推薦策略中協(xié)同過濾推薦策略(矩陣分解實(shí)現(xiàn))的落地,并給出常見的推薦策略供大家參考。
二、產(chǎn)品需求
圖庫行業(yè),如何讓用戶快速找到自己心怡的圖片并為止付費(fèi),是一個(gè)行業(yè)內(nèi)重要的話題。第一個(gè)大途徑是搜索,第二個(gè)大途徑則是推薦。本文不討論搜索如何優(yōu)化(召回、排序、行為數(shù)據(jù)反饋),就以圖片推薦為切入點(diǎn),講解圖庫行業(yè)是如何應(yīng)用推薦策略的。
產(chǎn)品需求或者說產(chǎn)品目標(biāo)很簡單,通過一個(gè)推薦策略,把用戶感興趣的內(nèi)容放到他的面前。
三、推薦策略選擇
我所在的公司,在國內(nèi)圖庫行業(yè)算是塔尖的公司,因此實(shí)際積累了大量的用戶行為數(shù)據(jù)(搜索、點(diǎn)擊、下載、收藏),這些數(shù)據(jù)可以應(yīng)用來給用戶推送優(yōu)質(zhì)的內(nèi)容。我們主要選擇的推薦策略有:
- 基于內(nèi)容的推薦
- 協(xié)同過濾推薦(矩陣分解實(shí)現(xiàn))
- 多臂老虎機(jī)策略(Multi-Arm Bandit Strategy)
- 上下文感知推薦
- 人工規(guī)則推薦
1. 基于內(nèi)容的推薦
詳情頁相關(guān)內(nèi)容推薦
在圖片的詳情頁(大圖頁)中,用戶已經(jīng)打開了一張圖片,那么用戶對這張圖片的主題、風(fēng)格可以認(rèn)為是相對滿意的,這個(gè)時(shí)候我們需要推送基于這張圖片的相關(guān)內(nèi)容就有可能命中用戶的需求。
詳情頁內(nèi)容的推薦主要從兩個(gè)方向考慮:
- 同組圖片
- 相似圖
其中,同組圖片滿足的需求場景是:用戶需要成套系的圖片,或者對這個(gè)模特很滿意需要別的動作的場景。在供稿人上傳圖片時(shí),會將同一組場景的內(nèi)容放到一起,行成組圖。這個(gè)可以作為同組圖片的推薦。
相似圖,整體有兩個(gè)方案,一是從視覺層面的相似,二是從內(nèi)容主題上的相似。其中視覺層面的相似有兩個(gè)弊端:
- 對于計(jì)算資源消耗較大,成本較高。
- 兩張圖片過于相似,只有細(xì)微變化,可能不符合用戶的需求。完全相似的畫面內(nèi)容,在質(zhì)量、主題上與原圖重合度、相似度過高。
而基于內(nèi)容主題上的相似,即兩張圖片主體、場景甚至色彩相似,但是不一樣,這個(gè)對于用戶瀏覽中的擴(kuò)展閱讀是非常棒的體驗(yàn)。我們的實(shí)現(xiàn)邏輯,是基于原始圖片的關(guān)鍵詞與圖庫中其他圖片的關(guān)鍵詞比對,計(jì)算相似度(或者重疊率),取出相似度最高的TOP100圖片。
(1)獲取圖片ID及圖片對應(yīng)的關(guān)鍵詞ID(為了防止二義性、解決同義詞、可控性等問題,將關(guān)鍵詞轉(zhuǎn)為關(guān)鍵詞ID進(jìn)行系統(tǒng)性管理)。
(2)遍歷所有圖片,計(jì)算每張圖片和其他所有圖片的關(guān)鍵詞重合度(即A有關(guān)鍵詞a,B是否有關(guān)鍵詞a,然后根據(jù)重合的數(shù)量、重合關(guān)鍵詞在A和B圖關(guān)鍵詞中的占比情況,綜合計(jì)算重合度),以關(guān)鍵詞重合度作為圖片之間的相似度。
(3)取每張圖片相似度最高的TOP100張圖。
(4)以上循環(huán),每天對新入庫的圖跑一次數(shù)據(jù)(確保新入庫圖上線后即可有相似圖推薦)。每月對全量庫中圖跑一次數(shù)據(jù)(保證新入庫的圖可以作為被關(guān)聯(lián)圖關(guān)聯(lián)上)。
(5)數(shù)據(jù)存儲如Redis,在每張圖片詳情頁被訪問時(shí),查詢100張相似圖。
以上整個(gè)方案其實(shí)有兩個(gè)點(diǎn)我們做了重點(diǎn)的優(yōu)化:
- 由于有一些關(guān)鍵詞,非常常見,大多數(shù)圖片都有,無具體對圖片的描述含義,這部分會影響關(guān)鍵詞重合度的計(jì)算,污染相似度數(shù)值。例如:1個(gè)、圖片、畫等。這部分關(guān)鍵詞應(yīng)該進(jìn)行過濾,過濾后再去計(jì)算重合度和相似度。
- 由于同組圖片,在社區(qū)上傳時(shí),關(guān)鍵詞會是一模一樣,這部分會和上面說的同組圖片大部分重合(這類圖肯定相似度最高),會導(dǎo)致推薦位大量圖片重復(fù)。因此解決辦法是,將同組圖、相似圖合并為“推薦圖片”欄目進(jìn)行展示,并且依據(jù)圖片ID去重。
2. 協(xié)同過濾推薦(矩陣分解實(shí)現(xiàn))
猜你喜歡
在給用戶推薦內(nèi)容時(shí),我們設(shè)置了“猜你喜歡”欄目,在圖片首頁。該部分本質(zhì)實(shí)現(xiàn)思路是協(xié)同過濾的推薦邏輯,最終因?yàn)榭紤]到數(shù)據(jù)規(guī)模、計(jì)算性能的問題,采用了矩陣分解(ALS)的實(shí)現(xiàn)方式。
協(xié)同過濾本質(zhì)邏輯是,A用戶下載了a、b、c、d圖,B用戶下載了a、b、c、e、f圖,綜合所有用戶下載記錄的比對,我們認(rèn)為A和B下載的圖重合度較高,即A和B用戶較為相似,那我們認(rèn)為B下載了e、f圖,A還沒下過,所以我們將e、f推送給A,將A下載的d圖推送給B,從而實(shí)現(xiàn)了基于用戶-用戶的協(xié)同過濾。
但是由于整個(gè)網(wǎng)站用戶量級是千萬級,圖片是億級,想要構(gòu)建千萬級×億級的矩陣(并且每個(gè)用戶下載過的圖片肯定總量不大,在千級別,導(dǎo)致這個(gè)矩陣非常稀疏),對于系統(tǒng)的計(jì)算量來說非常巨大,效率很低下(這個(gè)數(shù)據(jù)需要每日計(jì)算一次)。因此直接通過協(xié)同過濾推薦邏輯,將下載視為直接因子來構(gòu)建矩陣實(shí)現(xiàn)圖片推薦,性價(jià)比極低。
綜合考慮,采用了基于模型訓(xùn)練的實(shí)現(xiàn)方式,即矩陣分解,采用了ALS訓(xùn)練算法訓(xùn)練預(yù)測用戶喜好(即推薦圖片) 的ALS模型。通過ALS算法,交替固定用戶因子和圖片因子來最小化重建誤差、求解結(jié)果。通過模型訓(xùn)練,將下載圖片作為重要行為,發(fā)現(xiàn)用戶和圖片之間的潛在因子,通過調(diào)用模型預(yù)測用戶喜好完成圖片推薦。
(1)通過用戶下載日志(業(yè)務(wù)系統(tǒng)&埋點(diǎn)系統(tǒng))獲得用戶ID及對應(yīng)歷史下載圖片ID。
(2)清洗數(shù)據(jù),將錯誤的、為空的數(shù)據(jù)刪除。
(3)數(shù)據(jù)轉(zhuǎn)換,將數(shù)據(jù)的類型進(jìn)行統(tǒng)一。
(4)數(shù)據(jù)加載,數(shù)據(jù)存儲至HBase。
(5)調(diào)取Spark MLlib庫中ALS(Alternating Least Squares)算法訓(xùn)練模型。
(6)存儲訓(xùn)練的ALS模型。
(7)調(diào)用ALS模型,傳入用戶id獲取推薦的100張圖。
(8)遍歷庫中所有有下載行為的用戶id,重復(fù)以上模型預(yù)測過程,存儲推薦圖片ID(和用戶ID關(guān)聯(lián))到HBase。
(9)用戶訪問圖片詳情頁時(shí),通過user_id調(diào)取API接口,獲取推薦圖片IDs,將推薦圖片存入Redis(每日定點(diǎn)清空重置Redis)。
(10)同一用戶當(dāng)日再次訪問網(wǎng)站,直接讀取Redis。
以上方案僅針對歷史有過下載行為的用戶有效,對于無下載行為的用戶無法訓(xùn)練,則直接展示網(wǎng)站在前3日下載最多的圖片。
3. 多臂老虎機(jī)策略(Multi-Arm Bandit Strategy)
搜索結(jié)果排序
這個(gè)地方在本文不詳說,多臂老虎機(jī)策略本質(zhì)上平衡“探索(Exploration)”、“利用(Exlpoitation)”,即給出一些沒有數(shù)據(jù)積累的推薦內(nèi)容來嘗試,同時(shí)給出一些有數(shù)據(jù)積累的好的推薦內(nèi)容來利用。對于搜索圖庫場景是根據(jù)每張圖片被點(diǎn)擊、收藏、下載的概率來調(diào)整圖片推薦的優(yōu)先級(在搜索場景則是排序)。
具體的實(shí)現(xiàn)方式是在每個(gè)關(guān)鍵詞下,圖片被搜索、點(diǎn)擊、收藏、下載數(shù)據(jù)進(jìn)行計(jì)算,通過搜索/下載轉(zhuǎn)化率、曝光/下載轉(zhuǎn)化率、下載絕對值、點(diǎn)擊絕對值、收藏絕對值等計(jì)算圖片在這個(gè)關(guān)鍵詞下的權(quán)重,對用戶數(shù)據(jù)積累較多的,進(jìn)行高權(quán)重展示(排序靠前),即“利用”。
而為了防止強(qiáng)者恒強(qiáng)、弱者無曝光導(dǎo)致排序固化,會以一些比較特殊的方式,在搜索結(jié)果集插入一些沒有數(shù)據(jù)積累的圖片測試用戶反饋,即“探索”部分。
4. 上下文感知推薦
搜索頁的關(guān)聯(lián)專題推薦
在搜索頁,用戶搜索圖片時(shí),根據(jù)用戶的搜索詞,進(jìn)行人工運(yùn)營的圖片專題推薦。
5. 人工規(guī)則推薦
(1)熱門下載圖片推薦
在網(wǎng)站首頁,提供近3日下載得最多的圖片展示,同時(shí)為了防止排序固化強(qiáng)者恒強(qiáng),定期對排序進(jìn)行打亂保證頁面內(nèi)容的更新。
(2)最新圖片
對于入庫時(shí)間最新的圖片,進(jìn)行展示。但是為了保證展示的效果,對圖片內(nèi)容進(jìn)行質(zhì)量分級,僅展示高質(zhì)量的內(nèi)容,并且防止組圖上傳導(dǎo)致圖片重復(fù)度過高,依據(jù)上傳作者進(jìn)行圖片去重。
(3)人工運(yùn)營專題
由運(yùn)營和編輯,根據(jù)臨近的商機(jī)節(jié)點(diǎn),例如節(jié)日、重大事件等,挑選高質(zhì)量的、新上傳的圖片,建立專題,專題在首頁和搜索頁均有曝光展示。
(4)分類導(dǎo)航推薦
也是人工運(yùn)營推薦的一種,推薦思路是根據(jù)用戶的行業(yè)、使用場景等維度,將所有圖片細(xì)分到各個(gè)分類,幫助用戶在不知道怎么組織搜索詞時(shí),可以循序漸進(jìn)的找到自己想要的內(nèi)容。這種方式對于新手用戶體驗(yàn)較好,但是弊端是需要較大量的人工支持。
對于圖片數(shù)量較少的圖庫可以采用這種方式,或者通過機(jī)器+人工的方式幫助分類。通過CLIP模型實(shí)現(xiàn)圖片內(nèi)容識別,從而實(shí)現(xiàn)自然語言搜索后,可以根據(jù)預(yù)先分析好的分類場景便利的批量分類圖片。
四、常用推薦策略腦圖
總結(jié)歸納的一些常用推薦策略,可以參考,不一定非常準(zhǔn)確,很多定義是需要在實(shí)踐中摸索,不同的推薦策略也可以結(jié)合使用。
五、ALS算法概要
本文中用來推薦圖片的ALS算法,一些基本的概念幫助大家快速了解,感興趣的同學(xué)可以擴(kuò)展了解一下,很多的推薦方法、算法、模型都已經(jīng)非常成熟了,條條大路通羅馬,只要明確了用戶的需求自己的目標(biāo),總是能達(dá)到的。
本文由 @Damon 原創(chuàng)發(fā)布于人人都是產(chǎn)品經(jīng)理。未經(jīng)許可,禁止轉(zhuǎn)載
題圖來自Unsplash,基于CC0協(xié)議
該文觀點(diǎn)僅代表作者本人,人人都是產(chǎn)品經(jīng)理平臺僅提供信息存儲空間服務(wù)。
- 目前還沒評論,等你發(fā)揮!