楊誼,張斌,和法偉
(南方醫科大學生物醫學工程學院信息技術系,廣州510515)
信息大數據時代,用戶獲取信息越來越方便。與此同時,海量數據也導致了信息過度和選擇困難。為了幫助用戶快速獲取需要的信息,推薦系統通過分析網絡或數據庫中的各類信息,根據用戶歷史行為所反映出的偏好,提供符合其要求的信息,這一服務得到了廣泛的關注與研究[1-2]影響推薦系統質量的重要因素是推薦算法。目前常用的推薦算法有基于內容、基于知識、協同過濾和混合推薦等。其中協同過濾推薦算法(Collaborative Filtering Recommendation Algorithm,
CFRA)應用十分廣泛[3-5]。
協同過濾算法是基于用戶行為分析的推薦算法。多個用戶通過不斷地操作(瀏覽、搜索、標記、下載)數據源中的信息,形成具有個人風格的推薦列表,根據這個推薦列表中信息的頻度,可以在未來過濾掉用戶不感興趣或相關度較小的信息,而把用戶較為感興趣的需要的信息優先篩選出來,從而獲得與自己的需求有較高匹配度的信息。協同過濾推薦算法可以分為兩大類,一種基于用戶進行設計,另一種基于信息進行設計。總體思路是通過用戶對信息的瀏覽、搜索、標記、下載所隱含的行為模式來為提供高度相關的信息服務[3]。
這一類算法主要利用用戶的行為屬性進行資源篩選,做法是根據目標用戶關于資源操作的歷史記錄,計算該用戶和其他用戶在行為上的相似度,從而確定與該用戶偏好最接近的K 個“鄰居”,根據鄰居對其他資源的偏好情況,預測目標用戶對其未知的資源的偏好程度,把偏好程度靠前的若干個資源推薦給目標用戶[4]。
算法實現包括三個步驟。
(1)尋找與目標用戶偏好相似的用戶,形成候選用戶集合。
根據前述算法思路,利用用戶之間行為的相似程度選擇候選用戶。假定用戶u 和用戶v,令N(u)表示u 喜愛的信息集合,令N(v)表示v 喜愛的信息集合,計算用戶u 和v 的興趣相似度:

但是,如果兩個用戶對熱門信息標記為喜愛,可能不足以說明他們興趣的相似度,而兩個用戶對冷門信息有相似的行為,則可以較大概率推斷說明他們在這類信息方面有共同的偏好。可通過削弱熱門信息對用戶相似度的影響:

或者根據用戶對信息的評價行為(離散數值量化),通過計算余弦相似度反映用戶u 和v 的興趣相似度:

其中,ru,i表示用戶u 對信息i 的喜愛程度評分,Ui,j表示對信息i和j均進行過評分的用戶集合。
(2)取Suv或sim(i,j)最大的前K 個用戶生成用戶集合MU。
(3)找到集合MU 中的用戶喜歡的,且目標用戶未接觸或標記過的信息推薦給目標用戶。通過MU 中所有用戶對信息I 的喜愛(與否或程度頻分)計算目標用戶t 對信息i 的喜愛程度:

和UCF 不同,ICF 更關注信息本身的相關性,利用所有用戶對信息的偏好情況,發現不同信息之間的相似度,再根據其他用戶的歷史偏好信息,將類似的信息推薦給目標用戶[5]。
基于信息的協同過濾算法包括兩個步驟。
(1)計算信息之間的相似度。
使用下面的公式可以直接定義信息i 和j 的相似度:

其中,N(i)是喜歡信息i 的用戶數,N(j)是喜歡信息j 的用戶數。兩個信息產生相似度是因為它們共同被很多用戶喜歡,兩個信息相似度越高,說明這兩個信息共同被很多人喜歡。
同樣,為了避免熱門信息對信息相似度的干擾,使用改進的公式削弱權重:

(2)計算目標用戶t 對信息i 的興趣:

