董躍華,朱純煜
(江西理工大學(xué) 信息工程學(xué)院,江西 贛州 341000)
海量的數(shù)據(jù)成為了最具價(jià)值的財(cái)富,也是信息技術(shù)發(fā)展的必然產(chǎn)物。但對(duì)于個(gè)人而言,并非所有的數(shù)據(jù)都是有價(jià)值的,大多都是無(wú)用的數(shù)據(jù),隨著互聯(lián)網(wǎng)技術(shù)、信息技術(shù)、物聯(lián)網(wǎng)技術(shù)、云計(jì)算等數(shù)字化信息技術(shù)的發(fā)展,全球范圍內(nèi)數(shù)據(jù)呈爆炸式增長(zhǎng),每天都有大量的圖片、博客、視頻發(fā)布到網(wǎng)上,信息化技術(shù)的發(fā)展給企業(yè)的沖擊量是巨大的。首先,以今日頭條及抖音為代表的信息流產(chǎn)品,且國(guó)內(nèi)最頂尖的互聯(lián)網(wǎng)公司BAT也紛紛發(fā)力信息流,像百度手百的feed流,阿里UC的feed流,騰訊微信里的看一看,其次是像淘寶、京東等電商類(lèi)產(chǎn)品,而在上述APP中其算法的核心部分就是推薦算法。因此,個(gè)性化推薦算法[1]顯得尤為重要。而在推薦算法中核心工作之一就是相似度的計(jì)算,傳統(tǒng)的協(xié)同過(guò)濾算法中主要通過(guò)分析用戶(hù)-項(xiàng)目的評(píng)分矩陣信息來(lái)進(jìn)行相似度計(jì)算,這類(lèi)方法簡(jiǎn)單直觀,且應(yīng)用最為廣泛。然而,在大多數(shù)推薦系統(tǒng)中都存在著評(píng)分?jǐn)?shù)據(jù)的稀疏性問(wèn)題,使得在計(jì)算用戶(hù)或項(xiàng)目的相似度上無(wú)法能夠真實(shí)有效地反映出用戶(hù)的興趣愛(ài)好,存在著稀疏性和可擴(kuò)展性不足等問(wèn)題。
為了進(jìn)一步提高基于用戶(hù)的推薦算法的推薦精度,及緩解目前該算法存在的一些缺陷,如數(shù)據(jù)稀疏性、冷啟動(dòng)和準(zhǔn)確率下降等問(wèn)題[2-4],許多學(xué)者針對(duì)每種問(wèn)題分別提出了自己的改進(jìn)算法,例如,針對(duì)數(shù)據(jù)稀疏性問(wèn)題,劉玉葆等[5]提出一種不確定近鄰的協(xié)同過(guò)濾算法(UNCF),算法對(duì)用戶(hù)和其產(chǎn)品之間的相似度進(jìn)行計(jì)算,通過(guò)不確定近鄰的動(dòng)態(tài)度量方法對(duì)預(yù)測(cè)結(jié)果進(jìn)行推薦,有效地緩解了數(shù)據(jù)稀疏性問(wèn)題;Zhang Jia等[6]從局部和全局角度出發(fā),融入了用戶(hù)的偏好信息,最終提出了一種基于用戶(hù)偏好聚類(lèi)的協(xié)同過(guò)濾算法(UPUC-CF),該方法基于這樣一個(gè)假設(shè),即用戶(hù)具有不同的評(píng)分習(xí)慣,進(jìn)而將用戶(hù)分配到具有不同偏好的用戶(hù)組中以此來(lái)度量用戶(hù)的相似性;Liu等[7]分析了PIP的不足,提出了一種啟發(fā)式相似模型(heuristic similarity model,NHSM-CF)。NHSM-CF不僅考慮了相似度測(cè)度的3個(gè)因素:接近度、影響度和評(píng)分的受歡迎度,而且注重常用評(píng)分項(xiàng)目的比例和用戶(hù)偏好,該模型在與傳統(tǒng)的推薦算法相比,在預(yù)測(cè)評(píng)分及推薦質(zhì)量上均具有較大的提高;Hamidreza Koohi等[8]為提高系統(tǒng)的推薦精度,提出了一種模糊C-means方法,實(shí)驗(yàn)結(jié)果表明該方法相比傳統(tǒng)的K-means聚類(lèi)算法具有更好的推薦效果;針對(duì)新項(xiàng)目冷啟動(dòng)和新用戶(hù)冷啟動(dòng)等難題,Biswas S等[9]在考慮基于模型的推薦系統(tǒng)中,將問(wèn)題形式化為離散優(yōu)化問(wèn)題,以最小化用戶(hù)的真實(shí)與預(yù)測(cè)評(píng)分之間的最小平方誤差,并提出了幾種可擴(kuò)展的啟發(fā)式算法;于洪等[10]提出了用戶(hù)時(shí)間權(quán)重信息概念,利用三分圖的形式來(lái)描述用戶(hù)、項(xiàng)目、屬性、標(biāo)簽之間的關(guān)系,提出了一種解決新項(xiàng)目冷啟動(dòng)問(wèn)題的推薦算法;Jamali等[11]利用sigmoid函數(shù)提出了一種改進(jìn)的基于PCC-CF的相似度度量方法(SPCC-CF),強(qiáng)調(diào)了常用評(píng)分項(xiàng)的重要性;為了能夠更好地提取用戶(hù)或項(xiàng)目屬性的隱式特征,周洋等[12]利用自編碼器原理提出一種基于棧式降噪自編碼器(SDAE)的協(xié)同過(guò)濾算法,通過(guò)利用SDAE處理評(píng)分矩陣獲得電影的特征編碼和經(jīng)過(guò)PCA處理項(xiàng)目屬性得到的項(xiàng)目屬性編碼,結(jié)合特征編碼及屬性編碼計(jì)算項(xiàng)目之間的相似度,最終得出top-N推薦列表;李夢(mèng)夢(mèng)等[13]也將棧式降噪自編碼器融入到基于用戶(hù)的協(xié)同過(guò)濾算法中,不同的是其根據(jù)SDAE模型得到用戶(hù)的隱表示,其次分析了用戶(hù)對(duì)項(xiàng)目的屬性偏好,在最終的評(píng)分預(yù)測(cè)階段引入了時(shí)間衰減項(xiàng),動(dòng)態(tài)預(yù)測(cè)訪問(wèn)概率,提高了推薦質(zhì)量;針對(duì)上述不足以及相關(guān)創(chuàng)新思想,為提取用戶(hù)的隱式特征,本文在利用已有用戶(hù)共同評(píng)分項(xiàng)目的基礎(chǔ)上分析評(píng)分的相似性,將用戶(hù)評(píng)分進(jìn)行歸一化,在改進(jìn)相似度的基礎(chǔ)上結(jié)合對(duì)用戶(hù)屬性評(píng)分量化,提出一種基于改進(jìn)用戶(hù)屬性評(píng)分的協(xié)同過(guò)濾算法(IUAS-CF),有效地預(yù)測(cè)了用戶(hù)的實(shí)際評(píng)分,提高了推薦質(zhì)量。
協(xié)同過(guò)濾算法可以說(shuō)是目前最為普遍的,最有應(yīng)用前景的推薦算法。通俗地說(shuō),協(xié)同過(guò)濾算法核心思想就是借鑒與你相關(guān)的人群的觀點(diǎn)來(lái)進(jìn)行推薦。一般地,基于用戶(hù)的協(xié)同過(guò)濾算法推薦步驟就是根據(jù)用戶(hù)-項(xiàng)目評(píng)分矩陣計(jì)算出該用戶(hù)與其他用戶(hù)的相似度,繼而從與該用戶(hù)最相似的用戶(hù)中選取若干個(gè)作為最近鄰,再利用最近鄰用戶(hù)集合來(lái)預(yù)測(cè)該用戶(hù)的未評(píng)分項(xiàng)目分?jǐn)?shù),最終選取最高的top-N預(yù)測(cè)項(xiàng)目作為該用戶(hù)的推薦集推薦給用戶(hù)。
在推薦系統(tǒng)中,主要是計(jì)算用戶(hù)之間的相似度以及對(duì)用戶(hù)進(jìn)行預(yù)測(cè)評(píng)分。相似度計(jì)算方法主要分為兩種,一種是相似度度量方法,另外一種是距離度量方法。
假設(shè)兩個(gè)文本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]:歐氏距離也稱(chēng)歐幾里得距離,是最常見(jiàn)的距離度量,衡量的是多維空間中兩個(gè)點(diǎn)之間的絕對(duì)距離。計(jì)算式(1)如下
(1)
(2)余弦相似性:也叫向量相似性。將每個(gè)用戶(hù)的用戶(hù)-項(xiàng)目評(píng)分看作一個(gè)N維向量,然后將兩個(gè)向量之間的夾角余弦值作為用戶(hù)之間的相似度。其相似度計(jì)算式(2)如下
(2)
(3)皮爾森相關(guān)系數(shù):利用用戶(hù)-項(xiàng)目的評(píng)分矩陣,去除用戶(hù)的非共同評(píng)分項(xiàng),利用用戶(hù)的共同評(píng)分項(xiàng)目,進(jìn)而計(jì)算相似性。其計(jì)算式(3)如下
(3)
(4)評(píng)分預(yù)測(cè):預(yù)測(cè)評(píng)分是對(duì)當(dāng)前用戶(hù)對(duì)該項(xiàng)目預(yù)測(cè)的可能評(píng)分值,預(yù)測(cè)評(píng)分是目前大多數(shù)推薦系統(tǒng)中衡量系統(tǒng)的推薦精度主要方法。其主要計(jì)算式(4)如下
(4)
在基于用戶(hù)的協(xié)同過(guò)濾推薦算法中,有很多都忽略了用戶(hù)自身所存在著影響用戶(hù)抉擇的用戶(hù)屬性,雖然這些屬性在語(yǔ)義上難以看出他們之間的關(guān)系,但利用一些特征提取方法可以在一定程度上挖掘用戶(hù)或產(chǎn)品之間的聯(lián)系。例如女性用戶(hù)對(duì)于愛(ài)情、浪漫等類(lèi)型的電影更為喜愛(ài),男性用戶(hù)更愿意在電子產(chǎn)品或運(yùn)動(dòng)設(shè)施上進(jìn)行消費(fèi)。因此,為更好地利用用戶(hù)的隱式特征來(lái)計(jì)算用戶(hù)之間的相似度,本文將用戶(hù)自身存在的屬性引入到用戶(hù)相似度計(jì)算公式中,引入用戶(hù)屬性評(píng)分概念,即賦予每個(gè)用戶(hù)屬性相應(yīng)的權(quán)值,以平衡不同屬性對(duì)用戶(hù)選擇所產(chǎn)生的影響。
一些網(wǎng)站的評(píng)分系統(tǒng)都大致不一,但不論是5、10分制的評(píng)分,系統(tǒng)所設(shè)的分?jǐn)?shù)極值一定程度上無(wú)法反應(yīng)出個(gè)性化用戶(hù)的興趣愛(ài)好,即系統(tǒng)中存在著一些比較有個(gè)性的用戶(hù),其評(píng)分標(biāo)準(zhǔn)不同于一般的評(píng)分分布,可能會(huì)出現(xiàn)沒(méi)有系統(tǒng)的最值評(píng)分情況,或其評(píng)分基本無(wú)波動(dòng),即系統(tǒng)中存在的用戶(hù)評(píng)價(jià)值范圍差異,針對(duì)此類(lèi)用戶(hù)的評(píng)價(jià)值范圍差異所帶來(lái)的影響,本文給出相應(yīng)的改進(jìn)方法,改進(jìn)后,將個(gè)性化用戶(hù)與一般用戶(hù)的評(píng)分矩陣融合計(jì)算相似度,減小了因評(píng)價(jià)值范圍差異所帶來(lái)的影響。
整個(gè)算法的改進(jìn)思路如下,首先,對(duì)于給定評(píng)分均差,其計(jì)算式(5)如下
(5)
式中:Dis(A,B)為UserA和UserB之間的評(píng)分距離,CA,B為UserA和UserB相同的評(píng)分項(xiàng)目集合,SAi為UserA對(duì)集合中第i項(xiàng)的評(píng)分,SBi為UserB對(duì)集合中第i項(xiàng)的評(píng)分。
評(píng)分均差雖然在一定程度上能反應(yīng)用戶(hù)之間的相似性,而在某些極端情況下,即用戶(hù)之間存在極少的共同0時(shí),這時(shí)會(huì)導(dǎo)致研究對(duì)象評(píng)分集合沒(méi)有交集,而整個(gè)式子無(wú)意義,因此對(duì)上式進(jìn)行修正后得到式(6)
(6)
經(jīng)過(guò)修正后,公式避免了分母為零時(shí)式子無(wú)意義的情況,但是當(dāng)此時(shí)的CA,B=0時(shí)即UserA和UserB沒(méi)有相同的評(píng)分項(xiàng)目集合,意味著用戶(hù)A和B之間沒(méi)有交集,用戶(hù)之間相似性達(dá)到最低,然而Dis(A,B)=0, 即用戶(hù)之間的評(píng)分距離為零,也意味著用戶(hù)之間相似性最高,因而兩者之間相互矛盾,繼續(xù)對(duì)上式調(diào)整,式(7)如下
(7)
式中:Smax-Smin表示UserA和UserB共有的評(píng)分最大值和最小值的差值。即當(dāng)用戶(hù)之間沒(méi)有共同評(píng)分項(xiàng)目時(shí),此時(shí)將系統(tǒng)設(shè)定的最大評(píng)分差值給予用戶(hù),倆用戶(hù)之間距離最大,相似性最低,符合實(shí)際情況;而當(dāng)用戶(hù)之間存在共同評(píng)分項(xiàng)目時(shí),這一項(xiàng)的加入也不會(huì)影響其最終計(jì)算結(jié)果。所加入的這一項(xiàng)的取值只要大于等于Smax-Smin即可,因?yàn)槿绻∮赟max-Smin, 若兩個(gè)用戶(hù)之間只有一個(gè)共同評(píng)分項(xiàng),或兩個(gè)用戶(hù)的評(píng)分差均為Smax-Smin, 這會(huì)導(dǎo)致兩個(gè)用戶(hù)之間存在共同評(píng)分項(xiàng)目而其相似性卻不如沒(méi)有共同評(píng)分項(xiàng)目的高,與實(shí)際情況相反,因此取Smax-Smin最合適。
對(duì)于存在的一些比較有個(gè)性的用戶(hù),其評(píng)分標(biāo)準(zhǔn)不同于一般的評(píng)分分布,可能會(huì)出現(xiàn)沒(méi)有系統(tǒng)的最值評(píng)分情況,或其評(píng)分基本無(wú)波動(dòng),對(duì)于這樣的用戶(hù)我們需要將其考慮到推薦系統(tǒng)中,例如,在UserA和UserB的共同評(píng)分項(xiàng)目集合中,UserA的評(píng)分有1到5分,而UserB的評(píng)分可能是2到4分,這種情況下2分和4分對(duì)于UserB而言可能是系統(tǒng)的1分和5分,也可能存在UserA的評(píng)分均是1分,UserB的評(píng)分均是5分,UserA和UserB的評(píng)分沒(méi)有波動(dòng),而評(píng)分差距極大,按傳統(tǒng)的評(píng)分標(biāo)準(zhǔn),自然會(huì)判斷UserA和UserB的差距極大而不進(jìn)行推薦,這正是傳統(tǒng)評(píng)分系統(tǒng)的一個(gè)缺陷,算法不應(yīng)該以表面的評(píng)分?jǐn)?shù)值來(lái)判斷兩者之間的差異,而應(yīng)以用戶(hù)對(duì)物品或項(xiàng)目的喜愛(ài)程度進(jìn)行分析,因此對(duì)于同一集合中的項(xiàng)目或物品,若兩者的評(píng)分波動(dòng)一致,則判斷其相似度很高,若不一致則很低。所以基于現(xiàn)有公式的缺陷和上述的思想,對(duì)公式繼續(xù)調(diào)整,改進(jìn)式(8)如下
(8)
式中:SAmin和SBmin分別代表UserA和UserB的最小評(píng)分值,SAmax和SBmax分別代表UserA和UserB的最大評(píng)分值,主要目的在于對(duì)兩者的評(píng)分進(jìn)行歸一化,將兩者的評(píng)分拉到了同一維度中,如此可以明顯看出用戶(hù)之間對(duì)項(xiàng)目的喜愛(ài)程度波動(dòng)幅度,繼而計(jì)算用戶(hù)之間的相似性,以從用戶(hù)喜愛(ài)程度的角度去區(qū)分用戶(hù),避免了用戶(hù)相似而評(píng)分?jǐn)?shù)值不一致帶來(lái)的影響。
在現(xiàn)實(shí)生活中,用戶(hù)的年齡、性別等屬性很大程度上影響著用戶(hù)的選擇。例如,男性用戶(hù)比較偏向于買(mǎi)電子產(chǎn)品,聽(tīng)流行搖滾音樂(lè)等,而女性用戶(hù)更愿意購(gòu)買(mǎi)化妝品,聽(tīng)輕音樂(lè)等。為了體現(xiàn)出用戶(hù)的不同屬性對(duì)不同用戶(hù)的影響程度,本文將語(yǔ)義上的用戶(hù)屬性進(jìn)行數(shù)值上的轉(zhuǎn)化,利用上述改進(jìn)的基于評(píng)分偏好的相似性計(jì)算方法,本文首先對(duì)已有的數(shù)據(jù)訓(xùn)練集中的用戶(hù)進(jìn)行相似度計(jì)算,找出訓(xùn)練集中所有用戶(hù)UserI相對(duì)應(yīng)的最相似的用戶(hù)UserI′,得到一個(gè)最相似用戶(hù)對(duì)集合,對(duì)于每一對(duì)最相似用戶(hù)以及預(yù)給出的用戶(hù)屬性值λ1,λ2,λ3,…,λn, 本文給出公式用于衡量用戶(hù)對(duì)的相似情況,如式(9)所示
(9)
式中:simF(A,B) 表示倆用戶(hù)的相似程度,F(xiàn)(A∩B)i表示最相似用戶(hù)對(duì)UserA和UserB共有屬性的交集,F(xiàn)(A∪B)j表示用戶(hù)A和B共有屬性的并集。
用戶(hù)屬性的權(quán)值的訓(xùn)練方法:
首先,利用式(8)找出訓(xùn)練集中所有最相似用戶(hù)對(duì),進(jìn)一步利用式(9)對(duì)所有的最相似用戶(hù)對(duì)的屬性進(jìn)行計(jì)算并累加得到所有最相似用戶(hù)對(duì)的相似和res,由于每一對(duì)用戶(hù)是訓(xùn)練集中相似度最高的,且每一對(duì)最相似用戶(hù)其simF(A,B) 相比于其他用戶(hù)而言是最大的,因此,將1,2,3,…,n等分別依次帶入屬性評(píng)分λ1,λ2,λ3,…,λn中,當(dāng)所有最相似用戶(hù)對(duì)的相似和res達(dá)到最大時(shí),所取的用戶(hù)屬性的權(quán)值為最佳用戶(hù)屬性權(quán)值。
由于算法所求的是用戶(hù)之間的距離,所以對(duì)公式進(jìn)行調(diào)整,最終改進(jìn)的推薦算法其式(10)具體描述如下
(10)
式中:Dismax表示用戶(hù)可能存在的最大距離,simF(A,B) 表示用戶(hù)A和B的屬性相似程度。simFin(A,B) 表示用戶(hù)最終相似度。
算法步驟具體描述如下:
算法:基于改進(jìn)用戶(hù)屬性評(píng)分的協(xié)同過(guò)濾算法
輸入:用戶(hù)集合U和與之對(duì)應(yīng)的已訪問(wèn)或已評(píng)分的資源集I,以及系統(tǒng)預(yù)設(shè)的用戶(hù)屬性集合λ。
輸出:用戶(hù)集合U對(duì)應(yīng)的Top-Un推薦集。
過(guò)程:
步驟1 根據(jù)相似性計(jì)算方法篩選出用戶(hù)U對(duì)應(yīng)的N個(gè)最相似用戶(hù)U′。
步驟2 統(tǒng)計(jì)出相似用戶(hù)中相同的用戶(hù)屬性。
步驟3 根據(jù)用戶(hù)屬性相似度公式列出N個(gè)用戶(hù)屬性多項(xiàng)式并相加得到所有相似對(duì)用戶(hù)的相似度的和res。
步驟4 將1,2,3,…,n等分別依次帶入屬性評(píng)分λ1,λ2,λ3,…,λn中,使得res取得最大值。
步驟5 利用最終的計(jì)算公式重新對(duì)用戶(hù)進(jìn)行相似度計(jì)算,篩選出Topn相似用戶(hù)。
步驟6 利用預(yù)測(cè)評(píng)分公式求出M個(gè)預(yù)測(cè)項(xiàng)目預(yù)測(cè)評(píng)分集合M{Y1,Y2,Y3,…,Ym}。
步驟7 由大到小排列預(yù)測(cè)評(píng)分,篩選出前N個(gè)預(yù)測(cè)項(xiàng)目,作為用戶(hù)U推薦集合Un。
其總體框架描述如下:
算法:基于改進(jìn)用戶(hù)屬性評(píng)分的協(xié)同過(guò)濾算法
輸入:用戶(hù)-項(xiàng)目評(píng)分矩陣S,用戶(hù)集合U,項(xiàng)目集合I,相似用戶(hù)個(gè)數(shù)k。
輸出:預(yù)測(cè)結(jié)果top-N集合。
步驟1 根據(jù)式(8)計(jì)算用戶(hù)A與用戶(hù)B的距離。
(1)Smax,Smin; //系統(tǒng)最大值,最小值
(2)SAmin,SAmax,SBmin,SBmax; //A,B用戶(hù)的最小最大評(píng)分值
(3) Common[]; //保存A,B用戶(hù)共同評(píng)分項(xiàng)目
(4) for i ∈m do //i屬于m的評(píng)分項(xiàng)目
(5) if i∈n then
(6) Common.add(i);//保存共同評(píng)分項(xiàng)目
(7) else;
(8) end for
(9) 計(jì)算A,B用戶(hù)之間的距離
(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)計(jì)算用戶(hù)屬性相似度。
步驟3 計(jì)算用戶(hù)A的前k個(gè)最相似用戶(hù)。
(1) com_user[]; //用戶(hù)A相似用戶(hù)集合
(2) sim_user[]; //保存用戶(hù)A與其他用戶(hù)的相似度
(3) for u ∈ U do
(4) //dis(A,u)利用步驟1
(5) //sim_property(A,u)利用步驟2計(jì)算
(6)sim_result=(1-dis(A,u)/(Smax-Smin))×sim_property(A,u);
(7) sim_user.add(sim_result);
(8) end for
(9) //選擇前k個(gè)最相似的用戶(hù)
(10) com_user=sorted(sim_user.value, reverse=True, number=k);
步驟4 計(jì)算用戶(hù)m對(duì)未評(píng)分項(xiàng)目的預(yù)測(cè)評(píng)分
(1) un_As[]; //用戶(hù)A未評(píng)分項(xiàng)目
(2) for i ∈ I do
(3) if i ∈ A then
(4) ;
(5) else
(6) un_As.add[i]; //保存用戶(hù)未評(píng)分項(xiàng)
(7) end for
(8) A_p[];//保存用戶(hù)A對(duì)未評(píng)分項(xiàng)的預(yù)測(cè)評(píng)分
(9) A_avg; //用戶(hù)A對(duì)項(xiàng)目的平均評(píng)分
(10) for i ∈ un_As do
(11) for u ∈ com_user do
(12) //Rui為用戶(hù)u對(duì)項(xiàng)目i的評(píng)分;
(13) //Ru_avg為用戶(hù)u對(duì)項(xiàng)目的平均評(píng)分
(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) //將預(yù)測(cè)結(jié)果排名,選擇評(píng)分較高的N個(gè)項(xiàng)目
(20)top-N=sorted(A_p.value, reverse = True,number = N);
3.1.1 平均絕對(duì)誤差
平均絕對(duì)誤差(MAE)是用于衡量推薦質(zhì)量好壞的標(biāo)準(zhǔn),其定義請(qǐng)參見(jiàn)文獻(xiàn)[15-17]。假設(shè)預(yù)測(cè)的用戶(hù)評(píng)分集合為 {P1,P2,P3,…,Pn}, 對(duì)應(yīng)的實(shí)際用戶(hù)評(píng)分集合為 {q1,q2,q3,…,qn}, 則具體的MAE計(jì)算式(11)為
(11)
3.1.2 準(zhǔn)確率
準(zhǔn)確率是從推薦總數(shù)中相關(guān)推薦的比例。準(zhǔn)確率越高,推薦性能越好。準(zhǔn)確率的具體計(jì)算式(12)描述如下
(12)
式中:Hits為正確推薦項(xiàng)目數(shù),N為推薦總數(shù)。
3.1.3 評(píng)分預(yù)測(cè)
評(píng)分預(yù)測(cè)是推薦系統(tǒng)中較為常用的一種測(cè)量推薦算法準(zhǔn)確度的手段,其預(yù)測(cè)結(jié)果能夠很好地衡量推薦算法的推薦精度。主要評(píng)分預(yù)測(cè)式(13)如下
(13)
實(shí)驗(yàn)采取由明尼蘇達(dá)大學(xué)的GroupLens研究小組收集的數(shù)據(jù)集MovieLens(ML)和第二屆推薦系統(tǒng)信息異構(gòu)與融合國(guó)際研討會(huì)上發(fā)布的HetRec2011-MovieLens(HRML)數(shù)據(jù)集上進(jìn)行測(cè)試實(shí)驗(yàn),其中ML數(shù)據(jù)集有943名用戶(hù)對(duì)1682部電影進(jìn)行了評(píng)級(jí),評(píng)級(jí)為10萬(wàn),每個(gè)用戶(hù)至少有20部電影的評(píng)級(jí)記錄。ML數(shù)據(jù)集的密度為6.3047%。第二組HRML是在第二屆推薦系統(tǒng)信息異構(gòu)與融合國(guó)際研討會(huì)上發(fā)布的。我們隨機(jī)抽取1036名用戶(hù)和1300部電影的HRML數(shù)據(jù)集,總收視率為106 210。提取數(shù)據(jù)集的稀疏性為92.1139%。實(shí)驗(yàn)對(duì)所提出的算法分別與PCC-CF、SPCC-CF、NHSM-CF以及UPUC-CF算法進(jìn)行比較。整個(gè)實(shí)驗(yàn)設(shè)計(jì)分為兩個(gè)實(shí)驗(yàn),實(shí)驗(yàn)1為基于評(píng)分偏好的用戶(hù)相似性(UAS-CF)實(shí)驗(yàn),實(shí)驗(yàn)2為基于改進(jìn)用戶(hù)屬性評(píng)分的協(xié)同過(guò)濾算法(IUAS-CF)實(shí)驗(yàn)。
(1)基于評(píng)分偏好的用戶(hù)相似性
實(shí)驗(yàn)中針對(duì)本文提出的基于評(píng)分偏好的用戶(hù)相似性計(jì)算公式,將其與傳統(tǒng)相似度計(jì)算方法以及其它改進(jìn)算法分別在MovieLens(ML)數(shù)據(jù)集和HetRec2011-MovieLens(HRML)數(shù)據(jù)集上進(jìn)行準(zhǔn)確度比較。本實(shí)驗(yàn)采用平均絕對(duì)值誤差MAE為評(píng)價(jià)標(biāo)準(zhǔn)進(jìn)行實(shí)驗(yàn),在最鄰近項(xiàng)目數(shù)量k=10,20,30,40,50,60,70,80,90,100的情況下,對(duì)用戶(hù)進(jìn)行多組實(shí)驗(yàn)。
圖1和圖2為ML數(shù)據(jù)集和HRML數(shù)據(jù)集下UPUC-CF和UAS-CF的MAE值比較實(shí)驗(yàn)結(jié)果,從圖中結(jié)果可以看出,在對(duì)一些個(gè)性用戶(hù)的評(píng)分計(jì)算上進(jìn)行了改進(jìn)的情況下,并且在將用戶(hù)評(píng)分進(jìn)行歸一化之后,由于考慮了某些極端用戶(hù)對(duì)系統(tǒng)帶來(lái)的影響,在鄰近數(shù)量較少時(shí),改進(jìn)后的算法相較于UPUC-CF而言在推薦性能上都有較大的提升,而且隨著K的取值變化,改進(jìn)算法的MAE值都明顯低于UPUC-CF算法,這說(shuō)明該算法對(duì)用戶(hù)的預(yù)測(cè)評(píng)分更接近于用戶(hù)的實(shí)際評(píng)分,即預(yù)測(cè)準(zhǔn)確度更高。
圖1 ML數(shù)據(jù)集下UPUC-CF和UAS-CF比較
圖2 HRML數(shù)據(jù)集下UPUC-CF和UAS-CF比較
(2)基于改進(jìn)用戶(hù)屬性評(píng)分的協(xié)同過(guò)濾算法
將ML數(shù)據(jù)集和HRML數(shù)據(jù)集中的80%作為訓(xùn)練集用于計(jì)算在用戶(hù)屬性個(gè)數(shù)不同的情況下每種屬性的評(píng)分,由于在推薦過(guò)程中影響用戶(hù)抉擇的用戶(hù)屬性個(gè)數(shù)不多,以及不同的用戶(hù)屬性對(duì)用戶(hù)的影響程度不一樣,分別用1,2,3,…,n對(duì)i=λ1,λ2,λ3,…,λn進(jìn)行迭代,對(duì)于每一對(duì)相似用戶(hù)其相似性simF(A,B),當(dāng)所有相似性的和為最大時(shí),此時(shí)的用戶(hù)屬性i取得最優(yōu)解-這一取值隨著數(shù)據(jù)集的不同而不同。用戶(hù)屬性見(jiàn)表1。
表1 用戶(hù)屬性
表1中,用戶(hù)的性別、年齡等是用戶(hù)在系統(tǒng)中存在的屬性,λ1,λ2等是指用戶(hù)的屬性評(píng)分。
根據(jù)訓(xùn)練集所得出來(lái)的用戶(hù)屬性的權(quán)值,將其引入到改進(jìn)的推薦算法中,最后實(shí)驗(yàn)對(duì)IUAS-CF算法測(cè)試其推薦性能。在實(shí)驗(yàn)過(guò)程中,從訓(xùn)練集中得出λi在不同個(gè)數(shù)的情況下的不同取值,根據(jù)實(shí)驗(yàn)結(jié)果取最好情況下的λi個(gè)數(shù),并由繼續(xù)對(duì)IUAS-CF算法與其它算法的性能比較。
圖3和圖4顯示了不同算法在ML數(shù)據(jù)集上的MAE和precision實(shí)驗(yàn)結(jié)果。在圖3中,所有算法的MAE都隨著最近鄰數(shù)的增加而減少,而且筆者所提出的算法在整個(gè) Top-K 范圍內(nèi)相較于其它算法取得了更好的MAE值,說(shuō)明所提出的IUAS-CF算法的推薦精度更高。此外,從圖4可以看出,隨著最近鄰個(gè)數(shù)的增加,算法的推薦精度也達(dá)到了較好的結(jié)果。因此可以驗(yàn)證該算法的有效性,且能提高M(jìn)L數(shù)據(jù)集的推薦性能。
圖3 ML數(shù)據(jù)集上各種推薦算法MAE比較
圖4 ML數(shù)據(jù)集上各種推薦算法precision比較
圖5和圖6顯示了不同算法在HRML數(shù)據(jù)集上的MAE和precision實(shí)驗(yàn)結(jié)果。從圖中結(jié)果可以看出,不同的推薦算法隨著最近鄰數(shù)量的增加,其變化情況與圖3和圖4基本相同,不論是UAS-CF算法還是引入用戶(hù)屬性的IUAS-CF算法,都比其它推薦算法的推薦精度更高,且在引入用戶(hù)屬性后的IUAS-CF算法,相比原先的UAS-CF推薦效果更好,說(shuō)明用戶(hù)屬性評(píng)分確實(shí)能在一定程度上影響用戶(hù)的偏好。
圖5 HRML數(shù)據(jù)集下各個(gè)算法MAE比較
圖6 HRML數(shù)據(jù)集下各個(gè)算法precision比較
因此,從ML數(shù)據(jù)集和HRML數(shù)據(jù)集上的實(shí)驗(yàn)可以看出,在綜合考慮評(píng)價(jià)值范圍差異影響和用戶(hù)屬性評(píng)分的情況下,本文所提出的算法要優(yōu)于其它推薦算法,最終的 IUAS-CF 算法不僅減小了個(gè)性用戶(hù)對(duì)相似度計(jì)算帶來(lái)的影響,且對(duì)系統(tǒng)的數(shù)據(jù)稀疏性及冷啟動(dòng)問(wèn)題都有了一定的改善。
本文以提高用戶(hù)體驗(yàn)及推薦質(zhì)量為目標(biāo),在考慮了個(gè)性化用戶(hù)的同時(shí),利用用戶(hù)屬性所存在的隱式特征信息,提出了一種基于改進(jìn)用戶(hù)屬性評(píng)分的協(xié)同過(guò)濾算法。算法利用訓(xùn)練集訓(xùn)練用戶(hù)屬性的權(quán)值,繼而改進(jìn)相似度計(jì)算方法,根據(jù)相似簇和最近鄰生成最優(yōu)預(yù)測(cè)評(píng)分,最終求出用戶(hù)的Top-N推薦集。實(shí)驗(yàn)結(jié)果表明,本文的改進(jìn)算法有效地提高了推薦系統(tǒng)的準(zhǔn)確率。