金晶, 懷麗波
( 延邊大學 工學院, 吉林 延吉 133002 )
個性化推薦因有助于用戶快速地獲取所需信息,目前被廣泛地應用于各種社交網絡、音視頻娛樂網站以及網絡商務平臺等.目前,推薦算法主要有協(xié)同過濾、混合推薦、基于內容和基于人口統(tǒng)計的推薦等[1],但這些方法普遍存在數據稀疏、冷啟動和可擴展性的問題.為緩解算法中存在的冷啟動和數據稀疏問題,一些學者對此進行了研究.例如:劉健以TF-IDF(term frequency-inverse document frequency)計算用戶-標簽相關度和項目-標簽相關度的值,并依此構建了用戶興趣模型,提高了推薦精度[2];蔡強等以TF-IDF方法分別生成用戶和資源的標簽特征向量來構造用戶對資源的偏好矩陣,以余弦相似度(SIM)計算了資源相似性,該方法大大降低了計算的復雜度[3]71.針對標簽無法準確地反映用戶的喜好程度的問題,郭彩云等利用標簽、用戶評分值以及指數遺忘函數等評價指標捕捉了用戶興趣的變化程度,得到了較好的推薦效果[4].對于標簽的語義歧義問題,李昊陽等用標簽生成主題標簽簇,然后通過對目標項目預測產生推薦目錄,以此提高了推薦精度[5]; G.Pitsilis等使用標簽聚類方法提高了推薦的準確性,并降低了信息過載[6].針對標簽推薦中忽略項目和標簽間具有相互作用的問題, Zheng Xiaolin等提出了一種可解釋性的項目標簽聯合推薦方法,該方法不僅可提高推薦的準確性,同時也可緩解冷啟動的問題[7].但在上述研究中,研究者均沒有綜合考慮評分數據和標簽數據的作用,仍存在標簽數據稀少的問題.基于此,本文在基于標簽和協(xié)同過濾的個性化推薦算法的基礎上,提出一種基于標簽和協(xié)同過濾的改進推薦算法,并通過實驗驗證本文方法的有效性.
基于標簽的協(xié)同過濾推薦算法(TCF)是在傳統(tǒng)的協(xié)同過濾算法中引入標簽因子,即通過標簽反映用戶偏好和項目特征的優(yōu)勢,以此改進推薦質量.在信息推薦時,標簽通常被分成用戶-標簽、項目-標簽兩個部分來挖掘用戶的喜好,并依此構造用戶興趣模型.
定義用戶集合U={u1,u2,…,ui,…,um},m為用戶總數;標簽集T={t1,t2,…,tk,…,tl},l為標簽總數.項目集I={i1,i2,…,ij,…,in},n是項目總數.用戶-標簽相關度(UTu,t)的計算公式[3]70為:
(1)
其中Nmt代表打標簽t的用戶總數,Nu,t代表用戶u打標簽t的次數,Nlu代表用戶u打標簽的次數總和.
項目-標簽相關度(ITi,t)的計算公式[3]70為:
(2)
其中Nnt代表被打標簽t的項目總數,Ni,t代表項目i被打標簽t的次數,Nli代表項目i被打標簽的次數總和.
構建用戶興趣模型時先分別以公式(1)和(2)建立相關矩陣UTm ×l、ITn ×l, 然后再利用ITn ×l的轉置矩陣TIl ×n計算用戶ui對已有用戶行為的項目ij的喜愛程度HPui,ij, 以此獲得用戶的歷史興趣矩陣HPm ×n.HPui,ij的計算公式[3]70為:
(3)
其中T(ij)是項目ij的標簽集.
協(xié)同過濾推薦是指建立好用戶興趣模型后,以項目間的相似性預測用戶ui對未操作項目ii的偏愛程度(PPui,ii),并以此構建矩陣PPm ×n.然后將PPm ×n的每行按照由高到低的順序排序,取前N個進行推薦.協(xié)同過濾推薦的原理簡單,因此目前被廣泛采用在推薦系統(tǒng)領域中[8-9].PPui,ii的計算公式[3]71為:
(4)
其中NotI(ui)是用戶ui未使用的項目集,I(ui)是用戶ui的歷史項目集,S1ii,ij是項目ii和ij的余弦相似度.
針對標簽數據稀少的問題,本文提出一種基于標簽和協(xié)同過濾的改進推薦算法(ITCF).首先利用項目-標簽相關度構造項目特征向量,并結合評分構造用戶-標簽關聯度,然后對用戶的偏好標簽集進行基于標簽相似性和基于鄰居用戶偏好的擴展.
因為項目-標簽相關度能很好地代表項目的內容特性,所以本文以項目-標簽相關度ITij,tk表示項目ij的特征向量ij, 其定義為ij=(ITij,t1,ITij,t 2,…,ITij,tk,…,ITij,tl).該特征向量是構建項目-標簽相關矩陣ITn ×l和項目相似矩陣S1n ×n的計算依據.構造項目-標簽相關矩陣和項目相似矩陣的算法步驟如下:
Step 1 統(tǒng)計每個項目ij的標簽集T(ij)和標簽tk標記項目ij的次數nij,tk;
Step 2 記錄項目總數n和step 1中的標簽集個數N(T(ij));
Step 3 采用TF-IDF計算項目-標簽相關度ITij,tk, 建立ITn ×l矩陣;
Step 4 取ITn ×l矩陣的任意兩個行向量(即特征向量)進行余弦相似度計算,得到項目相似程度S1ii,ij并建立矩陣S1n ×n.
以用戶ui打過標簽的項目集I(ui)的評分集R(I(ui))表示用戶ui的特征向量ui,ui=(rui,i1,rui,i2,…,rui,ij,…,rui,in).因為用戶-標簽相關度的大小通常與用戶使用標簽次數的多少和用戶對該標簽項目的評分高低有關,所以本文利用公式(5)來表示用戶對標簽的喜愛程度.
(5)
其中u是用戶集中的用戶,I(u)是用戶u打過標簽和評分的項目集,T(u)是用戶項目集中含有的標簽集,UTu,t是用戶-標簽偏愛程度,ITi,t是采取TF-IDF計算的項目-標簽相關度.
建立用戶-標簽相關矩陣的算法步驟如下:
Step 1 統(tǒng)計每個用戶u的未使用項目集NotI(u)、 使用過的項目集I(u)及對應的評分集R(I(u)), 并以R(I(u))表示用戶的特征向量u;
Step 2 通過余弦相似度計算用戶特征向量ui和uj的相似度S2ui,uj,并建立相似度矩陣S2m ×m;
Step 3 統(tǒng)計每個用戶u使用過的標簽集T(u)及未使用的標簽集NotT(u);
Step 4 以公式(5)計算用戶-標簽相關度UTu,t, 并以此建立UTm ×l矩陣.
2.3.1基于近鄰用戶的標簽擴展 用戶在接受推薦時,因對興趣相同的用戶(即近鄰用戶)所推薦的項目更感興趣,所以可以根據用戶uj近鄰用戶的用戶-標簽相關度計算uj對沒有歷史行為的標簽t的相關度UT1uj,t.本文將UT1uj,t的計算公式定義為:
(6)
其中UT1uj,t是經近鄰擴充得到的用戶uj對標簽t的偏愛程度,Nei(uj)是與用戶uj相似度最高的前K個用戶組成的近鄰集合,S2uj,ui是用戶與近鄰用戶間的相似度.
基于近鄰用戶的標簽擴展的算法步驟為:
Step 1 對S2m ×m的每行進行相似度排序,并取前K個相似的用戶集Nei(uj);
Step 2 統(tǒng)計鄰居用戶ui∈Nei(uj)使用過而用戶uj未使用過的標簽集T(Nei(uj));
Step 3 利用公式(6)計算基于鄰居用戶標簽的擴展用戶-標簽相關度UT1uj,t的值,并構建用戶-標簽矩陣UT1m ×l.
2.3.2基于標簽相似度的標簽擴展 本文根據標簽相似度對用戶-標簽矩陣進行擴充,即根據標簽的相似度引入用戶對未有歷史行為的標簽的喜愛程度(UT2u,tj), 其計算公式定義如下:
(7)
其中UT2u,tj是以標簽相似度擴充的用戶u對標簽tj的喜愛程度,NotT(u)是不在原標簽集里的標簽,S3tj,ti是不在原用戶標簽集里的標簽tj與原標簽ti的相似度.
標簽相似度的計算公式[10]為:
(8)
其中tj和ti表示兩個不同的標簽,I(ti)表示標簽ti的項目集,ni,ti表示對項目i標注標簽ti的次數.
基于標簽相似度的標簽擴展算法的步驟為:
Step 1 統(tǒng)計每個項目集I(ti);
Step 2 利用式(8)計算標簽間的相似程度S3tj,ti, 并建立S3l ×l矩陣;
Step 3 采用式(7)計算基于相似標簽的擴展用戶-標簽相關度UT2u,tj的值,并構建UT2m ×l矩陣.
2.3.3融入標簽擴展的用戶-標簽相關矩陣 本文將融入標簽擴展的用戶-標簽相關度的計算公式定義為:
(9)
其中,TE1(u)是用戶u基于近鄰用戶的標簽擴展所得到的前E個標簽組成的標簽集,TE2(u)是基于標簽相似度的標簽擴展所得到的前E個標簽組成的標簽集,α是賦予UT1u,t的結合權重(用于UT1和UT2的信息融合).考慮到二者對預測用戶-標簽相關度的影響同樣重要,因此本文將α取為0.5.由此得到的UT3u,t即為包含歷史行為標簽和擴展后標簽的用戶-標簽相關度,其相關度的矩陣為UT3m ×l.
輸入: 〈用戶,項目,標簽,評分值〉,鄰居數K, 推薦個數N, 近鄰用戶、標簽擴展標簽數E.
輸出: 輸入的用戶偏好的TopN推薦列表.
步驟1 按2.1中的步驟得到每個項目ij的標簽集T(ij)、項目-標簽關聯矩陣ITn ×l、項目相似程度矩陣S1n ×n.
步驟2 按2.2中的步驟得到每個用戶ui的歷史項目集I(ui)所未使用過的項目集NotI(ui)、用戶相似程度矩陣S2m ×m以及用戶-標簽關聯矩陣UTm ×l.
步驟3 按2.3中的公式得到標簽相似程度矩陣S3l ×l、綜合擴展后的用戶-標簽矩陣UT3m ×l, 并賦值給UTm ×l.
步驟4 對ii∈NotI(ui),ij∈I(ui),tk∈T(ij),根據S1n ×n、UTm ×l和ITn ×l的轉置矩陣TIl ×n,按照式(3)建立用戶興趣模型,按式(4)預測用戶ui對未操作項目ij的偏愛程度PPui,ij,并以此構建矩陣PPm ×n.
步驟5 對PPm ×n的每行進行排序,記錄所有行前N個標簽的集合,由此得到推薦列表Rcmd(u).
實驗采用MovieLens數據集(10 M),實驗環(huán)境為Intel 1.60 GHz CPU, 4.00 GB運行內存的PC機.
為了更準確地驗證算法的有效性,實驗選取標簽數大于10的標簽集,以排除冷門標簽對用戶和項目的影響.另外,為分析算法在稠密數據集和稀疏數據集下的性能,本文選取標簽數量為前98位的用戶和標簽數在10~100的用戶集來進行分析.數據集的分類如表1所示.
表1 數據集分類
本文采用準確率(Recall)和召回率(Precision)對推薦算法進行性能評測,其計算公式如下:
(10)
(11)
其中U表示用戶集,|Rcmd(u)|表示推薦集中的項目個數,|Test(u)|表示測試集中的項目個數,|Rcmd(u)∩Test(u)|表示兩個集合的交集個數.
根據文獻[11],測試每組樣例集時,鄰居用戶數K取5, 擴展標簽數E取40.推薦個數N的值分別取5、10、15、20、25、30、35、40和45進行測試,并與文獻[2]和[3]中的兩種TCF算法進行比較,實驗結果見表2 —表5和圖1 —圖4.
表2 不同算法對data 1的準確率
表3 不同算法對data 1的召回率
表4 不同算法對data 2的準確率
表5 不同算法對data 2的召回率
圖1 不同算法對data 1的準確率
圖2 不同算法對data 1的召回率
圖3 不同算法對data 2的準確率
圖4 不同算法對data 2的召回率
由圖1和圖2可以看出,在稠密的數據集中, ITCF的平均準確率和平均召回率比文獻[2]和文獻[3]的平均準確率和平均召回率分別提升約2.0%和1.7%.由圖3和圖4可以看出,在稀疏的數據集中,當5≤N≤20時, ITCF的準確率和召回率均高于其他兩種TCF算法,其中準確率約提升0.2%,召回率約提升0.8%;N>20時, ITCF算法的準確率和召回率均略低于文獻[3]的TCF算法,但與文獻[2]的算法相近.其原因是當N>20時,數據集中的很多項目已不存在相似標簽,因此導致ITCF的準確率和召回率降低.
Data 1的準確率和召回率比data 2的準確率、召回率提升得更高,其原因是由于data 1利用用戶相似度和標簽相似度擴充了用戶-標簽矩陣,因此在一定程度上緩解了數據稀少問題,進而提高了準確率和召回率.而data 2因用戶歷史行為數據過于稀少、訓練樣本不足,因此導致標簽相似度普遍較低,進而使得其準確率和召回率提升幅度低于data 1.
研究表明,本文提出的基于標簽和協(xié)同過濾的改進推薦算法(ITCF)與文獻[2 - 3]相比,其準確率和召回率均有所提高,因此本文方法對因標簽過少而影響推薦質量的問題具有一定程度地緩解作用.本文在研究中未考慮用戶興趣的動態(tài)變化情況,在推薦實時性方面有所欠缺,因此我們在今后的研究中將引入時間因子,建立隨時間變化的動態(tài)用戶興趣模型,以更好地完善本文模型.