該公式的含義是,某個信息如果和一個用戶標記過感興趣的信息越相似,則它越有可能在用戶的推薦列表中獲得比較高的排名。
從以上過程可以看到,CRAF 不需要信息的顯式特征表示,并且不受信息類型的約束。但是它也存在一些局限性[6-7]:對于新類型的用戶或新信息缺乏經驗信息而無法生成準確的推薦;當評分數據比較稀疏時,由于數據不夠充分,不能準確提取數據之間的相關關系;只利用了用戶對資源的行為,而沒有考慮到對用戶的興趣進行分類,可以更好地實現有針對性的信息的發現。
目前的研究熱點指向了標簽(Tags)技術[8]。標簽相當于屬性提取,可以反映用戶或信息的類別、關鍵詞等屬性。通過標簽可以體現信息的主要特征,還能夠進一步發掘用戶-資源以及用戶-用戶之間的相關性,提高推薦系統的準確性和交互性。文獻[8]提出了信息特征組合思路,利用用戶的興趣點組合信息特征來提高預測率。文獻[9]根據用戶對標簽的使用情況,設計形成用戶偏好模型,利用標簽計算資源間的相似性。文獻[10]分析了用戶、資源和標簽三者之間的潛在語義關系,將其引入推薦算法。上述做法都是對標簽進行了完全匹配的確定性算法,未考慮標簽的概率關系,即非0 非1、介于0 和1 之間的關聯關系,而后者更普遍地存在于實際的信息系統中。為了體現信息和標簽之間的關系,文獻[12]提出了一種標簽等級機制,基于用戶-標簽-信息等級進行標注的權重設置,調節信息間及標簽間的相鄰關系,但沒有考慮等級劃分的客觀性。文獻[11]綜合考慮了信息標簽的參數法,通過計算標簽的語義相關度和對信息相似度的影響,提高推薦的針對性。文獻[12]設計了標簽屬性提取的模型,試圖從標簽屬性關系中獲取用戶的偏好。
現有的算法通常只利用了用戶-標簽-資源之間的關系,獨立計算用戶相似性或信息相似性,并未考慮在二者結合的基礎上標簽的相關性,而基于用戶和信息的標簽相關性能夠排除用戶行為和信息屬性的單因素偏差,通過二者結合來提高推薦結果的準確性。因此,本文把信息相似性和用戶相似性結合起來,提出一種引入標簽相關度加權(Label Correlation Weighting,LCW)進行個性化推薦的協同過濾算法。
本文借鑒了“使用頻率決定確定權重”的思想進行信息屬性的相似性度量,通過詞頻和逆向文件頻率來體現某一詞語對主題的預測能力[3]。但是,熱門權重不等同于用戶個性化權重,直接將統計所得的頻率使用于標簽,熱門標簽對應的信息計算得到權重往往較大,而這并不代表用戶個性化的興趣。因此考慮引入互信息(Mutual Information,MI)思想來反映兩個標簽之間的關系。
信息論采用互信息進行不同變量之間關聯度的計算。互信息是一個隨機變量中包含關于另一個隨機變量的信息的值,值的大小表示兩者的關聯程度強弱[8]。互信息的簡化計算形式為:

式中,I(x,y)表示x 與y 的互信息值,p(x,y)是x與y 共同出現的頻率,p(x)、p(y)分別是x、y 單獨出現的頻率。I(x,y)越大,表明x,y 的關聯程度比較強,即x 與y 越相似。
把上述的互信息I(x,y)引入標簽-信息相關度計算,用標簽與信息的相關度來反映標簽的概率分布:I(x,y)值越大,表示標簽x 被用來標記信息y 的可能性越大。反之,I(x,y)值越小,表示標簽x 用于標記信息y 的可能性越小。
在基于標簽相關度的協同過濾推薦算法中包含3種類型的對象:用戶(具有使用標簽標記信息的行為)、被標記的信息和被使用標簽。用三元組表示為:

其中,U={u1,u2,…,um}為用戶集合,m 為用戶總數,P={p1,p2,…,pn} 為信息集合,n 為信息總數;L={l1,l2,…,lq}為標簽集合,q 為標簽總數。
在確定用戶和信息的標簽相關度特征表示之后,引入了標簽相關度來預測用戶ui對信息pj的偏好,在解決“權重偏差”問題的同時,提高了推薦結果的準確性和適應性。
根據數據源生成用戶-標簽矩陣:

以及標簽-信息矩陣:

基于(10)、(11)和用戶對信息的偏好程度構建用戶-信息偏好矩陣:

通過以上信息的特征表示計算帶有標簽相關度的不同信息間的相似度:

其中,Li,j表示信息pi和信息pj共同被用戶標記的標簽集合,和分別表示信息pi和pj被用戶u標簽標記的平均次數或評分的均值。如果至少信息pi和pj之一是熱門信息,而它們之間實際的關聯度較小,則I(pi,pj)的值較小,使得sim(li,lj)的計算結果減小,削弱了兩個標簽的相關度,這是合理的;反之,如果信息pi和pj中沒有熱門信息,而它們實際的關聯度較大,則I(pi,pj)的值較大,使得sim(li,lj)的計算結果相對較大,加強了兩個標簽的相關度,這也是合理的。

表1 標簽“java”的高相關度標簽和相關度
例如,認為與某個標簽相關度大于0.05 的為高度相關標簽,下面列出了計算所得到的標簽“java”的高相關度標簽和相關度(數據來源為本文實驗部分的數據子集)。
本文算法選擇與目標用戶t 行為最相似的K 個用戶的標記行為,作為最近鄰集合,來計算預測目標用戶的偏好行為。設信息集合p:{p1,p2,…,ps}為用戶t 已標記的信息,則對該用戶未標記的信息pi,預測用戶對它的偏好為:

