楊誼,張斌,和法偉
(南方醫(yī)科大學(xué)生物醫(yī)學(xué)工程學(xué)院信息技術(shù)系,廣州510515)
信息大數(shù)據(jù)時代,用戶獲取信息越來越方便。與此同時,海量數(shù)據(jù)也導(dǎo)致了信息過度和選擇困難。為了幫助用戶快速獲取需要的信息,推薦系統(tǒng)通過分析網(wǎng)絡(luò)或數(shù)據(jù)庫中的各類信息,根據(jù)用戶歷史行為所反映出的偏好,提供符合其要求的信息,這一服務(wù)得到了廣泛的關(guān)注與研究[1-2]影響推薦系統(tǒng)質(zhì)量的重要因素是推薦算法。目前常用的推薦算法有基于內(nèi)容、基于知識、協(xié)同過濾和混合推薦等。其中協(xié)同過濾推薦算法(Collaborative Filtering Recommendation Algorithm,
CFRA)應(yīng)用十分廣泛[3-5]。
協(xié)同過濾算法是基于用戶行為分析的推薦算法。多個用戶通過不斷地操作(瀏覽、搜索、標(biāo)記、下載)數(shù)據(jù)源中的信息,形成具有個人風(fēng)格的推薦列表,根據(jù)這個推薦列表中信息的頻度,可以在未來過濾掉用戶不感興趣或相關(guān)度較小的信息,而把用戶較為感興趣的需要的信息優(yōu)先篩選出來,從而獲得與自己的需求有較高匹配度的信息。協(xié)同過濾推薦算法可以分為兩大類,一種基于用戶進行設(shè)計,另一種基于信息進行設(shè)計??傮w思路是通過用戶對信息的瀏覽、搜索、標(biāo)記、下載所隱含的行為模式來為提供高度相關(guān)的信息服務(wù)[3]。
這一類算法主要利用用戶的行為屬性進行資源篩選,做法是根據(jù)目標(biāo)用戶關(guān)于資源操作的歷史記錄,計算該用戶和其他用戶在行為上的相似度,從而確定與該用戶偏好最接近的K 個“鄰居”,根據(jù)鄰居對其他資源的偏好情況,預(yù)測目標(biāo)用戶對其未知的資源的偏好程度,把偏好程度靠前的若干個資源推薦給目標(biāo)用戶[4]。
算法實現(xiàn)包括三個步驟。
(1)尋找與目標(biāo)用戶偏好相似的用戶,形成候選用戶集合。
根據(jù)前述算法思路,利用用戶之間行為的相似程度選擇候選用戶。假定用戶u 和用戶v,令N(u)表示u 喜愛的信息集合,令N(v)表示v 喜愛的信息集合,計算用戶u 和v 的興趣相似度:
但是,如果兩個用戶對熱門信息標(biāo)記為喜愛,可能不足以說明他們興趣的相似度,而兩個用戶對冷門信息有相似的行為,則可以較大概率推斷說明他們在這類信息方面有共同的偏好??赏ㄟ^削弱熱門信息對用戶相似度的影響:
或者根據(jù)用戶對信息的評價行為(離散數(shù)值量化),通過計算余弦相似度反映用戶u 和v 的興趣相似度:
其中,ru,i表示用戶u 對信息i 的喜愛程度評分,Ui,j表示對信息i和j均進行過評分的用戶集合。
(2)取Suv或sim(i,j)最大的前K 個用戶生成用戶集合MU。
(3)找到集合MU 中的用戶喜歡的,且目標(biāo)用戶未接觸或標(biāo)記過的信息推薦給目標(biāo)用戶。通過MU 中所有用戶對信息I 的喜愛(與否或程度頻分)計算目標(biāo)用戶t 對信息i 的喜愛程度:
和UCF 不同,ICF 更關(guān)注信息本身的相關(guān)性,利用所有用戶對信息的偏好情況,發(fā)現(xiàn)不同信息之間的相似度,再根據(jù)其他用戶的歷史偏好信息,將類似的信息推薦給目標(biāo)用戶[5]。
基于信息的協(xié)同過濾算法包括兩個步驟。
(1)計算信息之間的相似度。
使用下面的公式可以直接定義信息i 和j 的相似度:
其中,N(i)是喜歡信息i 的用戶數(shù),N(j)是喜歡信息j 的用戶數(shù)。兩個信息產(chǎn)生相似度是因為它們共同被很多用戶喜歡,兩個信息相似度越高,說明這兩個信息共同被很多人喜歡。
同樣,為了避免熱門信息對信息相似度的干擾,使用改進的公式削弱權(quán)重:
(2)計算目標(biāo)用戶t 對信息i 的興趣:
該公式的含義是,某個信息如果和一個用戶標(biāo)記過感興趣的信息越相似,則它越有可能在用戶的推薦列表中獲得比較高的排名。
從以上過程可以看到,CRAF 不需要信息的顯式特征表示,并且不受信息類型的約束。但是它也存在一些局限性[6-7]:對于新類型的用戶或新信息缺乏經(jīng)驗信息而無法生成準確的推薦;當(dāng)評分數(shù)據(jù)比較稀疏時,由于數(shù)據(jù)不夠充分,不能準確提取數(shù)據(jù)之間的相關(guān)關(guān)系;只利用了用戶對資源的行為,而沒有考慮到對用戶的興趣進行分類,可以更好地實現(xiàn)有針對性的信息的發(fā)現(xiàn)。
目前的研究熱點指向了標(biāo)簽(Tags)技術(shù)[8]。標(biāo)簽相當(dāng)于屬性提取,可以反映用戶或信息的類別、關(guān)鍵詞等屬性。通過標(biāo)簽可以體現(xiàn)信息的主要特征,還能夠進一步發(fā)掘用戶-資源以及用戶-用戶之間的相關(guān)性,提高推薦系統(tǒng)的準確性和交互性。文獻[8]提出了信息特征組合思路,利用用戶的興趣點組合信息特征來提高預(yù)測率。文獻[9]根據(jù)用戶對標(biāo)簽的使用情況,設(shè)計形成用戶偏好模型,利用標(biāo)簽計算資源間的相似性。文獻[10]分析了用戶、資源和標(biāo)簽三者之間的潛在語義關(guān)系,將其引入推薦算法。上述做法都是對標(biāo)簽進行了完全匹配的確定性算法,未考慮標(biāo)簽的概率關(guān)系,即非0 非1、介于0 和1 之間的關(guān)聯(lián)關(guān)系,而后者更普遍地存在于實際的信息系統(tǒng)中。為了體現(xiàn)信息和標(biāo)簽之間的關(guān)系,文獻[12]提出了一種標(biāo)簽等級機制,基于用戶-標(biāo)簽-信息等級進行標(biāo)注的權(quán)重設(shè)置,調(diào)節(jié)信息間及標(biāo)簽間的相鄰關(guān)系,但沒有考慮等級劃分的客觀性。文獻[11]綜合考慮了信息標(biāo)簽的參數(shù)法,通過計算標(biāo)簽的語義相關(guān)度和對信息相似度的影響,提高推薦的針對性。文獻[12]設(shè)計了標(biāo)簽屬性提取的模型,試圖從標(biāo)簽屬性關(guān)系中獲取用戶的偏好。
現(xiàn)有的算法通常只利用了用戶-標(biāo)簽-資源之間的關(guān)系,獨立計算用戶相似性或信息相似性,并未考慮在二者結(jié)合的基礎(chǔ)上標(biāo)簽的相關(guān)性,而基于用戶和信息的標(biāo)簽相關(guān)性能夠排除用戶行為和信息屬性的單因素偏差,通過二者結(jié)合來提高推薦結(jié)果的準確性。因此,本文把信息相似性和用戶相似性結(jié)合起來,提出一種引入標(biāo)簽相關(guān)度加權(quán)(Label Correlation Weighting,LCW)進行個性化推薦的協(xié)同過濾算法。
本文借鑒了“使用頻率決定確定權(quán)重”的思想進行信息屬性的相似性度量,通過詞頻和逆向文件頻率來體現(xiàn)某一詞語對主題的預(yù)測能力[3]。但是,熱門權(quán)重不等同于用戶個性化權(quán)重,直接將統(tǒng)計所得的頻率使用于標(biāo)簽,熱門標(biāo)簽對應(yīng)的信息計算得到權(quán)重往往較大,而這并不代表用戶個性化的興趣。因此考慮引入互信息(Mutual Information,MI)思想來反映兩個標(biāo)簽之間的關(guān)系。
信息論采用互信息進行不同變量之間關(guān)聯(lián)度的計算。互信息是一個隨機變量中包含關(guān)于另一個隨機變量的信息的值,值的大小表示兩者的關(guān)聯(lián)程度強弱[8]?;バ畔⒌暮喕嬎阈问綖椋?/p>
式中,I(x,y)表示x 與y 的互信息值,p(x,y)是x與y 共同出現(xiàn)的頻率,p(x)、p(y)分別是x、y 單獨出現(xiàn)的頻率。I(x,y)越大,表明x,y 的關(guān)聯(lián)程度比較強,即x 與y 越相似。
把上述的互信息I(x,y)引入標(biāo)簽-信息相關(guān)度計算,用標(biāo)簽與信息的相關(guān)度來反映標(biāo)簽的概率分布:I(x,y)值越大,表示標(biāo)簽x 被用來標(biāo)記信息y 的可能性越大。反之,I(x,y)值越小,表示標(biāo)簽x 用于標(biāo)記信息y 的可能性越小。
在基于標(biāo)簽相關(guān)度的協(xié)同過濾推薦算法中包含3種類型的對象:用戶(具有使用標(biāo)簽標(biāo)記信息的行為)、被標(biāo)記的信息和被使用標(biāo)簽。用三元組表示為:
其中,U={u1,u2,…,um}為用戶集合,m 為用戶總數(shù),P={p1,p2,…,pn} 為信息集合,n 為信息總數(shù);L={l1,l2,…,lq}為標(biāo)簽集合,q 為標(biāo)簽總數(shù)。
在確定用戶和信息的標(biāo)簽相關(guān)度特征表示之后,引入了標(biāo)簽相關(guān)度來預(yù)測用戶ui對信息pj的偏好,在解決“權(quán)重偏差”問題的同時,提高了推薦結(jié)果的準確性和適應(yīng)性。
根據(jù)數(shù)據(jù)源生成用戶-標(biāo)簽矩陣:
以及標(biāo)簽-信息矩陣:
基于(10)、(11)和用戶對信息的偏好程度構(gòu)建用戶-信息偏好矩陣:
通過以上信息的特征表示計算帶有標(biāo)簽相關(guān)度的不同信息間的相似度:
其中,Li,j表示信息pi和信息pj共同被用戶標(biāo)記的標(biāo)簽集合,和分別表示信息pi和pj被用戶u標(biāo)簽標(biāo)記的平均次數(shù)或評分的均值。如果至少信息pi和pj之一是熱門信息,而它們之間實際的關(guān)聯(lián)度較小,則I(pi,pj)的值較小,使得sim(li,lj)的計算結(jié)果減小,削弱了兩個標(biāo)簽的相關(guān)度,這是合理的;反之,如果信息pi和pj中沒有熱門信息,而它們實際的關(guān)聯(lián)度較大,則I(pi,pj)的值較大,使得sim(li,lj)的計算結(jié)果相對較大,加強了兩個標(biāo)簽的相關(guān)度,這也是合理的。
表1 標(biāo)簽“java”的高相關(guān)度標(biāo)簽和相關(guān)度
例如,認為與某個標(biāo)簽相關(guān)度大于0.05 的為高度相關(guān)標(biāo)簽,下面列出了計算所得到的標(biāo)簽“java”的高相關(guān)度標(biāo)簽和相關(guān)度(數(shù)據(jù)來源為本文實驗部分的數(shù)據(jù)子集)。
本文算法選擇與目標(biāo)用戶t 行為最相似的K 個用戶的標(biāo)記行為,作為最近鄰集合,來計算預(yù)測目標(biāo)用戶的偏好行為。設(shè)信息集合p:{p1,p2,…,ps}為用戶t 已標(biāo)記的信息,則對該用戶未標(biāo)記的信息pi,預(yù)測用戶對它的偏好為:
采用中國專業(yè)IT 社區(qū)CSDN 作為數(shù)據(jù)源,CSDN是專業(yè)的中文IT 技術(shù)社區(qū),提供了包括CSDN.NET、移動端開發(fā)者專屬App、CSDN 資訊GitChat、AI 科技大本營、區(qū)塊鏈大本營、CSDN 云計算等多個類別的IT 資源,并具有較為成熟的標(biāo)簽系統(tǒng)。整理形成實驗數(shù)據(jù)集如表2 所示。
表2 實驗數(shù)據(jù)集說明
實驗發(fā)現(xiàn),采用5 折、10 折和20 折交叉驗證的結(jié)果很接近。分析原因是由于數(shù)據(jù)集內(nèi)容集中于IT 領(lǐng)域,內(nèi)容和標(biāo)簽的發(fā)散性比一般的新聞網(wǎng)站小很多,使得算法的穩(wěn)定性比較好,采用5 折驗證就可以達到需要的精度。下面列出采取5 折交叉驗證的實驗結(jié)果,數(shù)據(jù)按數(shù)量4:1 分為訓(xùn)練集和測試集兩個部分。
將本文的標(biāo)簽相關(guān)度加權(quán)方法LCW 與文獻[11]的標(biāo)簽相似度算法LS 和文獻[12]的標(biāo)簽加權(quán)算法LW,基于以上數(shù)據(jù)集處理,對結(jié)果作比較。
設(shè)置如下變量輔助評估:
TP=推薦的信息符合用戶喜好的數(shù)目
FP=推薦的信息不符合用戶喜好的數(shù)目
FN=未被推薦的信息不符合用戶喜好的數(shù)目
FN=未被推薦的信息符合用戶喜好的數(shù)目
本文采用通用的推薦質(zhì)量評價指標(biāo):準確率Precision、召回率Recall和新穎度Novelty。
Precision是所推薦的符合用戶偏好的信息數(shù)占推薦信息的總數(shù)的比,表示推薦算法的查準率。
Recall指推薦算法給出的用戶喜歡的信息數(shù)與用戶喜歡的所有信息數(shù)的比,表示推薦算法的查全率。
Novelty指的是推薦信息的熱門程度,通常認為不熱門的信息更能讓用戶感受到新意。
其中recn為推薦集,popu(i)為該集合中信息i 的熱度。Novelty越小表示推薦結(jié)果的新穎度越好。
三個指標(biāo)中,Precision是用戶可以直接體驗到的,因此作為個性化算法的主要評判指標(biāo),而Recall和Novelty作為算法性能衡量指標(biāo),輔助評定推薦算法的效率和適用性。
實驗1K 值對推薦結(jié)果的影響。采用K 最近方法對用戶-信息偏好進行預(yù)測,K 的取值對于推薦結(jié)果具有較大的影響。比較在不同K 值下三個推薦算法(LCW、LS、LW)的三項指標(biāo)情況(Precision,Recall,Novelty)。實驗中,取隨機抽取數(shù)據(jù)源的50%的數(shù)據(jù)作為測試對象,根據(jù)經(jīng)驗將K 的取值范圍設(shè)置為[5,40],以5 為區(qū)間大小,實驗結(jié)果如圖1 所示。
圖1 本文算法性能與K值的關(guān)系
圖5 的結(jié)果顯示,隨著N 值從5 開始增加,文本LCW 算法的三項指標(biāo)值逐漸增加,到N 取值為15 時各項評價指標(biāo)總體達到峰值。此后,三項指標(biāo)隨著N值的增大而逐漸降低并間有起伏。考慮到計算量,取K 為15,認為此時可以達到LCW 最好的推薦效果。
同樣,對LS 和LW 做K 值實驗,得到的最優(yōu)K 值分別為15 和20。
實驗2 樣本數(shù)目對推薦結(jié)果的影響。實驗將數(shù)據(jù)集中的樣本數(shù)目分別選取為20%,40%,…,100%來計算推薦結(jié)果的主要指標(biāo)Precision。圖2 顯示了實驗2的結(jié)果。
圖2 樣本數(shù)目與準確率的關(guān)系
圖3 三個推薦算法的準確度
圖2 顯示,隨著樣本數(shù)目比例的增大,三個算法的推薦結(jié)果的精確度都呈現(xiàn)提高的趨勢。因此,大樣本量有助于提高個性化推薦算法的正確率和性能。
實驗3 在全樣本參與的情況下,分別運行三種推薦算法,隨機抽取其中10 次實驗結(jié)果進行比較。
圖4 三個推薦算法的查全率
圖5 三個推薦算法推薦的熱門程度
圖3-圖5 的實驗結(jié)果表明,本文提出的LCW 推薦算法在Precision方面較多地優(yōu)于LW 算法,略優(yōu)于LS 算法,在Recall方 面與LW 相似,都高于LS 算法,而在Novelty方面,LW 算法略優(yōu)于其他兩種算法。分析原因,LCW 算法突出了標(biāo)簽的關(guān)聯(lián)度,所以能夠依據(jù)較高準確率的標(biāo)簽提高相關(guān)度標(biāo)簽的命中率,降低無關(guān)標(biāo)簽的干擾,準確率和召回率在精度方面比只依賴相似度的LS 和調(diào)整權(quán)值的LW 更好,也比較穩(wěn)定。但在新穎度方面,由于LCW 強調(diào)標(biāo)簽的相關(guān)性,可能會忽略一些小眾的信息,略低于其他兩種算法??傮w結(jié)果驗證了本文提出的LCW 算法可以在一定程度上提高推薦質(zhì)量。
基于標(biāo)簽?zāi)軌虮磉_信息的關(guān)鍵屬性,又能夠反映用戶的行為特點,本文根據(jù)對信息的屬性設(shè)置標(biāo)簽,提出了一種基于用戶-信息-標(biāo)簽三元組的推薦算法,提出了標(biāo)簽相關(guān)度的概念,設(shè)計了基于用戶和信息的標(biāo)簽相關(guān)性的計算方法,以反映用戶與信息之間以及用戶與用戶之間的關(guān)系,并排除用戶行為和信息屬性的單因素偏差,通過二者結(jié)合進一步削弱權(quán)重偏差對預(yù)測結(jié)果的影響,提高推薦結(jié)果的準確性。仿真實驗結(jié)果表明,本文提出的推薦算法在總體指標(biāo)上優(yōu)于對照的兩種主要的基于標(biāo)簽的協(xié)同過濾推薦算法,使得推薦結(jié)果在準確率和召回率方面有一定提升。