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