崔瑩瑩,陳 卓,王紅霞
(青島科技大學(xué)信息科學(xué)技術(shù)學(xué)院,山東 青島 266061)
隨著信息技術(shù)以及互聯(lián)網(wǎng)的快速發(fā)展,推薦系統(tǒng)已成為一個(gè)領(lǐng)域中不可或缺的關(guān)鍵要素之一,其主要目的是在“信息過載”的大環(huán)境下,為用戶精準(zhǔn)推薦其感興趣的事物,減少“選擇困難”,提高選擇效率,因此被廣泛應(yīng)用于各領(lǐng)域,例如淘寶、音樂軟件、論壇等.推薦算法是推薦系統(tǒng)的核心關(guān)鍵,其根據(jù)用戶行為和特征以及物品特征等信息來進(jìn)行推薦.推薦算法又分為協(xié)同過濾推薦算法、基于內(nèi)容的推薦算法、基于物品的推薦算法等,其中協(xié)同過濾推薦算法近年來被廣泛應(yīng)用在各大領(lǐng)域,該算法不依賴于物品內(nèi)容,僅依靠評(píng)分來表示用戶對(duì)項(xiàng)目的喜好程度,但用戶與項(xiàng)目之間的交互矩陣常常較為稀疏,數(shù)據(jù)大多由有標(biāo)簽數(shù)據(jù)和無標(biāo)簽數(shù)據(jù)組成,且存在數(shù)據(jù)不均衡問題,嚴(yán)重影響推薦效率,也造成了不必要的資源浪費(fèi).隨著各領(lǐng)域規(guī)模的擴(kuò)大以及用戶量的不斷增長(zhǎng),解決用戶與項(xiàng)目之間的稀疏性成為推薦系統(tǒng)中亟待解決的核心問題.
為了解決上述問題,本文提出基于半監(jiān)督學(xué)習(xí)模型的協(xié)同過濾推薦算法,并通過對(duì)比實(shí)驗(yàn)驗(yàn)證了所提出算法的有效性.
推薦系統(tǒng)被用來將信息元素(電影、書籍等)推薦給可能對(duì)其感興趣的社會(huì)元素(人、組織等).
推薦算法可以通過挖掘用戶偏好來幫助用戶篩選信息,較為傳統(tǒng)的推薦算法是結(jié)合協(xié)同過濾的思想,該思想根據(jù)用戶的歷史行為找到與目標(biāo)用戶興趣愛好相似的一組用戶集合,進(jìn)而對(duì)目標(biāo)用戶推薦這組用戶集合所喜好的項(xiàng)目[1].
Sedhain等[2]提出結(jié)合自編碼器的協(xié)同過濾算法,預(yù)測(cè)出丟失的評(píng)分,提高了物品之間相似度計(jì)算的準(zhǔn)確性;在此基礎(chǔ)之上,霍歡等[3]提出棧式降噪自編碼器的標(biāo)簽協(xié)同過濾推薦算法,進(jìn)一步解決了數(shù)據(jù)的稀疏性問題,但該模型的算法復(fù)雜度較高,性能不佳;王根生等[4]通過計(jì)算不同元路徑下的用戶相似度,得出用戶相似度矩陣,然后將其融合到矩陣分解推薦算法的目標(biāo)函數(shù)中;JAMALI等[5]提出的SocialMF模型將信任傳播機(jī)制引入到矩陣分解中;HE等[6]提出的NeuMF模型將多層感知機(jī)與傳統(tǒng)矩陣分解相結(jié)合,可以同時(shí)抽取低維和高維的特征;羅達(dá)雄等[7]提出了一種基于隱性行為的問題解決者推薦算法,通過計(jì)算基于標(biāo)簽的隱性行為變量,解決問題的傾向性變量,并結(jié)合能力變量使用貝葉斯多變量回歸得到開發(fā)者得分,排序后進(jìn)行推薦.
上述算法通常較依賴用戶與項(xiàng)目之間的交互信息以產(chǎn)生推薦結(jié)果,當(dāng)數(shù)據(jù)稀疏性問題加劇時(shí),算法準(zhǔn)確率會(huì)受到較大影響.
對(duì)于推薦系統(tǒng)來說,不僅要依靠現(xiàn)有的用戶/項(xiàng)目交互評(píng)分,學(xué)習(xí)到用戶點(diǎn)擊行為背后的隱性特征向量也十分關(guān)鍵.而深度學(xué)習(xí)具備充分挖掘數(shù)據(jù)隱含信息的能力,近年來被廣泛應(yīng)用于自然語言處理、計(jì)算機(jī)視覺等領(lǐng)域,并通過實(shí)踐證明,深度學(xué)習(xí)方法能夠顯著提高模型性能.鑒于深度學(xué)習(xí)此前取得的成功,研究人員也逐漸嘗試將深度學(xué)習(xí)融入推薦系統(tǒng)中,這些方法從特征出發(fā),從不同層次和角度使用相應(yīng)的深度學(xué)習(xí)方法完成推薦任務(wù).
馮興杰等[8]提出在利用圖神經(jīng)網(wǎng)絡(luò)提取關(guān)聯(lián)關(guān)系的同時(shí),利用深度學(xué)習(xí)提取評(píng)論的優(yōu)勢(shì)提取用戶和商品的一般偏好,并進(jìn)行特征融合來提升推薦效果;Cheng等[9]提出Wide&Deep模型,該模型融合深層Deep模型和淺層Wide模型進(jìn)行聯(lián)合訓(xùn)練,綜合利用深層模型的泛化能力和淺層模型的記憶能力,兼顧了單模型對(duì)推薦系統(tǒng)的準(zhǔn)確性和擴(kuò)展性.針對(duì)Wide&Deep的淺層特征和深層特征不能交互共享的問題,Huifeng等[10]提出DeepFM模型,該模型在處理稀疏特征時(shí),將稀疏的特征先進(jìn)行向量化,得到高維稀疏特征,再將其轉(zhuǎn)化為低維稠密向量,然后將數(shù)據(jù)共同輸入深度神經(jīng)網(wǎng)絡(luò)與FM[11]相結(jié)合的模型中,其中使用FM做特征間低階組合,使用深度神經(jīng)網(wǎng)絡(luò)Deep部分做特征間高階組合,通過并行的方式組合兩個(gè)部分.
由于在用戶與項(xiàng)目交互過程中,用戶幾乎不能對(duì)每個(gè)項(xiàng)目都進(jìn)行評(píng)分,這造成數(shù)據(jù)中既包含有標(biāo)簽數(shù)據(jù),又存在無標(biāo)簽數(shù)據(jù)[12].半監(jiān)督學(xué)習(xí)能夠在此種僅存在部分有標(biāo)簽數(shù)據(jù)的情況下,使學(xué)習(xí)模型具有較高的正確率.
在半監(jiān)督學(xué)習(xí)的自訓(xùn)練算法中,為了解決偽標(biāo)記數(shù)據(jù)選擇問題,Tanha等[13]使用基于距離的局部度量來確定實(shí)例之間的置信度等級(jí),其性能有所提升;Dong等[14]提出的弱標(biāo)簽的半監(jiān)督學(xué)習(xí)算法SSWL,通過考慮實(shí)例和標(biāo)簽相似度來彌補(bǔ)缺失標(biāo)簽;為了提升分類機(jī)器學(xué)習(xí)模型性能和泛化性,毛銘澤等[15]提出了一種基于權(quán)值多樣性的半監(jiān)督分類學(xué)習(xí)算法,從基于學(xué)習(xí)器的不同角度擴(kuò)展模型的多樣性,提升了模型分類性能.在大多數(shù)半監(jiān)督學(xué)習(xí)研究中,主要通過集成學(xué)習(xí)方法來拓展模型或者數(shù)據(jù)的多樣性,從而提高偽標(biāo)簽的準(zhǔn)確性以提升模型性能.
在推薦系統(tǒng)的研究中,雖然有不少算法在嘗試解決數(shù)據(jù)稀疏性問題,但由于大多數(shù)數(shù)據(jù)本身較為稀疏的特點(diǎn),難以訓(xùn)練出泛化能力強(qiáng)的模型,因而,稀疏性問題依舊是目前推薦系統(tǒng)的研究難點(diǎn).
針對(duì)目前推薦算法中現(xiàn)存的有評(píng)分的用戶/項(xiàng)目交互數(shù)據(jù)較為稀疏,且尚有部分無評(píng)分的用戶/項(xiàng)目交互數(shù)據(jù)的問題.本文借鑒半監(jiān)督學(xué)習(xí)的思想,將有評(píng)分的用戶/項(xiàng)目交互數(shù)據(jù)視為有標(biāo)簽數(shù)據(jù),無評(píng)分的用戶/項(xiàng)目交互數(shù)據(jù)視為無標(biāo)簽數(shù)據(jù),提出一種CFSS模型.算法模型如圖1所示.
圖1 CFSS模型
CFSS模型算法首先利用有標(biāo)簽的用戶/項(xiàng)目交互數(shù)據(jù)和DeepFM模型算法,訓(xùn)練得到一個(gè)評(píng)分預(yù)測(cè)模型,再用該模型預(yù)測(cè)無標(biāo)簽數(shù)據(jù)的評(píng)分,得到偽標(biāo)簽.之后采用原始有標(biāo)簽數(shù)據(jù)和偽標(biāo)簽數(shù)據(jù)共同構(gòu)造用戶/項(xiàng)目交互矩陣,并利用交替最小二乘法(alternating least squares,ALS)分解該交互矩陣,從而得到用戶向量表示和項(xiàng)目向量表示,以此來預(yù)測(cè)空白項(xiàng)的評(píng)分.
評(píng)分預(yù)測(cè)部分使用帶評(píng)分的用戶/項(xiàng)目交互數(shù)據(jù)訓(xùn)練DeepFM模型,并將訓(xùn)練用的稀疏的交互矩陣中的用戶特征向量和項(xiàng)目特征向量進(jìn)行拼接后,放入DeepFM模型網(wǎng)絡(luò)中作為輸入進(jìn)行訓(xùn)練.
為了對(duì)用戶特征進(jìn)行向量表示,將用戶的離散特征經(jīng)過One-hot編碼轉(zhuǎn)換后,原來的低維用戶特征轉(zhuǎn)換為高維的稀疏向量.但為了降低向量維度、增加稠密度提升訓(xùn)練效果,本文對(duì)用戶特征進(jìn)行自編碼,將高維稀疏向量轉(zhuǎn)化為低維稠密向量后,再輸入網(wǎng)絡(luò)進(jìn)行訓(xùn)練.
連續(xù)特征內(nèi)各個(gè)數(shù)值可能存在差異較大或者其單位(尺度)不同的情況,例如某用戶的在線時(shí)間和好友數(shù),因此使用公式對(duì)其歸一化處理,避免出現(xiàn)模型訓(xùn)練速度降低等問題.具體公式為
(1)
其中:x表示實(shí)際特征值,μ表示同一特征下的平均特征值,xmax表示最大特征值,xmin表示最小特征值.經(jīng)過處理,原本差異懸殊的連續(xù)特征,都介于0到1之間.
將用戶特征向量和項(xiàng)目特征向量作為DeepFM模型的輸入.DeepFM算法模型如圖2所示.
圖2 DeepFM算法模型
模型左側(cè)為FM模塊,其具有線性時(shí)間復(fù)雜度的優(yōu)越性,能適用基于上下文或基于相關(guān)性的推薦.不僅可對(duì)一階特征進(jìn)行建模,還能通過隱性向量點(diǎn)積來獲取二階特征表示,有效解決高維數(shù)據(jù)的稀疏問題,降低稀疏性對(duì)預(yù)測(cè)結(jié)果的影響,將輸入的特征連接為向量x進(jìn)行輸入,F(xiàn)M模塊計(jì)算公式為
(2)
其中:b0表示偏置,wi表示第i個(gè)特征的權(quán)重,〈vi,vj〉表示第i個(gè)特征與第j個(gè)特征的相互作用.
模型右側(cè)部分是Deep模塊,是一個(gè)用于學(xué)習(xí)高階特征交互的前向神經(jīng)網(wǎng)絡(luò),可以將稀疏的表示特征映射為稠密的特征向量.其中輸入層和FM模塊共享,中間隱藏層第一層公式為
A(1)=W(0)x+b(0).
(3)
其中:W(0)為初始權(quán)重項(xiàng),b(0)為初始偏置項(xiàng).
Deep模塊最終的輸出計(jì)算公式為
yDNN=WH+1aH+bH+1.
(4)
其中:H表示隱藏層的層數(shù).得到FM模塊和Deep模塊的輸出后,便可以得到最終的預(yù)測(cè)結(jié)果為
(5)
本文用有標(biāo)簽數(shù)據(jù)訓(xùn)練DeepFM算法,得到評(píng)分預(yù)測(cè)模型.然后用該模型為所有無標(biāo)簽數(shù)據(jù)預(yù)測(cè)出偽標(biāo)簽.
傳統(tǒng)的矩陣分解算法,利用評(píng)分信息作為推薦依據(jù),當(dāng)評(píng)分?jǐn)?shù)據(jù)稀疏時(shí),不能準(zhǔn)確獲取隱式反饋,影響推薦準(zhǔn)確性[16].本文使用上一節(jié)中有標(biāo)簽和預(yù)測(cè)得出的偽標(biāo)簽兩種用戶/項(xiàng)目交互數(shù)據(jù),構(gòu)建新的用戶/項(xiàng)目交互矩陣之后使用ALS進(jìn)行矩陣分解.
在推薦系統(tǒng)中矩陣分解(Matrix Factoriza-tion,MF)[17]算法是一種常用的協(xié)同過濾推薦方法,它將評(píng)分矩陣分解為兩個(gè)矩陣,目的是從所有已知評(píng)分?jǐn)?shù)據(jù)中學(xué)習(xí)用戶的隱性偏好和項(xiàng)目隱性特征,然后利用用戶和項(xiàng)目的隱性向量的乘積來預(yù)測(cè)用戶/項(xiàng)目評(píng)分矩陣中的未知項(xiàng),以便更好地為用戶推薦[18].常見的矩陣分解算法有奇異值分解(Singular Value Decomposition,SVD)、ALS[19]等.相比于SVD及其他矩陣分解算法,ALS更加適合于分解交互數(shù)據(jù)較為稀疏的矩陣,因此本文使用ALS對(duì)用戶/項(xiàng)目交互數(shù)據(jù)進(jìn)行矩陣分解,以產(chǎn)生用戶和項(xiàng)目的隱性向量表示.形式如圖3所示.
圖3 用戶/項(xiàng)目交互矩陣
在CFSS模型中,使用ALS將用戶/項(xiàng)目評(píng)分矩陣RM×N分解為M×K的用戶隱性向量矩陣和K×N的項(xiàng)目隱性向量矩陣,其中超參數(shù)K為潛在因子空間,K越大越精準(zhǔn),計(jì)算時(shí)間也越長(zhǎng).
在ALS中,用戶/項(xiàng)目交互矩陣可以表示為用戶矩陣與項(xiàng)目矩陣的乘積,以此來近似用戶/項(xiàng)目評(píng)分矩陣,公式為
RM×N=PM×KDK×N.
(6)
其中:PM×K表示用戶隱性向量矩陣,DK×N表示項(xiàng)目隱性向量矩陣.
(7)
其中:pi表示用戶隱性向量,dj表示項(xiàng)目隱性向量.在計(jì)算PM×K與DK×N的乘積與原始矩陣的誤差時(shí),損失函數(shù)的計(jì)算公式為
(8)
其中λ表示正則化系數(shù).為了優(yōu)化損失函數(shù),使用交替固定P和Q對(duì)損失函數(shù)求偏導(dǎo),降低損失函數(shù).
本節(jié)通過對(duì)比實(shí)驗(yàn)以及K折交叉驗(yàn)證檢驗(yàn)了本文提出的CFSS模型的有效性.
為了驗(yàn)證本文提出的基于半監(jiān)督學(xué)習(xí)的協(xié)同過濾推薦算法的泛化性能,選取了公共數(shù)據(jù)集Movielens 100K和公共數(shù)據(jù)集Book-Crossings來進(jìn)行實(shí)驗(yàn).分別隨機(jī)抽取兩個(gè)公共數(shù)據(jù)集中的25%的數(shù)據(jù)設(shè)置為待填充數(shù)據(jù),再?gòu)氖O?5%的數(shù)據(jù)中隨機(jī)抽取20%的數(shù)據(jù)設(shè)置為測(cè)試集,80%設(shè)置為訓(xùn)練集.
3.1.1 Movielens 100K數(shù)據(jù)集
該數(shù)據(jù)集中包含10萬個(gè)用戶對(duì)電影的評(píng)分?jǐn)?shù)據(jù),也包含電影特征信息以及用戶特征信息,用戶使用1~5之間的評(píng)分來表示用戶對(duì)電影的喜好程度,分值越高則表示該用戶對(duì)該電影越感興趣.數(shù)據(jù)隨機(jī)劃分結(jié)果見表1.
表1 Movielens 100K數(shù)據(jù)集
在輸入DeepFM進(jìn)行訓(xùn)練時(shí),將Movielens 100K數(shù)據(jù)集中用戶的性別、年齡和職業(yè)作為用戶特征進(jìn)行輸入;將Movielens 100K數(shù)據(jù)集中電影的發(fā)行日期以及電影類型作為項(xiàng)目特征進(jìn)行輸入.
3.1.2 Book-Crossings數(shù)據(jù)集
該數(shù)據(jù)集中包含110萬個(gè)用戶對(duì)圖書的評(píng)分,表達(dá)了9萬個(gè)用戶對(duì)27萬本書的喜好程度,用評(píng)分1~10來表示.數(shù)據(jù)來自于一個(gè)擁有數(shù)百萬人的規(guī)模龐大的圖書館網(wǎng)站,特點(diǎn)是用戶/圖書評(píng)分矩陣較為稀疏.數(shù)據(jù)隨機(jī)劃分結(jié)果見表2.
表2 Book Crossings 數(shù)據(jù)集
在輸入DeepFM進(jìn)行訓(xùn)練時(shí),將Book-Crossings數(shù)據(jù)集中用戶的年齡、所在地作為用戶特征進(jìn)行輸入;將Book-Crossings數(shù)據(jù)集中書籍的名稱、作者作為項(xiàng)目特征進(jìn)行輸入.
本文采用均方根誤差(Root mean squared error,RMSE)和平均絕對(duì)誤差(mean absolute error,MAE)兩個(gè)指標(biāo)來評(píng)價(jià)算法的評(píng)分預(yù)測(cè)誤差.
(9)
(10)
其中:X表示測(cè)試集中用戶與項(xiàng)目交互的次數(shù);yij表示模型用戶i對(duì)項(xiàng)目j的預(yù)測(cè)評(píng)分值;Rij表示用戶i對(duì)項(xiàng)目j的實(shí)際評(píng)分值.
首先對(duì)評(píng)分預(yù)測(cè)時(shí)所使用的DeepFM模型中的迭代次數(shù)進(jìn)行優(yōu)化選擇,對(duì)迭代次數(shù)進(jìn)行分組實(shí)驗(yàn),結(jié)果見表3.
表3 DeepFM迭代次數(shù)分組實(shí)驗(yàn)結(jié)果
由表3可知,當(dāng)DeepFM模型的迭代次數(shù)為300時(shí),對(duì)測(cè)試集預(yù)測(cè)的結(jié)果與實(shí)際的誤差不再繼續(xù)增大,因此本文選擇300為DeepFM模型的迭代次數(shù).
對(duì)ALS的隱性向量長(zhǎng)度進(jìn)行分組實(shí)驗(yàn),結(jié)果見表4.
表4 ALS不同隱性向量長(zhǎng)度分組實(shí)驗(yàn)結(jié)果
從表4可知,隱性向量長(zhǎng)度為70時(shí),RMSE和MAE最小.因此在使用ALS分析用戶歷史回答數(shù)據(jù),對(duì)用戶和項(xiàng)目隱性向量進(jìn)行表示時(shí),將其設(shè)置為70.
算法模型在僅訓(xùn)練一次的情況下無法代表模型的平均性能,因此本文采用K折交叉驗(yàn)證,可以大致反映本文算法模型的平均水平.K折交叉驗(yàn)證圖如圖4所示.
圖4 K折交叉驗(yàn)證圖
K折交叉驗(yàn)證使用了無重復(fù)抽樣技術(shù),具體實(shí)現(xiàn)步驟:首先將訓(xùn)練集數(shù)據(jù)隨機(jī)劃分為K份,將其中的K-1份數(shù)據(jù)作為訓(xùn)練集,剩余的1份作為測(cè)試集;之后將迭代K次的訓(xùn)練結(jié)果取平均值作為模型的性能指標(biāo).
K取值越大,模型訓(xùn)練結(jié)果越可靠,但所消耗時(shí)間也隨之線性增長(zhǎng).考慮到數(shù)據(jù)集大小與模型性能,本文選取K=5,對(duì)模型進(jìn)行5折交叉驗(yàn)證,訓(xùn)練結(jié)果如圖5所示.
圖5 5折交叉驗(yàn)證訓(xùn)練結(jié)果
將交叉驗(yàn)證結(jié)果取平均值作為模型的評(píng)估結(jié)果,得RMSE=0.174 8,MAE=0.134 2.
為了驗(yàn)證評(píng)分預(yù)測(cè)效果以及填充用戶矩陣的有效性與必要性,本文對(duì)有無DeepFM算法評(píng)分預(yù)測(cè)進(jìn)行了消融實(shí)驗(yàn),并加入了不同矩陣分解的算法以及其他推薦模型進(jìn)行對(duì)比,對(duì)比實(shí)驗(yàn)結(jié)果如表5所示.
從表5可知,在使用ALS算法表示用戶隱性向量之前,由于使用DeepFM方法進(jìn)行矩陣填充降低了矩陣的稀疏度,使ALS算法的誤差更低,因此能夠更加準(zhǔn)確地表示出用戶隱性向量,從而證明了本文提出算法的評(píng)分預(yù)測(cè)的有效性與必要性.
同時(shí)為了驗(yàn)證本文提出的CFSS算法在稀疏性數(shù)據(jù)集上的推薦效果以及其泛化性能,本文進(jìn)行了稀疏性對(duì)比實(shí)驗(yàn).對(duì)公共數(shù)據(jù)集Movielens 100K和Book-Crossings分別進(jìn)行稀疏化處理.通過不斷增加數(shù)據(jù)集稀疏性,使用不同算法進(jìn)行多組對(duì)比實(shí)驗(yàn)來驗(yàn)證本文算法的推薦效果,如表6所示.
表6 數(shù)據(jù)稀疏化后不同算法之間的RMSE和MAE對(duì)比
由上述稀疏性對(duì)比實(shí)驗(yàn)可以看出,在數(shù)據(jù)稀疏性逐漸增大的情況下,本文提出的基于半監(jiān)督學(xué)習(xí)模型的協(xié)同過濾推薦算法的RMSE和MAE均低于其他對(duì)比算法,表明本文方法的推薦效果較好.
隨著用戶規(guī)模的不斷擴(kuò)大,解決推薦系統(tǒng)中的稀疏性問題變得尤為關(guān)鍵.傳統(tǒng)推薦學(xué)習(xí)從較為稀疏的矩陣中難以訓(xùn)練出有效的推薦模型.本文提出基于半監(jiān)督學(xué)習(xí)模型的協(xié)同過濾推薦算法,基于半監(jiān)督思想,用有標(biāo)簽數(shù)據(jù)訓(xùn)練DeepFM算法,得到評(píng)分預(yù)測(cè)模型,然后用該模型為所有無標(biāo)簽數(shù)據(jù)預(yù)測(cè)出偽標(biāo)簽,以此填充用戶/項(xiàng)目交互矩陣,使得數(shù)據(jù)由稀疏變得更加稠密.將原始有標(biāo)簽數(shù)據(jù)與預(yù)測(cè)出的偽標(biāo)簽數(shù)據(jù)作為ALS矩陣分解的輸入,對(duì)用戶/項(xiàng)目交互矩陣數(shù)據(jù)進(jìn)行矩陣分解,以此產(chǎn)生用戶和項(xiàng)目的隱性向量表示,來預(yù)測(cè)空白項(xiàng)的評(píng)分.通過在兩個(gè)公共數(shù)據(jù)集的實(shí)驗(yàn)對(duì)比,驗(yàn)證了本文提出的CFSS模型的有效性,并且通過訓(xùn)練不斷稀疏化數(shù)據(jù)集,CFSS模型的推薦誤差明顯小于傳統(tǒng)推薦模型.
在今后的工作中,我們希望能有效利用用戶特征中的職業(yè)、年齡等多個(gè)維度的特征表示以及項(xiàng)目特征中的文本內(nèi)容信息來更準(zhǔn)確地表示用戶的偏好.