最近對(duì)推薦中的長(zhǎng)尾問題/多樣性問題比較感興趣胰苏,最近看了一篇IJCAI-19上錄用的的一篇《Sequential and Diverse Recommendation with Long Tail》的文章泳叠,介紹了如何在序列推薦中來(lái)提升推薦系統(tǒng)的多樣性麻裁,一起來(lái)了解一下。
1硫眨、背景
用戶在訪問推薦系統(tǒng)的某一刻末融, 其興趣往往是單一的,那么如果推薦列表只能覆蓋用戶的一個(gè)興趣點(diǎn)晤锥,而這個(gè)興趣點(diǎn)不是用戶這 個(gè)時(shí)刻的興趣點(diǎn)掉蔬,推薦列表就不會(huì)讓用戶滿意廊宪。反之,如果推薦列表比較多樣女轿,覆蓋了用戶絕大多數(shù)的興趣點(diǎn)箭启,那么就會(huì)增加用戶找到感興趣物品的概率。因此給用戶的推薦列表也需要滿足用戶廣泛的興趣蛉迹,即具有多樣性傅寡。多樣性推薦列表的好處用一句俗話表述就是“不在一棵樹上吊死”。
提升推薦系統(tǒng)多樣性的一種手段是充分利用長(zhǎng)尾商品北救。但大多數(shù)的長(zhǎng)尾商品被曝光的機(jī)會(huì)很少荐操,與用戶交互的次數(shù)也很少,此時(shí)可能推薦模型學(xué)習(xí)不充分導(dǎo)致推薦系統(tǒng)的精度有所損失珍策。因此許多工作中將這部分長(zhǎng)尾物品從訓(xùn)練集中剔除托启,從而也導(dǎo)致了推薦結(jié)果集中在較為熱門的部分商品上。
為了解決上面的挑戰(zhàn)攘宙,本文提出了一種在保留推薦精度的情況下屯耸,提升推薦系統(tǒng)多樣性的方法。一起來(lái)看一下蹭劈。
2疗绣、方法介紹
2.1 問題陳述
這里介紹的場(chǎng)景是topN推薦,下面是本文中使用的一些符號(hào)的定義:
基于上面的符號(hào)链方,最終需要通過(guò)向量sj中對(duì)每一個(gè)物品(不僅包括普通物品持痰,還包括長(zhǎng)尾物品(下文中會(huì)介紹,其實(shí)是長(zhǎng)尾物品聚類集合))的打分進(jìn)行排序祟蚀,選擇top-N進(jìn)行排序工窍。接下來(lái),我們將分別介紹label構(gòu)造前酿、模型結(jié)構(gòu)患雏、損失建模等方面
2.2 label構(gòu)造
假設(shè)一位用戶的行為序列是G1->T2->G3->T4->T5->G6。其中包含三個(gè)普通物品和三個(gè)長(zhǎng)尾物品罢维。由于長(zhǎng)尾物品通常只有很少的用戶交互行為淹仑,因此在訓(xùn)練過(guò)程中往往不能充分訓(xùn)練,通常的做法是直接將其直接剔除肺孵,但本文通過(guò)以下兩個(gè)步驟將其加入到label中匀借。
長(zhǎng)尾物品聚類
首先通過(guò)K均值聚類對(duì)所有的長(zhǎng)尾物品進(jìn)行聚類,并假定聚類個(gè)數(shù)為K平窘。而每個(gè)類別與用戶交互的次數(shù)是類別中每個(gè)物品交互次數(shù)的總和吓肋。
關(guān)于如何進(jìn)行聚類,文中提到是使用長(zhǎng)尾物品的內(nèi)容向量(可能是bag of words瑰艘,也有可能是doc2vec吧是鬼,文章也沒具體細(xì)說(shuō))肤舞。
另外有一點(diǎn),對(duì)長(zhǎng)尾物品進(jìn)行了聚類均蜜,那么在推薦的時(shí)候基于sj也只能選擇一個(gè)具體的類別李剖,文中提到的方法是選擇一個(gè)離該類別質(zhì)心最近的一個(gè)物品,這里就不太明白了囤耳,如果聚類結(jié)果在一段時(shí)間內(nèi)保持不變的話篙顺,那每個(gè)類別推薦的物品不都是同一個(gè)么?這里有點(diǎn)不太理解:
好了紫皇,言歸正傳慰安,通過(guò)聚類后腋寨,我們就可以把原有的用戶行為序列中的長(zhǎng)尾物品替換成其對(duì)應(yīng)的類別聪铺,如下圖:
重定位
好了,那么直接用上面一步所替換得到的行為序列就可以了么萄窜?文中做了進(jìn)一步處理铃剔,大多數(shù)現(xiàn)存的推薦方法,將長(zhǎng)尾物品剔除查刻,因此使用的行為序列大都是G1->G3->G6键兜,為了和這些方法能夠進(jìn)行比較,本文進(jìn)一步對(duì)序列進(jìn)行了處理穗泵,這種方法稱作relocating普气,將長(zhǎng)尾集合從輸入中剔除,使其僅出現(xiàn)在label中佃延,如下圖所示:
此時(shí)的輸入和label示意圖如下:
2.3 基于GRU的推薦
前面主要介紹了對(duì)于label的構(gòu)造過(guò)程现诀,接下來(lái)對(duì)整個(gè)模型結(jié)構(gòu)進(jìn)行介紹,本文采用的是給予GRU的推薦方式履肃,示意圖如下:
可以看到仔沿,模型共有連個(gè)子網(wǎng)絡(luò),一個(gè)網(wǎng)絡(luò)輸入的是物品ID對(duì)應(yīng)的one-hot向量尺棋,第一層全連接相當(dāng)于embedding層封锉,然后對(duì)應(yīng)的embedding輸入GRU層中得到輸出;另一個(gè)網(wǎng)絡(luò)輸入的是物品的內(nèi)容向量膘螟,同樣通過(guò)GRU層得到輸出成福。兩個(gè)子網(wǎng)絡(luò)的輸出拼接后通過(guò)全連接層得到排序得分向量sj。
2.4 損失函數(shù)
接下來(lái)看一下模型是如何訓(xùn)練和預(yù)測(cè)的荆残。首先來(lái)介紹下?lián)p失函數(shù)奴艾,損失函數(shù)如下:
其中:
解釋下上面提到的一些符號(hào):
可以看到,當(dāng)?? 中只含有一個(gè)物品的時(shí)候脊阴,是不是就是我們平常所用的交叉熵?fù)p失函數(shù)握侧,而當(dāng)?? 中包含一個(gè)以上的物品的時(shí)候蚯瞧,雖然不是真正意義上的交叉熵?fù)p失,但可以理解為多個(gè)交叉熵?fù)p失的求和品擎。
再說(shuō)說(shuō)預(yù)測(cè)階段埋合,很簡(jiǎn)單,當(dāng)我們得到向量sj后萄传,選擇得分最高的n個(gè)物品推薦給用戶就可以了甚颂。
3、 模型實(shí)驗(yàn)
最后簡(jiǎn)單說(shuō)一下實(shí)驗(yàn)部分秀菱,主要說(shuō)一下多樣性的評(píng)價(jià)指標(biāo)吧振诬,這個(gè)可能之前接觸的比較少。文中沒有詳細(xì)介紹多樣性計(jì)算方法衍菱,參考的是論文《Learning to recom- mend accurate and diverse items》中提出的方法赶么。
這里的多樣性指標(biāo)并不單純是多樣性,而是多樣性和準(zhǔn)確性之間的一個(gè)平衡脊串,類似于計(jì)算精確率和召回率的F1值辫呻。因此這里,我們需要定義兩個(gè)指標(biāo)琼锋,分別代表準(zhǔn)確性和多樣性放闺,然后計(jì)算F1值。
這里準(zhǔn)確性使用的是MAP(Mean Average Precision)缕坎。簡(jiǎn)單介紹下怖侦。在了解MAP之前,先來(lái)看一下AP(Average Precision), 即為平均準(zhǔn)確率谜叹。
對(duì)于AP可以用這種方式理解: 假使當(dāng)我們使用google搜索某個(gè)關(guān)鍵詞匾寝,返回了10個(gè)結(jié)果。當(dāng)然最好的情況是這10個(gè)結(jié)果都是我們想要的相關(guān)信息叉谜。但是假如只有部分是相關(guān)的旗吁,比如5個(gè),那么這5個(gè)結(jié)果如果被顯示的比較靠前也是一個(gè)相對(duì)不錯(cuò)的結(jié)果停局。但是如果這個(gè)5個(gè)相關(guān)信息從第6個(gè)返回結(jié)果才開始出現(xiàn)很钓,那么這種情況便是比較差的。這便是AP所反映的指標(biāo)董栽,與recall的概念有些類似码倦,不過(guò)是“順序敏感的recall”。
比如對(duì)于用戶 u, 我們給他推薦一些物品锭碳,那么 u 的平均準(zhǔn)確率定義為:
用一個(gè)例子來(lái)解釋AP的計(jì)算過(guò)程:
因此該user的AP為(1 + 0.66 + 0.5) / 3 = 0.72
那么對(duì)于MAP(Mean Average Precision)袁稽,就很容易知道即為所有用戶 u 的AP再取均值(mean)而已。那么計(jì)算公式如下:
再來(lái)看一下多樣性指標(biāo)擒抛,多樣性指標(biāo)定義為推薦結(jié)果至少推薦給用戶一次的物品占所有物品的比例推汽。
好了补疑,本文就介紹到這里了,整體思路還是不錯(cuò)的歹撒,但有些具體的細(xì)節(jié)有待討論莲组!