采用中國專業IT 社區CSDN 作為數據源,CSDN是專業的中文IT 技術社區,提供了包括CSDN.NET、移動端開發者專屬App、CSDN 資訊GitChat、AI 科技大本營、區塊鏈大本營、CSDN 云計算等多個類別的IT 資源,并具有較為成熟的標簽系統。整理形成實驗數據集如表2 所示。

表2 實驗數據集說明
實驗發現,采用5 折、10 折和20 折交叉驗證的結果很接近。分析原因是由于數據集內容集中于IT 領域,內容和標簽的發散性比一般的新聞網站小很多,使得算法的穩定性比較好,采用5 折驗證就可以達到需要的精度。下面列出采取5 折交叉驗證的實驗結果,數據按數量4:1 分為訓練集和測試集兩個部分。
將本文的標簽相關度加權方法LCW 與文獻[11]的標簽相似度算法LS 和文獻[12]的標簽加權算法LW,基于以上數據集處理,對結果作比較。
設置如下變量輔助評估:
TP=推薦的信息符合用戶喜好的數目
FP=推薦的信息不符合用戶喜好的數目
FN=未被推薦的信息不符合用戶喜好的數目
FN=未被推薦的信息符合用戶喜好的數目
本文采用通用的推薦質量評價指標:準確率Precision、召回率Recall和新穎度Novelty。
Precision是所推薦的符合用戶偏好的信息數占推薦信息的總數的比,表示推薦算法的查準率。

Recall指推薦算法給出的用戶喜歡的信息數與用戶喜歡的所有信息數的比,表示推薦算法的查全率。

Novelty指的是推薦信息的熱門程度,通常認為不熱門的信息更能讓用戶感受到新意。

其中recn為推薦集,popu(i)為該集合中信息i 的熱度。Novelty越小表示推薦結果的新穎度越好。
三個指標中,Precision是用戶可以直接體驗到的,因此作為個性化算法的主要評判指標,而Recall和Novelty作為算法性能衡量指標,輔助評定推薦算法的效率和適用性。
實驗1K 值對推薦結果的影響。采用K 最近方法對用戶-信息偏好進行預測,K 的取值對于推薦結果具有較大的影響。比較在不同K 值下三個推薦算法(LCW、LS、LW)的三項指標情況(Precision,Recall,Novelty)。實驗中,取隨機抽取數據源的50%的數據作為測試對象,根據經驗將K 的取值范圍設置為[5,40],以5 為區間大小,實驗結果如圖1 所示。

圖1 本文算法性能與K值的關系
圖5 的結果顯示,隨著N 值從5 開始增加,文本LCW 算法的三項指標值逐漸增加,到N 取值為15 時各項評價指標總體達到峰值。此后,三項指標隨著N值的增大而逐漸降低并間有起伏。考慮到計算量,取K 為15,認為此時可以達到LCW 最好的推薦效果。
同樣,對LS 和LW 做K 值實驗,得到的最優K 值分別為15 和20。
實驗2 樣本數目對推薦結果的影響。實驗將數據集中的樣本數目分別選取為20%,40%,…,100%來計算推薦結果的主要指標Precision。圖2 顯示了實驗2的結果。

圖2 樣本數目與準確率的關系

圖3 三個推薦算法的準確度
圖2 顯示,隨著樣本數目比例的增大,三個算法的推薦結果的精確度都呈現提高的趨勢。因此,大樣本量有助于提高個性化推薦算法的正確率和性能。
實驗3 在全樣本參與的情況下,分別運行三種推薦算法,隨機抽取其中10 次實驗結果進行比較。

圖4 三個推薦算法的查全率

圖5 三個推薦算法推薦的熱門程度
圖3-圖5 的實驗結果表明,本文提出的LCW 推薦算法在Precision方面較多地優于LW 算法,略優于LS 算法,在Recall方 面與LW 相似,都高于LS 算法,而在Novelty方面,LW 算法略優于其他兩種算法。分析原因,LCW 算法突出了標簽的關聯度,所以能夠依據較高準確率的標簽提高相關度標簽的命中率,降低無關標簽的干擾,準確率和召回率在精度方面比只依賴相似度的LS 和調整權值的LW 更好,也比較穩定。但在新穎度方面,由于LCW 強調標簽的相關性,可能會忽略一些小眾的信息,略低于其他兩種算法。總體結果驗證了本文提出的LCW 算法可以在一定程度上提高推薦質量。
基于標簽能夠表達信息的關鍵屬性,又能夠反映用戶的行為特點,本文根據對信息的屬性設置標簽,提出了一種基于用戶-信息-標簽三元組的推薦算法,提出了標簽相關度的概念,設計了基于用戶和信息的標簽相關性的計算方法,以反映用戶與信息之間以及用戶與用戶之間的關系,并排除用戶行為和信息屬性的單因素偏差,通過二者結合進一步削弱權重偏差對預測結果的影響,提高推薦結果的準確性。仿真實驗結果表明,本文提出的推薦算法在總體指標上優于對照的兩種主要的基于標簽的協同過濾推薦算法,使得推薦結果在準確率和召回率方面有一定提升。