董躍華,朱純煜
(江西理工大學 信息工程學院,江西 贛州 341000)
海量的數據成為了最具價值的財富,也是信息技術發展的必然產物。但對于個人而言,并非所有的數據都是有價值的,大多都是無用的數據,隨著互聯網技術、信息技術、物聯網技術、云計算等數字化信息技術的發展,全球范圍內數據呈爆炸式增長,每天都有大量的圖片、博客、視頻發布到網上,信息化技術的發展給企業的沖擊量是巨大的。首先,以今日頭條及抖音為代表的信息流產品,且國內最頂尖的互聯網公司BAT也紛紛發力信息流,像百度手百的feed流,阿里UC的feed流,騰訊微信里的看一看,其次是像淘寶、京東等電商類產品,而在上述APP中其算法的核心部分就是推薦算法。因此,個性化推薦算法[1]顯得尤為重要。而在推薦算法中核心工作之一就是相似度的計算,傳統的協同過濾算法中主要通過分析用戶-項目的評分矩陣信息來進行相似度計算,這類方法簡單直觀,且應用最為廣泛。然而,在大多數推薦系統中都存在著評分數據的稀疏性問題,使得在計算用戶或項目的相似度上無法能夠真實有效地反映出用戶的興趣愛好,存在著稀疏性和可擴展性不足等問題。
為了進一步提高基于用戶的推薦算法的推薦精度,及緩解目前該算法存在的一些缺陷,如數據稀疏性、冷啟動和準確率下降等問題[2-4],許多學者針對每種問題分別提出了自己的改進算法,例如,針對數據稀疏性問題,劉玉葆等[5]提出一種不確定近鄰的協同過濾算法(UNCF),算法對用戶和其產品之間的相似度進行計算,通過不確定近鄰的動態度量方法對預測結果進行推薦,有效地緩解了數據稀疏性問題;Zhang Jia等[6]從局部和全局角度出發,融入了用戶的偏好信息,最終提出了一種基于用戶偏好聚類的協同過濾算法(UPUC-CF),該方法基于這樣一個假設,即用戶具有不同的評分習慣,進而將用戶分配到具有不同偏好的用戶組中以此來度量用戶的相似性;Liu等[7]分析了PIP的不足,提出了一種啟發式相似模型(heuristic similarity model,NHSM-CF)。NHSM-CF不僅考慮了相似度測度的3個因素:接近度、影響度和評分的受歡迎度,而且注重常用評分項目的比例和用戶偏好,該模型在與傳統的推薦算法相比,在預測評分及推薦質量上均具有較大的提高;Hamidreza Koohi等[8]為提高系統的推薦精度,提出了一種模糊C-means方法,實驗結果表明該方法相比傳統的K-means聚類算法具有更好的推薦效果;針對新項目冷啟動和新用戶冷啟動等難題,Biswas S等[9]在考慮基于模型的推薦系統中,將問題形式化為離散優化問題,以最小化用戶的真實與預測評分之間的最小平方誤差,并提出了幾種可擴展的啟發式算法;于洪等[10]提出了用戶時間權重信息概念,利用三分圖的形式來描述用戶、項目、屬性、標簽之間的關系,提出了一種解決新項目冷啟動問題的推薦算法;Jamali等[11]利用sigmoid函數提出了一種改進的基于PCC-CF的相似度度量方法(SPCC-CF),強調了常用評分項的重要性;為了能夠更好地提取用戶或項目屬性的隱式特征,周洋等[12]利用自編碼器原理提出一種基于棧式降噪自編碼器(SDAE)的協同過濾算法,通過利用SDAE處理評分矩陣獲得電影的特征編碼和經過PCA處理項目屬性得到的項目屬性編碼,結合特征編碼及屬性編碼計算項目之間的相似度,最終得出top-N推薦列表;李夢夢等[13]也將棧式降噪自編碼器融入到基于用戶的協同過濾算法中,不同的是其根據SDAE模型得到用戶的隱表示,其次分析了用戶對項目的屬性偏好,在最終的評分預測階段引入了時間衰減項,動態預測訪問概率,提高了推薦質量;針對上述不足以及相關創新思想,為提取用戶的隱式特征,本文在利用已有用戶共同評分項目的基礎上分析評分的相似性,將用戶評分進行歸一化,在改進相似度的基礎上結合對用戶屬性評分量化,提出一種基于改進用戶屬性評分的協同過濾算法(IUAS-CF),有效地預測了用戶的實際評分,提高了推薦質量。
協同過濾算法可以說是目前最為普遍的,最有應用前景的推薦算法。通俗地說,協同過濾算法核心思想就是借鑒與你相關的人群的觀點來進行推薦。一般地,基于用戶的協同過濾算法推薦步驟就是根據用戶-項目評分矩陣計算出該用戶與其他用戶的相似度,繼而從與該用戶最相似的用戶中選取若干個作為最近鄰,再利用最近鄰用戶集合來預測該用戶的未評分項目分數,最終選取最高的top-N預測項目作為該用戶的推薦集推薦給用戶。
在推薦系統中,主要是計算用戶之間的相似度以及對用戶進行預測評分。相似度計算方法主要分為兩種,一種是相似度度量方法,另外一種是距離度量方法。
假設兩個文本X=(x1,x2,x3,…,xn)和Y=(y1,y2,y3,…,yn), 其中x向量表示為:Vec(X)=(v1,v2,v3,…,vn),y向量表示為:Vec(Y)=(w1,w2,w3,…,wn)。
(1)歐氏距離[14]:歐氏距離也稱歐幾里得距離,是最常見的距離度量,衡量的是多維空間中兩個點之間的絕對距離。計算式(1)如下
(1)
(2)余弦相似性:也叫向量相似性。將每個用戶的用戶-項目評分看作一個N維向量,然后將兩個向量之間的夾角余弦值作為用戶之間的相似度。其相似度計算式(2)如下
(2)
(3)皮爾森相關系數:利用用戶-項目的評分矩陣,去除用戶的非共同評分項,利用用戶的共同評分項目,進而計算相似性。其計算式(3)如下
(3)
(4)評分預測:預測評分是對當前用戶對該項目預測的可能評分值,預測評分是目前大多數推薦系統中衡量系統的推薦精度主要方法。其主要計算式(4)如下
(4)
在基于用戶的協同過濾推薦算法中,有很多都忽略了用戶自身所存在著影響用戶抉擇的用戶屬性,雖然這些屬性在語義上難以看出他們之間的關系,但利用一些特征提取方法可以在一定程度上挖掘用戶或產品之間的聯系。例如女性用戶對于愛情、浪漫等類型的電影更為喜愛,男性用戶更愿意在電子產品或運動設施上進行消費。因此,為更好地利用用戶的隱式特征來計算用戶之間的相似度,本文將用戶自身存在的屬性引入到用戶相似度計算公式中,引入用戶屬性評分概念,即賦予每個用戶屬性相應的權值,以平衡不同屬性對用戶選擇所產生的影響。
一些網站的評分系統都大致不一,但不論是5、10分制的評分,系統所設的分數極值一定程度上無法反應出個性化用戶的興趣愛好,即系統中存在著一些比較有個性的用戶,其評分標準不同于一般的評分分布,可能會出現沒有系統的最值評分情況,或其評分基本無波動,即系統中存在的用戶評價值范圍差異,針對此類用戶的評價值范圍差異所帶來的影響,本文給出相應的改進方法,改進后,將個性化用戶與一般用戶的評分矩陣融合計算相似度,減小了因評價值范圍差異所帶來的影響。
整個算法的改進思路如下,首先,對于給定評分均差,其計算式(5)如下
(5)
式中:Dis(A,B)為UserA和UserB之間的評分距離,CA,B為UserA和UserB相同的評分項目集合,SAi為UserA對集合中第i項的評分,SBi為UserB對集合中第i項的評分。
評分均差雖然在一定程度上能反應用戶之間的相似性,而在某些極端情況下,即用戶之間存在極少的共同0時,這時會導致研究對象評分集合沒有交集,而整個式子無意義,因此對上式進行修正后得到式(6)
(6)
經過修正后,公式避免了分母為零時式子無意義的情況,但是當此時的CA,B=0時即UserA和UserB沒有相同的評分項目集合,意味著用戶A和B之間沒有交集,用戶之間相似性達到最低,然而Dis(A,B)=0, 即用戶之間的評分距離為零,也意味著用戶之間相似性最高,因而兩者之間相互矛盾,繼續對上式調整,式(7)如下
(7)
式中:Smax-Smin表示UserA和UserB共有的評分最大值和最小值的差值。即當用戶之間沒有共同評分項目時,此時將系統設定的最大評分差值給予用戶,倆用戶之間距離最大,相似性最低,符合實際情況;而當用戶之間存在共同評分項目時,這一項的加入也不會影響其最終計算結果。所加入的這一項的取值只要大于等于Smax-Smin即可,因為如果小于Smax-Smin, 若兩個用戶之間只有一個共同評分項,或兩個用戶的評分差均為Smax-Smin, 這會導致兩個用戶之間存在共同評分項目而其相似性卻不如沒有共同評分項目的高,與實際情況相反,因此取Smax-Smin最合適。
對于存在的一些比較有個性的用戶,其評分標準不同于一般的評分分布,可能會出現沒有系統的最值評分情況,或其評分基本無波動,對于這樣的用戶我們需要將其考慮到推薦系統中,例如,在UserA和UserB的共同評分項目集合中,UserA的評分有1到5分,而UserB的評分可能是2到4分,這種情況下2分和4分對于UserB而言可能是系統的1分和5分,也可能存在UserA的評分均是1分,UserB的評分均是5分,UserA和UserB的評分沒有波動,而評分差距極大,按傳統的評分標準,自然會判斷UserA和UserB的差距極大而不進行推薦,這正是傳統評分系統的一個缺陷,算法不應該以表面的評分數值來判斷兩者之間的差異,而應以用戶對物品或項目的喜愛程度進行分析,因此對于同一集合中的項目或物品,若兩者的評分波動一致,則判斷其相似度很高,若不一致則很低。所以基于現有公式的缺陷和上述的思想,對公式繼續調整,改進式(8)如下

