施韶韻, 王晨陽, 馬為之, 張 敏, 劉奕群, 馬少平
清華大學(xué)計算機系, 北京信息科學(xué)與技術(shù)國家研究中心, 北京 100084
在當今泛信息化時代, 每個用戶不僅是信息的消費者, 同時也是信息的生產(chǎn)者, 信息資源的爆炸式增長不可避免地造成了信息過載問題。為了提升用戶獲取并利用信息的效率, 信息檢索技術(shù)應(yīng)運而生。信息檢索技術(shù)關(guān)系到社會整體的信息處理水平與利用效率, 對信息化社會發(fā)展水平有著重要意義。以搜索引擎為代表的信息檢索是人們主動獲取信息的一種重要方式, 但它依賴于用戶基于明確的信息需求, 檢索系統(tǒng)只能被動地提供信息。推薦系統(tǒng)作為信息檢索的另一個重要發(fā)展方向, 提供了一種系統(tǒng)主動提供信息的方式, 能夠通過對用戶進行側(cè)寫建立用戶畫像, 主動從海量信息中提供最契合用戶偏好的內(nèi)容。這使得用戶可以更高效地獲取信息, 同時也提高了資源利用效率, 從而給內(nèi)容提供者(平臺、公司等)帶來更多效益, 很大程度上緩解了互聯(lián)網(wǎng)信息過載的問題[1]。因此, 個性化推薦算法不僅獲得了工業(yè)界各大公司的關(guān)注, 也是科研領(lǐng)域的研究熱點之一。
在推薦領(lǐng)域的研究中, 受限于平臺、效率等因素,研究者往往無法通過在線評價的方式將算法部署到實際系統(tǒng)上進行對比。因此, 使用系統(tǒng)日志記錄的離線評價方式成為研究者們的主要選擇。在離線評價的設(shè)定下, 研究者往往首先對公開的推薦數(shù)據(jù)(如MovieLens、Amazon)進行預(yù)處理, 劃分出訓(xùn)練、驗證與測試集, 然后在劃分的數(shù)據(jù)集上訓(xùn)練并測試不同的推薦算法, 根據(jù)測試集上的評價指標評估算法間的優(yōu)劣。對于新提出的算法, 能否得到超過基線模型的結(jié)果被認為是衡量有效性的主要途徑。然而個性化推薦涉及到多種不同的場景, 系統(tǒng)日志中可獲得的信息多種多樣, 用戶行為多為隱式反饋且存在許多噪聲, 這使得離線評價時的實驗設(shè)定復(fù)雜多變,存在大量易被忽視卻十分重要的細節(jié)。
實驗細節(jié)決定了實驗的科學(xué)性, 并且可能涉及離線評價的各個階段。比如在數(shù)據(jù)預(yù)處理時相同時間戳的交互怎么排序、數(shù)據(jù)中如果存在已知負例(呈現(xiàn)給用戶但未交互)如何使用、訓(xùn)練時負例的采樣范圍如何設(shè)定、Top-N 排序評測時候選集如何選擇等。這些問題由于學(xué)術(shù)論文的篇幅限制, 大多并不會在論文中顯式地描述。研究者往往根據(jù)自己的理解進行實驗, 這導(dǎo)致不同工作的實驗設(shè)定千差萬別, 不僅難以直接對比不同論文間的實驗結(jié)果, 不少算法本身的結(jié)果也無法復(fù)現(xiàn)。近年來有工作[2]就對推薦領(lǐng)域的可復(fù)現(xiàn)性產(chǎn)生了質(zhì)疑, 在所選的18 篇近期頂級國際會議論文中, 只有7 個方法可以被成功復(fù)現(xiàn)。推薦領(lǐng)域表面上的百花齊放可能隱藏著長時間的停滯不前。Rendle 等人[3]也提出對于基線模型的調(diào)優(yōu)是非常困難的, 基礎(chǔ)的矩陣分解模型經(jīng)過精心調(diào)參后甚至能夠超過大多數(shù)近年來新提出的算法。某些實驗設(shè)定的細節(jié)也可能帶來一定的不公平性, 導(dǎo)致基線模型難以取得較優(yōu)的結(jié)果, 從而得到有誤導(dǎo)性的甚至錯誤的分析與結(jié)論。
這些現(xiàn)象和問題不可避免地對推薦領(lǐng)域的研究帶來了阻礙: (1) 對研究者來說, 選擇合適的基線模型變得越來越困難, 僅通過論文中的描述很難確定作者所采取的實驗設(shè)定是否科學(xué), 不同論文之間的結(jié)果也基本無法對比, 往往只能通過參考代碼復(fù)現(xiàn)的方式確定算法優(yōu)劣, 需要耗費大量時間對他人的方法進行調(diào)優(yōu); (2) 對于研究社群來說, 也很難確定某一個具體任務(wù)上最先進(state-of-the-art)的模型到底是哪一個。在這種環(huán)境下, 有投機想法的研究者會傾向于選擇最近發(fā)表但效果較差的算法作為主要對比對象, 而審稿人往往只根據(jù)對比模型發(fā)表的時間來判斷是否合適。這導(dǎo)致真正有效的模型少有人去對比, 從而得不到相應(yīng)的關(guān)注, 產(chǎn)生劣幣驅(qū)逐良幣的現(xiàn)象。
針對目前推薦系統(tǒng)實驗的上述問題, 本文從數(shù)據(jù)集處理、模型訓(xùn)練、驗證與測試、效果評價等角度, 詳細梳理了推薦算法實驗的一般過程(尤其針對近年來發(fā)展迅速的深度推薦模型), 系統(tǒng)地討論與反思了實驗過程中各個階段需要注意的細節(jié)設(shè)定。對于一些在論文中不常提及的實驗設(shè)定, 我們還在公開的真實數(shù)據(jù)集上進行了實證研究, 并分析了實驗細節(jié)的變化會對模型對比帶來怎樣的影響。通過實驗我們發(fā)現(xiàn), 有些研究者容易忽略的細節(jié), 可能對算法結(jié)果有著出乎意料顯著的影響(比如訓(xùn)練時負采樣是否包括驗證測試集交互的商品)。這種影響在數(shù)據(jù)集規(guī)模較小時, 甚至?xí)?dǎo)致算法間的優(yōu)劣關(guān)系出現(xiàn)變化, 得到誤導(dǎo)性的錯誤結(jié)論?;谶@些實驗與討論, 我們最后總結(jié)形成了推薦系統(tǒng)實驗細節(jié)的指導(dǎo)性總結(jié), 包括可選、建議、必須3 種類別的設(shè)定, 希望能推動研究者形成實驗設(shè)定方面的共識, 更加科學(xué)合理地設(shè)計推薦實驗, 促進推薦研究的健康發(fā)展。
本文剩余部分將按如下結(jié)構(gòu)組織: 第2 章介紹與推薦實驗相關(guān)的工作; 第3 到第6 章分別從數(shù)據(jù)集、模型訓(xùn)練、驗證與測試、評價指標4 個方面回顧推薦系統(tǒng)實驗涉及到的種種實驗細節(jié)及影響; 最后第7 章對全文進行總結(jié)。
在推薦場景下, 輸入的數(shù)據(jù)通??梢员硎緸橐粋€“用戶-商品”矩陣, 其中非空的單元表示觀察到了對應(yīng)用戶對商品的交互, 這里交互可能是商品評分、聽一首歌、點擊一個鏈接、留下評論等等。基于以上輸入, 推薦系統(tǒng)旨在對于給定的用戶和商品,給出一個表示用戶對商品喜好程度的分數(shù)。在較早的推薦領(lǐng)域研究中, 評分預(yù)測(Rating Prediction)是主要的研究任務(wù)。評分預(yù)測任務(wù)下推薦實驗的設(shè)定較為簡單, 典型的評測方式是在隨機劃分出的測試集上計算模型預(yù)測評分與用戶實際評分之間的均方根誤差(RMSE)。為了契合推薦系統(tǒng)的實際應(yīng)用場景,即從海量商品中得到針對用戶的個性化推薦列表,近年來大多數(shù)工作轉(zhuǎn)向采用Top-N 排序任務(wù)對推薦算法進行評價。這種設(shè)定下需要將目標商品和一批候選商品共同排序, 通過 HR(Hit Ratio) 、NDCG(Normalized Discounted Cumulative Gain)等評價指標衡量排序列表的質(zhì)量[4]。Top-N 排序任務(wù)雖然更加符合推薦系統(tǒng)的定位, 但涉及的實驗細節(jié)顯著增多, 特別是隨著深度學(xué)習(xí)的快速發(fā)展, 這些實驗設(shè)定并未在研究者間形成共識, 不同工作的細節(jié)設(shè)定千差萬別, 推薦領(lǐng)域的可復(fù)現(xiàn)性受到了嚴峻的挑戰(zhàn)。
近年來, 陸續(xù)有工作對推薦領(lǐng)域國際頂級會議的論文可復(fù)現(xiàn)性提出質(zhì)疑。Rendle 等人[3]發(fā)現(xiàn)在許多工作中并沒有對基線模型進行深入的調(diào)優(yōu), 研究者會通過有選擇的實驗結(jié)果來彰顯所提出模型的優(yōu)越性。經(jīng)過細致地調(diào)參后, 簡單的矩陣分解模型就能夠超過大多數(shù)近年來提出的新算法。Dacrema 等人[2]嘗試復(fù)現(xiàn)一系列近期推薦算法的結(jié)果, 但能夠成功復(fù)現(xiàn)的僅占非常少的一部分。有些論文要么沒有公開實現(xiàn)代碼, 要么結(jié)果因為某些沒有公開的細節(jié)處理而無法重現(xiàn)。對于能夠重現(xiàn)結(jié)果的論文, 也有很多存在基線模型選擇的問題, 有些理應(yīng)被比較的模型沒有被納入考慮。
基于以上對推薦領(lǐng)域可復(fù)現(xiàn)性的質(zhì)疑, 有工作[5]針對推薦系統(tǒng)離線評測下的Top-N 排序任務(wù), 總結(jié)了評測過程中的不同選擇, 包括數(shù)據(jù)集過濾與劃分、缺失值處理、去重、顯著性檢驗等9 個分歧點, 通過實驗說明了在不同評測設(shè)定的組合下甚至?xí)玫较喾吹慕Y(jié)論, 期望能啟發(fā)研究者們形成統(tǒng)一的評測規(guī)范。此外, 有些工作關(guān)注Top-N 排序時評價指標計算的設(shè)定。由于基于排序的評價對于每個用戶都需要對整個候選商品集合進行排序, 如果商品規(guī)模較大的話會不可避免地帶來效率問題, 因此目前的常見做法是隨機采樣一些用戶沒有交互過的商品(如100個), 將目標商品和這些“負樣例”一同排序, 衡量這101 個候選商品的排序結(jié)果[6-7]。Krichene 等人[8]對基于采樣以及基于全量商品的排序指標計算進行了研究, 發(fā)現(xiàn)基于采樣的評價方式在某些情況可能會導(dǎo)致和全量評測不一致的結(jié)果。并且采樣集合越小算法間指標的差異越小, 當采樣集合特別小時, 所有的評價指標都將退化為AUC, 這對一直以來沿用的基于采樣的排序評測方法提出了挑戰(zhàn)。但同時也有工作提出不同的觀點, Li 等人[9]從理論上分析了HR在采樣和非采樣設(shè)定下的對應(yīng)關(guān)系, 證明存在從采樣指標到非采樣指標的一個映射。
我們的工作延續(xù)了對推薦系統(tǒng)實驗進行反思和討論的研究方向, 但不同于以上工作的是我們關(guān)注更細節(jié)的實驗設(shè)定, 尤其是經(jīng)常不在學(xué)術(shù)論文中提及的, 甚至是研究者不曾注意的細節(jié)設(shè)定, 比如訓(xùn)練時配對樣本(pair-wise)訓(xùn)練負采樣是否應(yīng)當排除驗證測試集交互過的商品。這些細節(jié)往往在研究者搭建系統(tǒng)時會想當然地根據(jù)自己的認知進行實現(xiàn), 卻可能帶來潛在的性能影響, 在進行效果對齊實驗時很難被研究者自行發(fā)現(xiàn)。因此我們通過對此類細節(jié)設(shè)定的總結(jié)與討論, 希望能夠為研究者提供經(jīng)驗性的指導(dǎo)。
近年來, 有越來越多的工作致力于構(gòu)建一個統(tǒng)一的訓(xùn)練評測框架, 使得不同模型能夠在同樣的設(shè)定下進行對比, 希望在工程實踐方面推動研究社區(qū)的建設(shè)。例如早期的LibFM[10]、Librec[11]主要關(guān)注傳統(tǒng)推薦算法, 任務(wù)上以評分預(yù)測為主。隨著深度學(xué)習(xí)在推薦領(lǐng)域的應(yīng)用越來越廣泛, 出現(xiàn)了以O(shè)penRec①https://github.com/ylongqi/openrec[12]、DeepRec②https://github.com/cheungdaven/DeepRec[13]、TFRS③https://www.tensorflow.org/recommenders?hl=zh-cn、NeuRec④https://github.com/wubinzzu/NeuRec、RecBole⑤https://github.com/RUCAIBox/RecBole、ReChorus⑥https://github.com/THUwangcy/ReChorus為代表的深度推薦框架。NeuRec 基于TensorFlow 進行開發(fā), 實現(xiàn)了多種基于神經(jīng)網(wǎng)絡(luò)的推薦算法。RecBole[14]基于PyTorch 進行開發(fā), 不僅實現(xiàn)了多種推薦模型, 還包含了常用的數(shù)據(jù)集以及相關(guān)預(yù)處理的代碼, 形成了一個完整的推薦實驗平臺。ReChorus[15]則以輕量靈活為特點, 用盡可能簡潔的代碼規(guī)定了訓(xùn)練評測的常見范式, 方便研究者快速上手進行模型擴展?;谶@些框架, 研究者可以沿用框架開發(fā)者預(yù)設(shè)的數(shù)據(jù)處理與訓(xùn)練評測流程, 而無需關(guān)注具體細節(jié), 能夠?qū)W⒃谀P偷脑O(shè)計上。此外由于框架的代碼開源, 并且近年發(fā)布的框架大多都支持參數(shù)自動搜索(如 RecBole、ReChorus), 一定程度上緩解了推薦領(lǐng)域的可復(fù)現(xiàn)性問題。
然而這些工作只是根據(jù)開發(fā)者的經(jīng)驗對實驗細節(jié)進行了預(yù)設(shè), 沒有形成指導(dǎo)性的總結(jié), 并且不同框架間的細節(jié)設(shè)定也存在差異。我們則基于實踐經(jīng)驗以及對這些框架的使用情況, 系統(tǒng)地反思與討論了其中涉及到的實驗細節(jié), 幫助研究者以及框架開發(fā)者更科學(xué)合理地設(shè)計實驗。
個性化推薦作為一個在工業(yè)界廣泛應(yīng)用的場景,有大量的真實環(huán)境下的用戶數(shù)據(jù), 許多公司公開了一些實驗數(shù)據(jù)集供科研使用。例如, 比較著名的電影領(lǐng)域公開數(shù)據(jù)集MovieLens⑦https://grouplens.org/datasets/movielens/[16]包含了用戶對電影的五級評分, 按評分數(shù)量分為10 萬、100 萬、1000 萬、2000 萬等多個版本, 每個都包含了電影的名字、年代、類別等信息。較小的版本還包含用戶年齡、性別、職業(yè)等用戶屬性, 是評分預(yù)測的經(jīng)典數(shù)據(jù)集。電商領(lǐng)域的著名數(shù)據(jù)集有圣地亞哥加利福尼亞大學(xué)的McAuley 團隊和亞馬遜公司在2014 年合作公開的Amazon⑧http://jmcauley.ucsd.edu/data/amazon/[17-18]數(shù)據(jù)集, 該數(shù)據(jù)集包含了用戶在亞馬遜購物網(wǎng)站上的大量評分和評論文本, 還提供了大量商品的標簽、圖片、品牌、價格等信息, 是基于評論的推薦模型首選的實驗數(shù)據(jù)集之一。為了便于離線實驗, 發(fā)布者按亞馬遜商品分類提供了多個每個領(lǐng)域下的子數(shù)據(jù)集, 大小各不相同供實驗者使用。之后發(fā)布者還更新了2018 版本的數(shù)據(jù)集⑨https://nijianmo.github.io/amazon/index.html, 提供了更多的商品類別, 更大量的評分和評論數(shù)據(jù)。另外, 每年許多公司和組織都會舉辦推薦系統(tǒng)相關(guān)的競賽,一來為公司提升算法性能提供新思路, 二來促進領(lǐng)域科學(xué)發(fā)展, 同時也會發(fā)布公開的競賽數(shù)據(jù)集。比較著名的競賽有RecSys Challenge, 每年和國際推薦系統(tǒng)頂級國際會議RecSys 聯(lián)合舉辦⑩https://recsys.acm.org/會涉及工作推薦、音樂推薦等實際業(yè)務(wù)場景。除此之外, 還有許多其他例如Yelp?https://www.yelp.com/dataset、Book-Crossing?http://www2.informatik.uni-freiburg.de/~cziegler/BX/、LastFM?https://grouplens.org/datasets/hetrec-2011/, 在此不一一列舉。每個數(shù)據(jù)集包含不同的信息, 有不同的數(shù)據(jù)分布, 研究者們需要根據(jù)具體的研究場景選擇合適的數(shù)據(jù)集進行實驗。
雖然這些公開數(shù)據(jù)集為研究者們提供了評測模型的基準, 但是由于推薦場景的復(fù)雜性, 在不同的細分任務(wù)和研究場景中, 往往會涉及不同的數(shù)據(jù)集劃分方式, 并且每個研究工作處理數(shù)據(jù)集的過程中的細節(jié)也會有所不同。一般來說, 大家把一個交互,即用戶和商品對, 作為一個訓(xùn)練或測試樣本。樣本輸入是用戶和商品的信息, 有時例如序列推薦還包括用戶交互歷史。標簽一般是多級評分, 或是否點擊、購買, 與輸入信息一起構(gòu)成完整的一個樣本。在機器學(xué)習(xí)任務(wù)中, 為了準確地訓(xùn)練和評估模型, 一般會將樣本集合劃分為訓(xùn)練集、驗證集和測試集。訓(xùn)練集用來學(xué)習(xí)模型參數(shù), 驗證集用來調(diào)整模型超參數(shù),測試集用來測試模型效果。比較常見的劃分方式包括但不限于以下幾種:
(1) 隨機劃分: 隨機劃分是指按一定比例(例如8︰1︰1)隨機將所有樣本劃分為訓(xùn)練集、驗證集、測試集, 或者隨機分為K 折進行交叉驗證。該劃分方式比較適用于評分預(yù)測或點擊預(yù)測任務(wù), 且要求樣本之間關(guān)聯(lián)性不是很強, 模型不依賴于序列信息。例如一些利用協(xié)同過濾做評分預(yù)測的方法[19-21], 一般使用矩陣分解填充和估計用戶商品矩陣中的未知元素, 而矩陣中元素沒有時間依賴關(guān)系, 可以使用這樣的劃分方式。而現(xiàn)有許多推薦算法依賴于用戶交互歷史序列, 如此劃分有可能造成測試集信息在訓(xùn)練集中泄露。例如某用戶的兩個交互, 時間靠前的被劃分到了測試集, 時間靠后的被劃分到了訓(xùn)練集(如圖1 所示), 訓(xùn)練集樣本對應(yīng)的歷史交互序列可能包含了測試集交互樣本, 使得信息泄露, 模型如果建模了交互序列會使得測試效果偏高。
圖1 數(shù)據(jù)集劃分方式示意Figure 1 Illustration of dataset division
(2) 按時間劃分: 對于建模了交互序列或是時間敏感的任務(wù), 例如新聞推薦場景下許多新聞有時效性, 按時間節(jié)點劃分數(shù)據(jù)集是一個比較常用的方式[22-23]。例如對于一個有時間跨度10 天的數(shù)據(jù)集,可以取最后一天的數(shù)據(jù)作為測試集, 倒數(shù)第二天的數(shù)據(jù)作為驗證集, 其余作為訓(xùn)練集(如圖1 所示)。這樣和真實線上環(huán)境比較接近, 在訓(xùn)練時模型完全無法獲得未來時刻的信息。但該劃分方式不能保證驗證或測試集中的用戶一定有正向交互, 會對Top-N排序任務(wù)的評測帶來一定影響。并且容易帶來冷啟動問題, 因為每天系統(tǒng)中都會產(chǎn)生新的用戶和商品,那么會有一些用戶和商品只在最后的一段時間出現(xiàn)過而不在訓(xùn)練集中, 構(gòu)成冷啟動用戶或商品。根據(jù)具體研究課題是否考慮冷啟動問題, 可以選擇性去除這一部分用戶和商品。
(3) 用戶交互序列留一劃分: 另一個比較常用的方式是按用戶交互序列進行留一劃分。對于每一個用戶, 將其最后一個正交互(及其時間之后的負向交互)作為測試樣本, 倒數(shù)第二個正向交互(及其時間之后且在最后一個正樣本之前的負向交互)作為驗證集樣本, 其余為訓(xùn)練集[6-7,24](如圖1所示)。根據(jù)是否研究冷啟動問題, 可以考慮保證用戶的前N 個正向交互一定在訓(xùn)練集, 這樣可以保證在驗證和測試階段出現(xiàn)的用戶一定在訓(xùn)練集中出現(xiàn)過。對于特別大的數(shù)據(jù)集, 為提升驗證和測試效率, 可以限制驗證測試集中的用戶數(shù)。該方法與按時間劃分幾點不同: 保證驗證和測試集中的用戶有正向交互, 比較適用于Top-N 排序任務(wù)的評測; 每個用戶在驗證和測試集中最多只會出現(xiàn)一次, 削弱了高頻用戶對測試結(jié)果的影響。而按時間劃分可能會使得測試集中高頻用戶占比很高, 模型更偏向高頻用戶; 訓(xùn)練集和驗證、測試集的時間跨度可能交叉, 適用于不那么對時間敏感或是新商品不多的場景, 否則可能在訓(xùn)練階段已知了最后時段新出現(xiàn)的商品或熱點, 有泄露信息的風險。
其中, 對于后兩種劃分方式, 一般在預(yù)處理數(shù)據(jù)集時, 需要對交互記錄按時間戳排序。值得注意的是, 盡量使用穩(wěn)定排序保持數(shù)據(jù)集原有的交互順序。因為由于日志記錄問題, 對某個用戶的多個交互歷史, 可能出現(xiàn)時間戳相同的情況。時間戳相同時, 日志中記錄的順序可能由其他因素影響, 涉及展現(xiàn)位置、曝光順序等信息, 保留日志原序更接近真實展現(xiàn)順序。
綜上所述, 以上幾種常用數(shù)據(jù)集劃分方式各有優(yōu)劣, 應(yīng)在具體任務(wù)和場景下選擇合適的劃分方式,減少實驗偏差。
本文主要使用的數(shù)據(jù)集有兩個, 分別是MovieLens 100k(下文縮寫為 ML100k)和 RecSys Challenge 2017(下文縮寫為RecSys2017)數(shù)據(jù)集。其中ML100k 是一個MovieLens 系列中較早發(fā)布的經(jīng)典數(shù)據(jù)集, 一共包含了一萬個用戶對電影的1~5 級的評分, 還有少量用戶和商品特征字段, 且較為稠密, 多年來被許多研究工作使用過。RecSys2017 是2017年在RecSys Challenge上發(fā)布的公開數(shù)據(jù)集, 是招聘求職網(wǎng)站Xing①https://www.xing.com/整理發(fā)布的工作推薦數(shù)據(jù)集。該數(shù)據(jù)集數(shù)據(jù)量較大, 用戶和商品都有大量特征字段,且交互記錄中包含展現(xiàn)但用戶未交互的信息。兩個數(shù)據(jù)集部分信息見表1。
表1 本文數(shù)據(jù)集信息Table 1 Information of dataset
評分預(yù)測和點擊預(yù)測的實驗設(shè)定較為簡單,本文不作過多討論, 而是關(guān)注于Top-N 排序任務(wù)對設(shè)定。因此, 本文對每個數(shù)據(jù)集按用戶序列使用留一法劃分數(shù)據(jù)集。對于ML100k, 保證訓(xùn)練集中有至少有五個正向交互, 對于RecSys2017 保證訓(xùn)練集中至少有一個正向交互。對于ML100k, 默認用戶所有評分過的商品都屬于正向交互, 沒有已知的負向交互(顯式負樣本), 所有未交互記為負向(隱式負樣本)。除此之外, 為了研究顯式負樣本的在訓(xùn)練和測試過程中的使用對模型效果的影響,本文對ML100k 數(shù)據(jù)集另作了轉(zhuǎn)換, 將用戶評分大于3 的交互認為是用戶顯式表達喜歡, 屬于正向交互, 用戶評分小等于3 的交互為認為是用戶表達不喜歡, 為顯式負樣本, 其余為隱式負樣本(記該轉(zhuǎn)化后的數(shù)據(jù)集為ML100k01)。劃分后的數(shù)據(jù)集信息見表2。
表2 本文數(shù)據(jù)集劃分Table 2 Information of dataset division
本文實驗任務(wù)為Top-N 排序任務(wù), 在驗證和測試集中, 每個用戶有一個正向交互, 與所有非正向交互(包括已知負向交互和未交互)夠成候選商品集合。要求模型對候選集合中每個商品打分, 以測試正向交互在候選集合中的排序位置, 評價指標為HR@K 和NDCG@K。但對于有些數(shù)據(jù)集, 例如RecSys2017, 商品數(shù)量過多, 全量商品評測代價太大, 因此對于RecSys2017 默認從非正向中采樣1000個構(gòu)成候選集。已有工作驗證采樣1000 個商品與在全量商品上評測, 對模型效果優(yōu)劣的評價基本一致[8-9]。對于ML100k 默認取全部非正向交互, 有不同處理會在對應(yīng)實驗中做具體說明。
模型訓(xùn)練過程是指利用訓(xùn)練集的樣本學(xué)習(xí)模型參數(shù), 它決定了模型在使用過程中的實際預(yù)測效果。為探討不同的實驗設(shè)定對不同類型推薦模型的影響,本文選擇了3 種不同的推薦模型:
(1) MostPopular: 推薦候選集合中最流行的商品,非個性化推薦。最簡單的推薦算法之一, 可以作為參考基準, 了解在某個設(shè)定下簡單的推薦算法可以取得的效果。
(2) BPRMF[25]: 基于矩陣分解的經(jīng)典協(xié)同過濾模型, 最簡單的個性化推薦算法之一。模型為每個用戶和商品都存儲一個向量, 通過向量點乘表示用戶對該商品的偏好得分。
(3) GRU4Rec[26]: 基于循環(huán)神經(jīng)網(wǎng)絡(luò)的序列推薦方法, 最簡單的序列推薦深度模型之一。模型輸入為一個用戶的歷史交互序列, 用循環(huán)神經(jīng)網(wǎng)絡(luò)建模后表示成用戶偏好向量, 與商品向量點乘作為偏好得分。
這3 種方法分別為非個性化推薦、協(xié)同過濾、序列推薦模型的典型代表, 且沒有使用用戶和商品屬性特征。
模型訓(xùn)練方式是指模型輸入樣本的方式以及計算損失函數(shù)的方法。不同的訓(xùn)練方式有不同的側(cè)重,適用于不同的任務(wù)。推薦場景中較常用的訓(xùn)練方式有兩種: 單樣本(point-wise)訓(xùn)練和配對樣本(pairwise)訓(xùn)練, 如圖2 所示。
4.1.1 單樣本訓(xùn)練
這種訓(xùn)練方式與一般的回歸、分類實驗類似, 訓(xùn)練集由多個獨立的樣本組成, 每一輪訓(xùn)練包含的樣本無變化, 訓(xùn)練目標是優(yōu)化模型參數(shù)使得對每一個樣本預(yù)測值都盡可能準確。該訓(xùn)練方法常用在評分預(yù)測或點擊預(yù)測任務(wù)中。評分預(yù)測希望對每個單一樣本的預(yù)測值都盡可能接近已知評分。點擊預(yù)測希望模型對每個樣本, 即用戶商品對, 能夠準確預(yù)測其是否點擊。
如果用 yi表示第i 個樣本的標簽(比如1~5 的評分,或者表示點擊與否的0/1), 用y?i表示模型預(yù)測的分數(shù),評分預(yù)測中經(jīng)常使用iy 和?iy 間的均方根誤差(Root Mean Square Error, RMSE)作為損失函數(shù)進行訓(xùn)練:
當標簽iy 為0/1 時(如是否點擊), 除了RMSE 外,還經(jīng)常采用二分類交叉熵(Binary Cross Entropy, BCE)損失函數(shù)進行訓(xùn)練:
4.1.2 配對樣本訓(xùn)練
這種訓(xùn)練方式對于每一個正樣本, 會采樣一定數(shù)目(通常采樣一個, 也可以采樣多個)的負樣本與其匹配。訓(xùn)練中每一輪與正樣本匹配的負樣本可能不同。訓(xùn)練目標是優(yōu)化模型參數(shù)使得在每一對(組)正負樣本中, 正樣本的預(yù)測值要盡可能大于負樣本。由于該方法更加關(guān)心正樣本與負樣本之間預(yù)測值的大小關(guān)系, 因此常用在排序任務(wù)中。例如Top-N 推薦任務(wù)中, 理想情況下需要正樣本預(yù)測值比負樣本大, 排在負樣本前面即可, 而不在乎其預(yù)測值的絕對大小、是否接近0 或1, 正樣本負樣本的預(yù)測值都可以很大或很小。
配對樣本訓(xùn)練最有代表性的是貝葉斯個性化排序(Bayesian Personalized Ranking, BPR)損失函數(shù), 通過優(yōu)化對于不同用戶正樣本得分高于負樣本的似然概率來達到優(yōu)化排序的目標:
其中k 表示對每個正樣本負采樣的個數(shù), j 索引了每個負樣本,表示模型對負樣本的預(yù)測分數(shù)。另一種方式是采用交叉熵(Cross Entropy, CE)損失函數(shù),使用softmax 得到正樣本和所有負樣本的概率分布,最大化正樣本對應(yīng)的概率:
雖然 LBPR+和 LCE都能夠處理多個負樣本的情況,但簡單的負樣本對梯度幾乎沒有影響, 反而因為對負樣本個數(shù)做平均削弱了真正有價值負樣本對梯度的貢獻。因此有工作[27]提出BPR-max 損失函數(shù)對不同負樣本進行加權(quán):
實驗證明隨著負樣本數(shù)量的增加, 引入權(quán)重的LBPR-max顯著優(yōu)于 LBPR+和 LCE。
綜上所述, 在進行配對樣本訓(xùn)練時, 一方面可以采用 LBPR, 所有模型都只采樣一個負樣本進行對比; 另一方面如果采樣多個負樣本的話, 應(yīng)當優(yōu)先使用負樣本加權(quán)的 LBPR-max。本文主要關(guān)注于Top-N推薦任務(wù), 更關(guān)心排序, 因此使用配對樣本訓(xùn)練方式。并且若非特殊說明, 訓(xùn)練時每個正樣本配對采樣一個負樣本, 即采用 LBPR作為損失函數(shù)進行訓(xùn)練。
在推薦實驗中, 負樣本對于訓(xùn)練起著至關(guān)重要的作用。根據(jù)數(shù)據(jù)是否為純隱式反饋, 負樣本可以分為“顯式負樣本”和“隱式負樣本”兩種。對于純隱式反饋的數(shù)據(jù)集, 只有用戶的正向交互被記錄下來, 未交互的樣本可能是用戶不感興趣或者只是沒有出現(xiàn)在用戶的視野里, 這些樣本統(tǒng)稱為“隱式負樣本”。有些數(shù)據(jù)集在此基礎(chǔ)上還記錄了商品是否呈現(xiàn)給用戶的信息(impression), 明確知道哪些樣本是用戶接觸到但沒有交互的, 這些樣本稱為“顯式負樣本”。
一般來說, 推薦系統(tǒng)數(shù)據(jù)集中負樣本的規(guī)模相比用戶交互過的正樣本來說要大很多, 因此通常的訓(xùn)練方式會對負樣本進行采樣。比如pair-wise 的訓(xùn)練方式就會在每一輪訓(xùn)練中對每一個正樣本隨機采樣一個負樣本進行訓(xùn)練。當兩種類型的負樣本同時存在時, 如何對這些負樣本進行采樣就成為一個開放性的問題。此外, 即使只有隱式負樣本, 也涉及在訓(xùn)練時負樣本的采樣范圍是否應(yīng)該包括驗證測試集交互這樣的細節(jié)問題。下面將通過實際數(shù)據(jù)集上的實驗對顯式負樣本的使用以及隱式負樣本的范圍定義進行分析與討論。
4.2.1 如何使用顯式負樣本
為探討訓(xùn)練時采樣顯式負樣本比例對訓(xùn)練結(jié)果的影響, 本小節(jié)在ML100k01 和RecSys2017 兩個數(shù)據(jù)集上固定驗證和測試集(兩數(shù)據(jù)集驗證測試樣本正負比例均取1:1000), 調(diào)整訓(xùn)練時每一輪采樣顯式負樣本的比例(其余采樣自訓(xùn)練集非正樣本), 例如0.1表示以0.1 的概率從用戶的顯式負樣本中采樣訓(xùn)練負樣本。觀察模型效果變化, 結(jié)果如圖3 所示。
圖3 訓(xùn)練時采樣顯式負樣本比例對測試結(jié)果影響(測試正負樣本1:1000), 實線為測試集負樣本從全部負樣本中隨機采樣時的結(jié)果, 虛線為測試集負例優(yōu)先來源自已知顯式負樣本Figure 3 Effects of sampling different amounts of explicit negative training samples (test positive:negative samples is 1:1000). Solid lines are results when negative test samples are randomly sampled from all negative samples. Dash lines are results when negative test samples are firstly taken from known negative samples.
首先, 在本文兩個數(shù)據(jù)集上, 不同模型在訓(xùn)練時采樣不同比例顯式負樣本時, 測試效果變化趨勢基本一致, 總體上采樣越多顯式負樣本效果越差。可能原因是測試和驗證集負樣本是從非正樣本中采樣得來, 大多來自隱式負樣本, 訓(xùn)練時采樣太多顯式負樣本會導(dǎo)致訓(xùn)練和測試的數(shù)據(jù)分布差異過大。
其次, 不同模型的變化曲線略有不同: 首先,MostPopular 只需要計算每個商品訓(xùn)練集中被正向交互的次數(shù), 與負樣本采樣無關(guān), 不受顯式負樣本使用的影響; 其次, BPRMF 在采樣少量(例如0.1 比例)的顯式負樣本, 會比完全不采樣略優(yōu), 可能原因是對BPRMF 來說, 顯式負樣本提供了更準確的矩陣元素信息, 有利于矩陣分解; 然而, 對于GRU4Rec 序列推薦模型, 訓(xùn)練時采樣越多的顯式負樣本, 模型測試效果會持續(xù)下降, 原因可能是GRU4Rec 是基于序列推薦的模型, 其背后的學(xué)習(xí)方法和模型邏輯與BPRMF 有較大差異, 受顯式負樣本的影響程度不同。值得注意的是, GRU4Rec 隨著采樣現(xiàn)實負樣本比例的增大, 效果下降趨勢較BPRMF 更快。在采樣比例為0, 即完全從非正樣本中采樣時, GRU4Rec 明顯優(yōu)于BPRMF, 但隨著采樣顯式負樣本比例增加, 模型優(yōu)劣可能會發(fā)生反轉(zhuǎn), GRU4Rec 會差于BPRMF,甚至兩個模型都會差于MostPopular。這提醒大家在使用顯式負樣本時需要根據(jù)數(shù)據(jù)集和模型情況調(diào)整包括采樣比例在內(nèi)的使用方式。
綜上所述, 本節(jié)的實驗結(jié)果驗證了訓(xùn)練時采樣顯式負樣本對模型測試效果有很大影響, 需要在實驗時引起注意。但該實驗結(jié)果不一定適用所有數(shù)據(jù)集和所有模型, 具體需要根據(jù)實際情況考慮顯式負樣本的使用。
4.2.2 隱式負樣本的范圍定義
當數(shù)據(jù)中只有隱式反饋時, 許多論文會將訓(xùn)練負采樣過程描述為從用戶沒有交互過的商品集合(隱式負樣本)中采樣。如果用I 表示商品集合, Su表示用戶交互的商品集合, 隱式負樣本可以表示為商品集合和用戶交互集合的差集 I Su。然而這里 Su的具體含義可能有歧義, 是只包含訓(xùn)練集中用戶交互過的商品,還是包含數(shù)據(jù)集中用戶交互過的所有商品(包括驗證測試集), 這直接影響了負采樣的范圍。形式化地, 我們用表示用戶在訓(xùn)練集交互過的商品集合, 用表示用戶在驗證測試集交互過的商品集合, 那么有Su=∪。此時兩種負采樣設(shè)定可以描述為:
· exclude: 表示隱式負樣本不包括驗證測試集中交互的商品, 即負樣本采樣范圍是所有數(shù)據(jù)集中已知用戶沒有交互的樣本 I Su;
· include: 表示采樣范圍包括驗證測試集, 假設(shè)訓(xùn)練時用戶對這些樣本的交互未知, 也屬于隱式負樣本, 即 I 。
從實驗科學(xué)性的角度分析, 驗證集和測試集在訓(xùn)練階段對模型應(yīng)當是透明的, 在exclude 設(shè)定下其實一定程度上泄露了驗證測試的信息。然而測試驗證集交互的商品數(shù)量往往較少, 很難判斷訓(xùn)練負采樣階段剔除這部分商品會對模型效果產(chǎn)生多大程度的影響。因此我們在兩個真實數(shù)據(jù)集上進行了實驗,主要選取的模型選為矩陣分解模型BPRMF 以及利用歷史序列信息的GRU4Rec(MostPopular 不存在訓(xùn)練過程, 沒有負樣本范圍的影響, 但也匯報結(jié)果作為參考), 用NDCG 和HR 作為評價指標,實驗結(jié)果如表3 所示。通過實驗我們主要有以下觀察:
表3 訓(xùn)練時隱式負樣本范圍定義實驗Table 3 Experiments of using different implicit negative training samples
· 不同的隱式負樣本范圍確實會帶來模型性能的變化, 影響的程度與模型類別、數(shù)據(jù)集的規(guī)模和稠密程度都有關(guān)。
· 對于ML100k 這種數(shù)據(jù)規(guī)模較小、用戶交互相對稠密的數(shù)據(jù)集, 負采樣范圍帶來的影響極大,甚至改變了模型間的優(yōu)劣順序。
· 對于矩陣分解模型BPRMF, exclude 設(shè)定下能取得更好的結(jié)果; 對于序列推薦模型GRU4Rec,include 設(shè)定下效果更好。
ML100k 數(shù)據(jù)集本身商品數(shù)量較少, 且用戶平均交互數(shù)量較多, 因此在include 設(shè)定下有較大的可能性采樣到驗證測試集交互的樣本; 而RecSys2017 數(shù)據(jù)集由于其數(shù)據(jù)規(guī)模和稀疏性, 用戶未交互的商品集合較大, 驗證測試集交互的商品相對來說非常少,采樣到的可能性也較小。這解釋了兩種設(shè)定在兩個數(shù)據(jù)集上影響的差異。
對于隱式負樣本范圍對兩種模型的的不同影響,我們認為和模型的特點有關(guān)?;诰仃嚪纸獾腂PRMF 顯式建模了用戶向量, 因此如果測試集的商品作為負樣本在訓(xùn)練時被采樣到, 損失函數(shù)的梯度回傳會使得用戶向量朝遠離測試集商品向量的方向更新, 具有更強的記憶能力, 在測試時遇到這個商品也會給出較低的分數(shù)。而GRU4Rec 作為序列推薦模型, 參數(shù)集中在建模給定序列下的轉(zhuǎn)移關(guān)系。當訓(xùn)練時采樣到驗證測試集中的商品時, 模型感知到的信息是某個給定序列下目標應(yīng)當是用戶實際交互的商品而不是驗證測試集中的商品, 這對于建模序列轉(zhuǎn)移關(guān)系有著正向的影響, 而這個信息在exclude 設(shè)定下是無法被模型捕獲的??偟膩碚f, exclude 設(shè)定下一定程度上泄露了驗證測試集的信息, BPRMF 對這種泄露更敏感, 記憶能力更強, 因此取得了更好的效果; 而GRU4Rec 對這種泄露不敏感, 同時exclude設(shè)定限制了模型本能感知到的信息, 因此GRU4Rec在include 設(shè)定下效果較好。
綜上所述, 在進行模型訓(xùn)練時, 隱式負樣本應(yīng)當依照include 設(shè)定, 采樣負樣本時包含驗證測試集中交互的商品。這樣不僅在實驗科學(xué)性上更為合理,保證了驗證測試集在訓(xùn)練階段對模型的透明, 在真實數(shù)據(jù)集的實驗中這種設(shè)定下的模型優(yōu)劣關(guān)系也更符合一般認知。
模型驗證與測試是指在模型訓(xùn)練之后, 用訓(xùn)練集以外的數(shù)據(jù)測試其效果。其中驗證集一般被用來調(diào)整模型超參數(shù), 模型最終表現(xiàn)優(yōu)劣以測試集結(jié)果為準。
在Top-N 排序任務(wù)下, 驗證測試時正樣本需要和一系列負樣本共同排序得到排序列表來計算評價指標, 這就涉及負樣本如何選擇的問題??傮w來看,一般分為“基于采樣的評測”和“全量評測”兩種方式?!盎诓蓸拥脑u測”會選取一定數(shù)量的負樣本(如100 個)和正樣本一同排序; “全量評測”則把所有商品看作候選集合, 衡量正樣本在所有商品中的排序情況。隨著深度推薦系統(tǒng)的發(fā)展, 出于效率的考慮, 基于采樣的評測成為研究者們的普遍選擇。然而也有工作指出基于采樣的評測可能會帶來和全量評測不一致的結(jié)果, 應(yīng)當使用哪種方式進行評測目前在推薦領(lǐng)域尚無定論。但不管是哪種設(shè)定, 都存在一些論文中不常提及的細節(jié)問題, 下面將分別對這兩種設(shè)定進行分析與討論。
5.1.1 基于采樣的評測
首先, 驗證集和測試集中對每個正樣本, 構(gòu)成排序候選集合采樣的負樣本數(shù)目可以不同。早期的一些工作通常采樣100 個負樣本[6], 然而后來一些學(xué)者通過實驗和理論說明了基于采樣的評價方式, 在采樣數(shù)目較少時可能會出現(xiàn)與真實全量商品集合上評測結(jié)果產(chǎn)生較大偏差[8-9]。作為驗證, 本節(jié)保持與4.2.1 節(jié)相同的設(shè)定, 但是驗證集和測試集正負樣本比例修改為1︰20, 實驗結(jié)果見圖4。與圖3 對比, 可以觀察到: 在評價指標上, 測試負樣本數(shù)目減少后評價指標的絕對數(shù)值有了明顯上升, 這是因為評價集合更簡單了, 正例更容易被排到靠前的位置。并且,在不考慮訓(xùn)練采樣顯式負樣本時(顯式負樣本采樣比例為0), 測試正負樣本比例1︰20時模型優(yōu)劣順序與1︰1000 時有較大不同。在測試正負樣本比例1︰20時, ML100k01 上BPRMF 和GRU4Rec 差別不明顯,甚至在RecSys2017 上, MostPopular 結(jié)果要優(yōu)于BPRMF 甚至接近 GRU4Rec, 而 1︰1000 時GRU4Rec、BPRMF 和MostPopular 有明顯的優(yōu)劣順序。綜合下小節(jié)中全量評測的結(jié)果, 以及前人工作中的實驗[8-9]可知, 測試正負樣本比例1︰1000 時的結(jié)果接近在全量商品集合上評測的結(jié)果, 模型優(yōu)劣順序更接近真實情況。因此驗證集和測試集若采用基于采樣的評測, 應(yīng)至少采樣1000 個負樣本。
其次, 如前文提到, 負樣本有顯式負樣本和隱式負樣本之分, 因此驗證和測試中采樣負樣本時如何使用顯式負樣本對模型結(jié)果也有一定影響。圖3和圖4 中實線為測試集負樣本從全部負樣本中隨機采樣時的結(jié)果, 虛線為測試集負例優(yōu)先來源自已知顯式負樣本, 不夠1000 或20 時再從隱式負樣本中采樣。對比對應(yīng)的實線與虛線可知, 若驗證和測試集合中優(yōu)先來自已知顯式負樣本, 模型結(jié)果相比于全部隨機采樣自負樣本一般更低, 其可能原因是顯式負樣本一般是數(shù)據(jù)平臺已有推薦系統(tǒng)已推薦但用戶不喜歡的商品, 已有推薦系統(tǒng)認為這些商品用戶可能會喜歡,說明這些樣本與正樣本更接近, 是更難的負樣本。
圖4 訓(xùn)練時采樣顯式負樣本比例對測試結(jié)果影響(測試正負樣本1︰20)。實線為測試集負樣本從全部負樣本中隨機采樣時的結(jié)果, 虛線為測試集負例優(yōu)先來源自已知顯式負樣本Figure 4 Effects of sampling different amounts of explicit negative training samples (test positive:negative samples is 1︰20). Solid lines are results when negative test samples are randomly sampled from all negative samples. Dash
最后, 對比測試正負樣本比例1︰1000 與1︰20時的結(jié)果可以發(fā)現(xiàn), 在測試負樣本采樣總數(shù)較少時,加入已知顯式負樣本對測試結(jié)果影響更大, 評價指標下降更顯著。因為顯式負樣本在測試集合全部負樣本中的占比更高, 因此影響更大。在測試正負樣本比例1︰1000 時加入顯式負樣本影響較小, 但最終評價指標更接近全量評測時的結(jié)果。
綜上所述, 在采取基于采樣的評測時, 對每個正樣本應(yīng)至少匹配采樣1000 個負樣本以夠成候選集。對于顯式負樣本可以根據(jù)需要考慮是否優(yōu)先加入候選集進行評測。綜合4.2.1 節(jié)的結(jié)果, 在本節(jié)涉及的數(shù)據(jù)集中, 訓(xùn)練顯式負樣本采樣比例在0~0.1 之間調(diào)整比較合適, 但如果測試顯式負樣本占比更高時也可能需要訓(xùn)練時采樣更多顯式負樣本。
5.1.2 全量評測
近年來, 有越來越多的工作訴諸全量評測來避免采樣帶來的偏置。然而看似簡單直接的全量評測也存在容易忽略的細節(jié)設(shè)定, 具體來說, 我們歸納出3 種全量評測的實現(xiàn)方法:
· all: 直接對所有商品進行排序, 用戶交互過的商品也被當做負樣本。
· allinter: 排序時排除用戶交互過的商品, 即只將用戶沒有交互過的商品作為負樣本。
· allinter+: 在allinter 的基礎(chǔ)上更嚴謹?shù)貙︱炞C集進行特除處理, 認為在驗證集上進行評測時測試集未知, 將測試集中以及沒有交互過的商品作為負樣本, 對于測試集的評測和allinter等同。
all 和allinter 兩種方法的本質(zhì)區(qū)別在于是否將已知用戶交互過的商品從候選集合中“隱掉”,allinter+則對“交互過的商品”有更細致的定義?,F(xiàn)在采用全量評測的工作往往并不會詳細說明具體采取的哪種設(shè)定, 即使都在同一個數(shù)據(jù)集上進行全量評測的兩個工作有時也無法對比結(jié)果。為了說明不同方法之間的效果差異, 我們在真實數(shù)據(jù)集上進行了對比實驗。由于RecSys2017 商品數(shù)量太大全量評測較為困難, 我們在ML100K上進行實驗, 模型除了BPRMF 和GRU4Rec 外還包括了不需要參數(shù)訓(xùn)練的MostPopular, 來觀察評測設(shè)定本身帶來的影響。實驗結(jié)果如表4 所示。
表4 全量評測不同方法對比Table 4 Comparison of evaluation methods on all items
通過實驗我們主要有以下觀察:
· all 設(shè)定下的排序任務(wù)更難, 各個模型得到的評價指標數(shù)值顯著低于排除用戶交互商品的其他兩個方法。
· allinter+只影響驗證集上的模型選取, 相比allinter 基本變化不大。
· 模型間的相對提升甚至優(yōu)劣關(guān)系在 all 和allinter 設(shè)定下會出現(xiàn)不一致(如MostPopular在all 設(shè)定下優(yōu)于BPRMF, 而在allinter 下BPRMF 效果更好; all 設(shè)定下GRU4Rec 相比BPRMF 的提升比allinter 設(shè)定下更大)。
雖然all 設(shè)定下評測實現(xiàn)最為簡單, 但將用戶交互過的商品也作為負樣本一同參與排序并不符合實驗科學(xué)性, 從實驗結(jié)果來看也會導(dǎo)致一些不符合一般認識的結(jié)果(比如MostPopular 優(yōu)于BPRMF)。另一方面allinter+是最符合實驗設(shè)計原則的, 嚴格界定了每個評測階段模型所能感知到的信息, 因此建議默認采取allinter+的全量評測方法。對于allinter, 其主要區(qū)別在于訓(xùn)練過程中的模型選取, 從實驗結(jié)果來看相比allinter+在多數(shù)情況下沒有變化, 因此考慮到實現(xiàn)的便利性也是一個可行的選擇。
一般的推薦模型都涉及若干可供調(diào)整的超參數(shù),比如學(xué)習(xí)率、正則化權(quán)重等。根據(jù)機器學(xué)習(xí)的基本實驗準則, 超參數(shù)的調(diào)整應(yīng)當在驗證集上進行, 用驗證集上表現(xiàn)最好的超參數(shù)設(shè)置在測試集進行測試。然而很多研究者為了突出所提出模型的提升, 會直接選取測試集上表現(xiàn)最好的超參數(shù)進行匯報, 許多推薦系統(tǒng)框架也會在訓(xùn)練時默認每輪輸出測試集上的結(jié)果。此外, 有些研究者對于基線模型并沒有進行認真的調(diào)參, 而是直接用原論文中的默認參數(shù)跑一個結(jié)果, 這很大程度上阻礙了推薦領(lǐng)域的健康發(fā)展, 論文中匯報的提升可能只是“cherry-picking”的結(jié)果。因此在實驗中應(yīng)當對每一個基線模型進行細致的調(diào)參, 給出超參數(shù)搜索的空間, 并且確保超參數(shù)的選擇是根據(jù)驗證集的結(jié)果確定的。另外需要注意的是, 論文中參數(shù)分析的部分建議也采用驗證集上的結(jié)果進行匯報, 這樣能展現(xiàn)實際的參數(shù)調(diào)整過程, 確認最終的超參數(shù)是在驗證集上調(diào)整的結(jié)果。
對于不同的任務(wù)場景, 需要使用不同的評價指標來衡量模型表現(xiàn)好壞。
對于評分預(yù)測任務(wù), 常用的評價指標有MAE、MSE、RMSE 等。其中MAE 是平均絕對誤差, MSE是均方誤差。相比于MAE, MSE 通過平方放大了差異, 更關(guān)注預(yù)測值差異大的樣本。RMSE 是均方根誤差, 即MSE 的平方根。
對于點擊預(yù)測任務(wù), 除了上述指標外, 還可以使用一些二分類的指標如精準度(Precision)、召回率(Recall), 以及它們的調(diào)和平均(F1)。還有一個更魯棒更常用的點擊預(yù)測評價指標是 AUC(Area Under ROC Curve, ROC 曲線下的面積)[28], 它主要衡量了模型將正樣本(點擊)排在負樣本(非點擊)前的能力,在工業(yè)界點擊預(yù)測模型中被廣泛使用, 因為模型線下實驗的AUC 高低和線上表現(xiàn)優(yōu)劣較為一致。但需要注意的是, AUC 這樣的評價指標需要在完整測試集合上預(yù)測完后, 在全部樣本上計算, 而不可以分批次計算AUC 之后再取平均。這樣會造成與實際全局的AUC 有較大偏差, 有少數(shù)論文公開的代碼中采用了這樣的計算方式, 實際是不規(guī)范的。
而排序任務(wù)的評價指標計算更為復(fù)雜, 例如命中率HR@K 計算的是模型對候選集排序后的前K 個樣本中是否有正樣本。精準率Precision@K 計算的是模型排序后前K 個樣本中正樣本的比例。召回率Recall@K 計算的是前K 個樣本中正樣本數(shù)目占候選集中全部正樣本的比例。更為常用和魯棒的一個排序評價指標是歸一化折損累計增益 NDCG@K(Normalized Discounted Cumulative Gain)[29]。它假設(shè)排序列表每個位置的增益依次是有折損的, 計算的是模型對候選集合的Top-N 排序列表與理想情況下的Top-N 排序列表的差異, 指標越高則模型排序越接近理想排序。
雖然對單個排序列表計算評價指標的過程比較明確, 但往往驗證和測試集合中包含多個用戶的多個列表。模型對不同列表的排序效果可能不同, 通常大家會對每個列表計算出的指標求平均, 但求平均的方式也會對模型評價帶來影響。例如圖5 中的測試集有3個用戶共6個列表, 如果計算命中率HR@1,對所有列表取平均的話指標HR@1 為0.5。但是可以發(fā)現(xiàn)用戶1 在測試集中有3 個列表, 他貢獻了一半的測試列表。他可能是個較高頻的用戶因此模型對他的偏好預(yù)測較準確, 而對其他更低頻的用戶偏好預(yù)測實際沒有那么準確。如果按用戶先對每個用戶的列表計算出的 HR@1 取平均, 再對所有用戶的HR@1 取平均得到的值是0.3889, 遠低于0.5。因此,如果有的模型更偏重于高頻用戶但冷啟動用戶預(yù)測的非常差, 而有的模型冷啟動用戶預(yù)測非常準確,在兩種計算方式下可能會得出截然相反的模型效果優(yōu)劣評價。
圖5 評價指標按用戶平均示例Figure 5 Illustration of average metrics by each user
綜上所述, 在選取評價指標時, 需要根據(jù)具體任務(wù)、模型, 以及需要關(guān)注的問題(例如是否關(guān)注冷啟動用戶), 選擇合適的評價指標。并且可以選擇多個評價指標, 采取分用戶、分列表多種計算方式, 更全面地評價模型效果。
通過上述討論和實驗, 本文系統(tǒng)地討論與反思了推薦系統(tǒng)實驗中的細節(jié)設(shè)定, 包括數(shù)據(jù)集處理、模型訓(xùn)練、驗證與測試、效果評價等多個角度。本節(jié)總結(jié)文中提到的可選、建議、必須的3 類細節(jié)設(shè)定, 幫助個性化推薦算法研究者更科學(xué)合理地設(shè)計實驗。
必要設(shè)定:
· 訓(xùn)練時隱式負樣本的采樣范圍應(yīng)當包括驗證和測試集交互的商品, 否則有泄露信息風險, 會造成模型測試結(jié)果偏高;
· 盡量采用全量評測, 若規(guī)模不允許, 應(yīng)盡可能多地采樣負樣本。結(jié)合前人工作[8-9], 經(jīng)驗上正負樣本比例至少1︰1000, 否則測試結(jié)果可能與全量評測實際結(jié)果有較大偏差;
· 全量評測時, 用戶交互過的商品不應(yīng)當參與排序(更嚴謹?shù)? 測試時去除用戶交互過的所有商品, 驗證時只去除訓(xùn)練驗證集中該用戶交互的商品), 否則會造成模型測試結(jié)果偏低;
· 對基線模型在每個使用的數(shù)據(jù)集上進行超參數(shù)搜索, 匯報搜索空間, 否則會造成基線模型測試結(jié)果偏低;
· 依據(jù)驗證集的結(jié)果進行確定超參數(shù)設(shè)置, 否則會造成過擬合驗證集;
· 計算AUC 等評價指標時應(yīng)在全部樣本上計算,不可按批次計算后取平均, 否則和實際值差異較大;
建議設(shè)定:
· 數(shù)據(jù)預(yù)處理時對于時間戳相同的記錄保持原數(shù)據(jù)中的順序;
· 配對樣本訓(xùn)練時如果采樣多個負樣本采用LBPR-max對負樣本進行加權(quán);
· 參數(shù)敏感性分析中匯報驗證集上的結(jié)果。
可選設(shè)定:
· 選擇合適的數(shù)據(jù)集劃分方式, 如隨機劃分、按時間劃分、留一劃分等;
· 選擇合適的模型訓(xùn)練方式和損失函數(shù), 如單樣本或配對樣本訓(xùn)練, BPR 或交叉熵;
· 訓(xùn)練測試時應(yīng)考慮合適的顯式和隱式負樣本使用方式, 可適當調(diào)整顯式負樣本比例;
· 選擇合適的評價指標和計算方式衡量模型效果,例如排序任務(wù)中根據(jù)需要選擇多個列表計算出指標的平均方式。