(8)
式中:SAmin和SBmin分別代表UserA和UserB的最小評分值,SAmax和SBmax分別代表UserA和UserB的最大評分值,主要目的在于對兩者的評分進行歸一化,將兩者的評分拉到了同一維度中,如此可以明顯看出用戶之間對項目的喜愛程度波動幅度,繼而計算用戶之間的相似性,以從用戶喜愛程度的角度去區分用戶,避免了用戶相似而評分數值不一致帶來的影響。
在現實生活中,用戶的年齡、性別等屬性很大程度上影響著用戶的選擇。例如,男性用戶比較偏向于買電子產品,聽流行搖滾音樂等,而女性用戶更愿意購買化妝品,聽輕音樂等。為了體現出用戶的不同屬性對不同用戶的影響程度,本文將語義上的用戶屬性進行數值上的轉化,利用上述改進的基于評分偏好的相似性計算方法,本文首先對已有的數據訓練集中的用戶進行相似度計算,找出訓練集中所有用戶UserI相對應的最相似的用戶UserI′,得到一個最相似用戶對集合,對于每一對最相似用戶以及預給出的用戶屬性值λ1,λ2,λ3,…,λn, 本文給出公式用于衡量用戶對的相似情況,如式(9)所示
(9)
式中:simF(A,B) 表示倆用戶的相似程度,F(A∩B)i表示最相似用戶對UserA和UserB共有屬性的交集,F(A∪B)j表示用戶A和B共有屬性的并集。
用戶屬性的權值的訓練方法:
首先,利用式(8)找出訓練集中所有最相似用戶對,進一步利用式(9)對所有的最相似用戶對的屬性進行計算并累加得到所有最相似用戶對的相似和res,由于每一對用戶是訓練集中相似度最高的,且每一對最相似用戶其simF(A,B) 相比于其他用戶而言是最大的,因此,將1,2,3,…,n等分別依次帶入屬性評分λ1,λ2,λ3,…,λn中,當所有最相似用戶對的相似和res達到最大時,所取的用戶屬性的權值為最佳用戶屬性權值。
由于算法所求的是用戶之間的距離,所以對公式進行調整,最終改進的推薦算法其式(10)具體描述如下
(10)
式中:Dismax表示用戶可能存在的最大距離,simF(A,B) 表示用戶A和B的屬性相似程度。simFin(A,B) 表示用戶最終相似度。
算法步驟具體描述如下:
算法:基于改進用戶屬性評分的協同過濾算法
輸入:用戶集合U和與之對應的已訪問或已評分的資源集I,以及系統預設的用戶屬性集合λ。
輸出:用戶集合U對應的Top-Un推薦集。
過程:
步驟1 根據相似性計算方法篩選出用戶U對應的N個最相似用戶U′。
步驟2 統計出相似用戶中相同的用戶屬性。
步驟3 根據用戶屬性相似度公式列出N個用戶屬性多項式并相加得到所有相似對用戶的相似度的和res。
步驟4 將1,2,3,…,n等分別依次帶入屬性評分λ1,λ2,λ3,…,λn中,使得res取得最大值。
步驟5 利用最終的計算公式重新對用戶進行相似度計算,篩選出Topn相似用戶。
步驟6 利用預測評分公式求出M個預測項目預測評分集合M{Y1,Y2,Y3,…,Ym}。
步驟7 由大到小排列預測評分,篩選出前N個預測項目,作為用戶U推薦集合Un。
其總體框架描述如下:
算法:基于改進用戶屬性評分的協同過濾算法
輸入:用戶-項目評分矩陣S,用戶集合U,項目集合I,相似用戶個數k。
輸出:預測結果top-N集合。
步驟1 根據式(8)計算用戶A與用戶B的距離。
(1)Smax,Smin; //系統最大值,最小值
(2)SAmin,SAmax,SBmin,SBmax; //A,B用戶的最小最大評分值
(3) Common[]; //保存A,B用戶共同評分項目
(4) for i ∈m do //i屬于m的評分項目
(5) if i∈n then
(6) Common.add(i);//保存共同評分項目
(7) else;
(8) end for
(9) 計算A,B用戶之間的距離
(10) for i ∈ Common then
(11) sum+=(SAi-SAmin)/(SAmax-SAmin)-(SBi-SBmin)/(SBmax-SBmin);
(12) end for
(13) dis=(sum+(Smax-Smin))/(Common.len+1);
步驟2 利用式(9)計算用戶屬性相似度。
步驟3 計算用戶A的前k個最相似用戶。
(1) com_user[]; //用戶A相似用戶集合
(2) sim_user[]; //保存用戶A與其他用戶的相似度
(3) for u ∈ U do
(4) //dis(A,u)利用步驟1
(5) //sim_property(A,u)利用步驟2計算
(6)sim_result=(1-dis(A,u)/(Smax-Smin))×sim_property(A,u);
(7) sim_user.add(sim_result);
(8) end for
(9) //選擇前k個最相似的用戶
(10) com_user=sorted(sim_user.value, reverse=True, number=k);
步驟4 計算用戶m對未評分項目的預測評分
(1) un_As[]; //用戶A未評分項目
(2) for i ∈ I do
(3) if i ∈ A then
(4) ;
(5) else
(6) un_As.add[i]; //保存用戶未評分項
(7) end for
(8) A_p[];//保存用戶A對未評分項的預測評分
(9) A_avg; //用戶A對項目的平均評分
(10) for i ∈ un_As do
(11) for u ∈ com_user do
(12) //Rui為用戶u對項目i的評分;
(13) //Ru_avg為用戶u對項目的平均評分
(14) sum1+=sim(A,u)×(Rui-Ru_avg);
(15) sum2+=sim(A,u);
(16) end for
(17) A_p.add(A_avg+sum1/sum2);
(18) end for
(19) //將預測結果排名,選擇評分較高的N個項目
(20)top-N=sorted(A_p.value, reverse = True,number = N);
3.1.1 平均絕對誤差
平均絕對誤差(MAE)是用于衡量推薦質量好壞的標準,其定義請參見文獻[15-17]。假設預測的用戶評分集合為 {P1,P2,P3,…,Pn}, 對應的實際用戶評分集合為 {q1,q2,q3,…,qn}, 則具體的MAE計算式(11)為
(11)
3.1.2 準確率
準確率是從推薦總數中相關推薦的比例。準確率越高,推薦性能越好。準確率的具體計算式(12)描述如下
(12)
式中:Hits為正確推薦項目數,N為推薦總數。
3.1.3 評分預測
評分預測是推薦系統中較為常用的一種測量推薦算法準確度的手段,其預測結果能夠很好地衡量推薦算法的推薦精度。主要評分預測式(13)如下
(13)
實驗采取由明尼蘇達大學的GroupLens研究小組收集的數據集MovieLens(ML)和第二屆推薦系統信息異構與融合國際研討會上發布的HetRec2011-MovieLens(HRML)數據集上進行測試實驗,其中ML數據集有943名用戶對1682部電影進行了評級,評級為10萬,每個用戶至少有20部電影的評級記錄。ML數據集的密度為6.3047%。第二組HRML是在第二屆推薦系統信息異構與融合國際研討會上發布的。我們隨機抽取1036名用戶和1300部電影的HRML數據集,總收視率為106 210。提取數據集的稀疏性為92.1139%。實驗對所提出的算法分別與PCC-CF、SPCC-CF、NHSM-CF以及UPUC-CF算法進行比較。整個實驗設計分為兩個實驗,實驗1為基于評分偏好的用戶相似性(UAS-CF)實驗,實驗2為基于改進用戶屬性評分的協同過濾算法(IUAS-CF)實驗。
(1)基于評分偏好的用戶相似性
實驗中針對本文提出的基于評分偏好的用戶相似性計算公式,將其與傳統相似度計算方法以及其它改進算法分別在MovieLens(ML)數據集和HetRec2011-MovieLens(HRML)數據集上進行準確度比較。本實驗采用平均絕對值誤差MAE為評價標準進行實驗,在最鄰近項目數量k=10,20,30,40,50,60,70,80,90,100的情況下,對用戶進行多組實驗。
圖1和圖2為ML數據集和HRML數據集下UPUC-CF和UAS-CF的MAE值比較實驗結果,從圖中結果可以看出,在對一些個性用戶的評分計算上進行了改進的情況下,并且在將用戶評分進行歸一化之后,由于考慮了某些極端用戶對系統帶來的影響,在鄰近數量較少時,改進后的算法相較于UPUC-CF而言在推薦性能上都有較大的提升,而且隨著K的取值變化,改進算法的MAE值都明顯低于UPUC-CF算法,這說明該算法對用戶的預測評分更接近于用戶的實際評分,即預測準確度更高。

圖1 ML數據集下UPUC-CF和UAS-CF比較

圖2 HRML數據集下UPUC-CF和UAS-CF比較
(2)基于改進用戶屬性評分的協同過濾算法
將ML數據集和HRML數據集中的80%作為訓練集用于計算在用戶屬性個數不同的情況下每種屬性的評分,由于在推薦過程中影響用戶抉擇的用戶屬性個數不多,以及不同的用戶屬性對用戶的影響程度不一樣,分別用1,2,3,…,n對i=λ1,λ2,λ3,…,λn進行迭代,對于每一對相似用戶其相似性simF(A,B),當所有相似性的和為最大時,此時的用戶屬性i取得最優解-這一取值隨著數據集的不同而不同。用戶屬性見表1。

表1 用戶屬性
表1中,用戶的性別、年齡等是用戶在系統中存在的屬性,λ1,λ2等是指用戶的屬性評分。
根據訓練集所得出來的用戶屬性的權值,將其引入到改進的推薦算法中,最后實驗對IUAS-CF算法測試其推薦性能。在實驗過程中,從訓練集中得出λi在不同個數的情況下的不同取值,根據實驗結果取最好情況下的λi個數,并由繼續對IUAS-CF算法與其它算法的性能比較。
圖3和圖4顯示了不同算法在ML數據集上的MAE和precision實驗結果。在圖3中,所有算法的MAE都隨著最近鄰數的增加而減少,而且筆者所提出的算法在整個 Top-K 范圍內相較于其它算法取得了更好的MAE值,說明所提出的IUAS-CF算法的推薦精度更高。此外,從圖4可以看出,隨著最近鄰個數的增加,算法的推薦精度也達到了較好的結果。因此可以驗證該算法的有效性,且能提高ML數據集的推薦性能。

圖3 ML數據集上各種推薦算法MAE比較

圖4 ML數據集上各種推薦算法precision比較
圖5和圖6顯示了不同算法在HRML數據集上的MAE和precision實驗結果。從圖中結果可以看出,不同的推薦算法隨著最近鄰數量的增加,其變化情況與圖3和圖4基本相同,不論是UAS-CF算法還是引入用戶屬性的IUAS-CF算法,都比其它推薦算法的推薦精度更高,且在引入用戶屬性后的IUAS-CF算法,相比原先的UAS-CF推薦效果更好,說明用戶屬性評分確實能在一定程度上影響用戶的偏好。

圖5 HRML數據集下各個算法MAE比較

圖6 HRML數據集下各個算法precision比較
因此,從ML數據集和HRML數據集上的實驗可以看出,在綜合考慮評價值范圍差異影響和用戶屬性評分的情況下,本文所提出的算法要優于其它推薦算法,最終的 IUAS-CF 算法不僅減小了個性用戶對相似度計算帶來的影響,且對系統的數據稀疏性及冷啟動問題都有了一定的改善。
本文以提高用戶體驗及推薦質量為目標,在考慮了個性化用戶的同時,利用用戶屬性所存在的隱式特征信息,提出了一種基于改進用戶屬性評分的協同過濾算法。算法利用訓練集訓練用戶屬性的權值,繼而改進相似度計算方法,根據相似簇和最近鄰生成最優預測評分,最終求出用戶的Top-N推薦集。實驗結果表明,本文的改進算法有效地提高了推薦系統的準確率。