張忠海,夏 宇,2*,楊舒波
(1. 江西師范大學(xué)地理與環(huán)境學(xué)院,330022,南昌;2. 鄱陽湖濕地與流域研究教育部重點實驗室,330022,南昌)
信息過載使用戶難以快速地從現(xiàn)有信息中獲取感興趣的信息[1],推薦系統(tǒng)在極大程度上緩解了這個問題?,F(xiàn)有研究表明,融合情景的推薦結(jié)果明顯優(yōu)于非情景信息的推薦結(jié)果[2-3]。移動定位技術(shù)的發(fā)展,使得用戶的位置信息、身份信息、周圍的人以及這些信息的變化很容易獲取,并以位置為核心,這構(gòu)成了最初的情景信息[4]。Brown認(rèn)為時間、溫度和季節(jié)等也會對用戶產(chǎn)生影響[5],此后用戶的情緒[6]、用戶感興趣的對象[7]以及身體狀況[8]等被加入到情景信息。隨著情景維度的增多,不同用戶對同一項目的評價可能在2個完全不同的情景下完成,這種情況下直接使用經(jīng)典協(xié)同推薦很容易得到錯誤的用戶相似度,低維的個性化推薦算法無法直接適用于高維的個性化推薦。為了解決這個問題,一些研究從情景預(yù)過濾的角度分析,主要在于進(jìn)一步提高用戶相似度的精度,如在情景相似的前提下,計算用戶相似度[9-10];對項目的內(nèi)容特征進(jìn)行聚類[11-12];或以不同的權(quán)重綜合考慮多種相似度[13-14]。這些研究在預(yù)過濾的前提下進(jìn)行協(xié)同推薦,使用戶的可用數(shù)據(jù)急劇下降,冷啟動問題更加突出,對于用戶數(shù)據(jù)原本較少的領(lǐng)域,如旅游領(lǐng)域,算法難以適用,對用戶偏好的研究不足,無法動態(tài)地適應(yīng)情景變化。近年來對情景建模的推薦算法研究逐漸增加,對語義分析和情景的影響考慮得更加細(xì)致,包括用戶情感方向和特殊情景下對用戶行為的抑制等[15],建模過程復(fù)雜,用戶偏好的改變或興趣漂移,會使算法成本顯著增加,情景建模需要大量文檔數(shù)據(jù),模型精度依賴于文本解析算法的精度,算法更適用于基于屬性的個性化推薦?;谏鲜龇治?,本文提出一種適應(yīng)情景變化的推薦算法,在經(jīng)典協(xié)同推薦的基礎(chǔ)上,通過計算用戶對情景的效用,以情景效用補(bǔ)償情景變化的影響,動態(tài)地適應(yīng)情景變化,不用進(jìn)行復(fù)雜的建模和計算,不會降低數(shù)據(jù)的利用率,算法適用性強(qiáng)。
適應(yīng)情景變化的協(xié)同推薦算法分為情景效用評價和評分預(yù)測2個階段:情景效用評價發(fā)生在推薦前,對每一個具體用戶,計算用戶對情景的效用,量化用戶對情景的偏好;評分預(yù)測時比較當(dāng)前情景和歷史情景的差異,在經(jīng)典協(xié)同推薦算法[16]的基礎(chǔ)上,通過情景效用調(diào)整用戶在當(dāng)情景下對目標(biāo)項目的評分。本文引入用戶情景效用概念,給出計算情景效用的有效方法,并提出了一種適應(yīng)情景變化的協(xié)同推薦模型和算法。實驗表明,本算法可以動態(tài)地適應(yīng)情景變化,并能有效的提高推薦質(zhì)量。
行為學(xué)認(rèn)為,人自身的狀態(tài)和所處環(huán)境狀態(tài)的相關(guān)參數(shù)都被考慮在內(nèi)之后,人的行為具有相對穩(wěn)定的偏好[17]??梢酝ㄟ^對數(shù)據(jù)統(tǒng)計分析,定量研究影響用戶行為的因素,來把握用戶的行為[18-19],這說明用戶的行為是可以度量的[20-21],這種行為往往反應(yīng)用戶的偏好。經(jīng)典的協(xié)同推薦并不分析用戶偏好,僅在計算用戶相似度后,根據(jù)公式將滿足要求的用戶項目推薦給目標(biāo)用戶,但此時的情景與當(dāng)時的情景可能有很大不同,直接推薦可能并不符合用戶需求,需要根據(jù)情景差異進(jìn)行調(diào)整。事實上,經(jīng)典協(xié)同推薦只考慮了用戶對項目的興趣度,并沒有考慮情景變化對用戶的影響。
不同領(lǐng)域?qū)η榫叭狈y(tǒng)一的表達(dá),本文從現(xiàn)有研究中選擇項目情景、用戶情景、商業(yè)情景、社會情景、時間情景、物理情景和網(wǎng)絡(luò)情景等作為本文考慮的主要情景,并將每種情景劃分為不同的子情景,按層次樹結(jié)構(gòu)進(jìn)行組織,如圖1。情景層次化有助于情景的擴(kuò)展,能夠更好地適應(yīng)不斷變化的上下文環(huán)境。
圖1 情景層次樹模型
將情景(指子情景,下同)作為影響用戶評分的單位,同一情景的具體情況不同對用戶的影響也有差異,如當(dāng)一些游客選擇旅游景點時,距離的遠(yuǎn)近可能對游客產(chǎn)生不同程度的影響??紤]要計算用戶對情景的效用,所選取的情景應(yīng)是具有一般性、穩(wěn)定性的主要情景,如項目的位置、價格和商業(yè)環(huán)境的服務(wù)、質(zhì)量等,進(jìn)一步將所考慮的情景細(xì)分為若干個類別,不同的類別對用戶的影響是不同的,對子情景進(jìn)行分類,如表1。對于每個用戶,從表中選取影響該用戶的若干個主要情景。
表1 子情景分類
本文引入經(jīng)濟(jì)學(xué)中的基數(shù)效用論,用效用度量用戶消費的滿足程度。偏好的差異導(dǎo)致效用的差異,可以通過用戶效用來反映用戶偏好。在推薦領(lǐng)域,效用可以視為用戶對項目的評分,由項目和項目所處情景決定,用戶的最終評分表現(xiàn)為用戶對項目效用和對各情景效用的疊加,當(dāng)各分效用已知時,就可以求出用戶對具體項目的總效用。
設(shè)項目i的所有情景分類為Ti={ti,1,ti,2,…,ti,j},ti,j= {0,1},用戶對所有情景下不同分類的效用為kj= {k1,k2, …,kj}。根據(jù)基數(shù)效用論,用戶對項目的效用可以用如下公式表示:
Si=∑nj=1kjti,j
(1)
式中:ti,j取值1或0,表示存在或不存在,同一時間一個情景下最多只能有一個分類存在;kj表示用戶對ti,j的效用,Si表示用戶對項目i的總效用,即評分。如用戶在選擇旅游景點時主要考慮距離和價格2個情景,并且用戶對距離的效用為近(2)、一般(1)、遠(yuǎn)(0),對價格的效用為低(3)、一般(2)、高(1),對其它情景效用為0,則用戶對距離近且價格一般的景點的總效用為:2×1+1×0+0×0+3×0+2×1+1×0+0×0+…=4。
當(dāng)i=1,2,3,…,m時,與線性最小二乘法的基本公式一致:
∑nj=1Xi,jβj=yi
(2)
式中:m表示等式個數(shù),n表示未知數(shù)個數(shù),m>n,通過m個實測值可以求得使殘差平方和最小的β值,即可以根據(jù)m條用戶數(shù)據(jù)求得用戶對情景的效用。
本文在經(jīng)典協(xié)同推薦基礎(chǔ)上進(jìn)行改進(jìn),將算法分為預(yù)測階段和調(diào)整階段。預(yù)測階段使用經(jīng)典算法進(jìn)行預(yù)測,首先根據(jù)所有用戶和項目構(gòu)建用戶項目-矩陣,然后根據(jù)用戶-項目矩陣計算用戶之間的相似度,最后根據(jù)公式(3)計算出用戶對項目的預(yù)測值,本文相似度計算采用皮爾遜相關(guān)系數(shù)。
用戶u對項目i的評分預(yù)測公式如下:
(3)
計算出用戶對項目的評分后,進(jìn)一步考慮當(dāng)前情景與歷史情景的差異,調(diào)整用戶對項目的評分。分析公式(1),對于相同項目i,不同的情景t和c有:
Si,c=Si,t+∑nj=1kj(cj-tj)
(4)
式中:Si,t表示情景t下用戶的總效用;Si,c表示情景c下用戶的總效用。
適應(yīng)情景變化的推薦算法:
輸入:目標(biāo)用戶數(shù)據(jù),其他用戶數(shù)據(jù);
輸出:目標(biāo)用戶的推薦集;
偽碼描述:
1: Input current user data (u,i,c);
2: forMitemi%M表示參與效用計算的數(shù)據(jù)量;
圖2 適應(yīng)情景變化的協(xié)同推薦
3: build I×C matrixC(i,c);%構(gòu)建項目-情景矩陣;
4:build U×I matrixR(u,i);%構(gòu)建用戶-項目矩陣;
5:for all itemsi;
6:User utility:k(u,j)=pinv(C(i,c))*R(u,i)';%j表示用戶效用的個數(shù);
7:for all neighbor usersb;
8:for common itemsi;
9:sim(a,b)=
10:forallitemsi;
11:ifsim(u,i)>δ%δ表示相似度閾值;
13:forallp(u,i);
14:S(u,i)=P(u,i)+∑j=1k(u,j)×(cj-tj);
15:returnTopN(S(u,i))。
實驗的硬件環(huán)境為Inter(R) Core (TM) i5-7300HQ CPU @2.50GHz 2.50GHz,8G內(nèi)存。軟件環(huán)境為Windows10,Matlab2017a,算法使用Matlab腳本語言編寫。
算法通過解超定方程的方式來擬合用戶的情景效用,用戶數(shù)據(jù)必須大于所考慮的所有情景類別個數(shù)。采用模擬數(shù)據(jù)的方式進(jìn)行仿真實驗[22-24]可用于評價復(fù)雜情景感知推薦算法[25],能避免實際數(shù)據(jù)中存在的稀疏性和冷啟動等問題,更好地驗證算法的有效性。考慮到一些領(lǐng)域用戶的歷史數(shù)據(jù)量相對較少,為了保證用戶有足夠的數(shù)據(jù),選取的主要子情景數(shù)量要適中。不同領(lǐng)域,用戶所關(guān)注的情景大不相同,故實驗考慮5個較普遍的情景,每個情景分為3個類別,共15個效用值。每個用戶對情景的偏好和每個項目的情景類別用隨機(jī)數(shù)函數(shù)產(chǎn)生,不同的用戶所考慮的情景不同,為了能夠統(tǒng)一表達(dá),用戶偏好可以為0,如User={p1,p2,p3,p4,p5},pi的取值為[0,5],Item={l1,l2,l3,l4,l5},li的取值為[1,3],通過公式(3)計算用戶對項目的評分。共模擬1 000個用戶和1 000個項目,每個用戶從1 000條數(shù)據(jù)中隨機(jī)選擇40個項目進(jìn)行評分,部分?jǐn)?shù)據(jù)如表2、表3。文獻(xiàn)[12]指出,當(dāng)鄰居數(shù)達(dá)到20時,推薦結(jié)果的精度,不會隨鄰居數(shù)量增加而提高,從模擬數(shù)據(jù)中抽取至少擁有20個鄰居的用戶進(jìn)行實驗。
表2 用戶偏好
表3 項目情景類別
本文采用常用的平均絕對誤差(MAE)作為度量標(biāo)準(zhǔn),MAE值越小,準(zhǔn)確性越高,設(shè)預(yù)測的用戶評分集合表示為{p1,p2, …,pN},對應(yīng)的實際用戶評分集合為{q1,q2, …,qN},則平均絕對偏差MAE定義為:
(5)
對1 000個用戶的數(shù)據(jù)進(jìn)行分析,選取其中334個符合條件的用戶。對于每個用戶,模擬1個項目情景作為歷史情景,根據(jù)鄰居的評分使用經(jīng)典算法來預(yù)測目標(biāo)用戶的評分;模擬3個項目作為當(dāng)前情景,為表現(xiàn)與歷史情景的差異,設(shè)置1個項目情景與歷史情景完全相同,1個項目情景明顯優(yōu)于歷史情景,1個項目情景明顯低于歷史情景,計算用戶的實際評分,部分?jǐn)?shù)據(jù)如表4。
表4 當(dāng)前項目與部分歷史項目
首先使用經(jīng)典協(xié)同推薦算法求基礎(chǔ)預(yù)測值。分別計算3種情況的MAE,相同情景、不同情景1(優(yōu)于歷史情景)和不同情景2(低于歷史情景),重復(fù)實驗10次,如圖3。實驗發(fā)現(xiàn):當(dāng)歷史情景與當(dāng)前情景相同時,經(jīng)典的協(xié)同推薦算法有較高的推薦質(zhì)量;當(dāng)歷史情景與當(dāng)前情景差異較大時,經(jīng)典推薦方法精度極不穩(wěn)定,具有隨機(jī)性。原因是,經(jīng)典推薦方法假設(shè)歷史情景與當(dāng)前情景總是相同,但實際情況往往與此不同,而當(dāng)歷史情景與當(dāng)前情景差異很大時,經(jīng)典方法可能會給出錯誤的結(jié)果。圖中橫軸表示實驗次數(shù),縱軸表示MAE。
圖3 經(jīng)典算法不同情況下的MAE
然后計算用戶對情景的效用。效用通過解方程求取,為了保證最終的推薦質(zhì)量,需要保證用戶對情景效用的精度。用M表示參與計算的用戶數(shù)據(jù)量,本文考慮15個效用,故M≥ 15,取M等于15、20、25、30、35、40進(jìn)行實驗,使用歷史數(shù)據(jù)的觀察值進(jìn)行調(diào)整,結(jié)果如表5和圖4。研究發(fā)現(xiàn),M越大時,精度越高,當(dāng)M取40時,有較高的精度,實驗最終取M=40。
表5 某用戶不同M值下的情景效用
(a) 低于當(dāng)前情景
(b) 優(yōu)于當(dāng)前情景
最后對基礎(chǔ)預(yù)測值進(jìn)行調(diào)整。從圖3可以看出,當(dāng)歷史情景與當(dāng)前情景相差很大時,傳統(tǒng)算法的推薦質(zhì)量很低,但當(dāng)歷史情景與當(dāng)前情景相同時,傳統(tǒng)算法有較高的推薦質(zhì)量。對圖3中不同情景1和不同情景2的預(yù)測值根據(jù)情景效用進(jìn)行調(diào)整,如圖5。
圖5 預(yù)測值調(diào)整后的MAE
可以發(fā)現(xiàn),不同情景的預(yù)測值調(diào)整之后的精度與相同情景下的預(yù)測精度十分接近,具有較高的精度。為了進(jìn)一步證明本方法的有效性,取用戶對項目的實測值進(jìn)行調(diào)整,其中不同情景1的第1個項目不用調(diào)整,不同情景2的第2個項目不用調(diào)整,結(jié)果如圖6??梢园l(fā)現(xiàn),當(dāng)使用實測值進(jìn)行調(diào)整時,預(yù)測精度進(jìn)一步提高。結(jié)果表明,基礎(chǔ)預(yù)測階段的精度越高,調(diào)整后的精度越高。
圖6 真實值調(diào)整后的MAE
與文獻(xiàn)[9]對比,當(dāng)歷史情景與當(dāng)前情景不同時,本算法明顯有更好的推薦質(zhì)量,如圖7。原因在于文獻(xiàn)[9]使用平均值來表示用戶對情景戶偏好程度,這平滑了用戶對情景的偏好,連續(xù)進(jìn)行2次相似度計算,誤差被積累,此外2次相似度計算使得計算量大大增加,相似情景下進(jìn)行用戶相似度計算會降低數(shù)據(jù)地利用率,使冷啟動問題更加突出。
本文重點研究預(yù)測值如何調(diào)整以動態(tài)地適應(yīng)情景變化。實驗發(fā)現(xiàn),當(dāng)歷史情景與當(dāng)前情景相同時,經(jīng)典協(xié)同推薦的預(yù)測值具有較高的精度。而實際生活中,歷史情景與當(dāng)前情景往往有所差異,因此考慮情景變化能夠有效地提高推薦質(zhì)量,可以發(fā)現(xiàn),本文所提出的方法能夠很好地適應(yīng)情景變化;此外研究還發(fā)現(xiàn),當(dāng)預(yù)測階段精度越高時,調(diào)整之后的精度越高;用戶的情景效用計算只依賴用戶歷史數(shù)據(jù),可以離線完成,在線階段的時間復(fù)雜度增加O(N);經(jīng)典的推薦算法作為本算法獨立的一個步驟,增加經(jīng)典算法推薦質(zhì)量的改進(jìn)也可增加本算法的推薦質(zhì)量。
圖7 適應(yīng)情景變化的協(xié)同推薦算法與不同算法比較
經(jīng)典推薦算法及眾多改進(jìn)算法無法適應(yīng)情景的變化,很少考慮當(dāng)前情景與歷史情景間的差異,對所有用戶都按照統(tǒng)一的規(guī)則進(jìn)行分析?,F(xiàn)有的個性化推薦策略采用前置過濾的方式,提高了推薦質(zhì)量,卻降低了數(shù)據(jù)利用率,使冷啟動問題更加突出,并且無法動態(tài)地適應(yīng)情景變化。本文在經(jīng)典推薦的基礎(chǔ)上,提出一種適應(yīng)情景變化的推薦算法,將用戶偏好轉(zhuǎn)換為用戶對情景的效用,通過用戶對情景的效用來調(diào)整歷史情景與當(dāng)前情景不同時算法的預(yù)測值,使算法能動態(tài)地適應(yīng)情景變化,在情景變化時,能做出合理的調(diào)整。本文給出的算法使用用戶歷史數(shù)據(jù)計算用戶的情景效用,根據(jù)不同情景下的效用變化來調(diào)整預(yù)測值,理論上對不同的用戶考慮不同的情景,算法能正確運(yùn)行。實驗表明了該算法的可行性和有效性,有助于提高推薦質(zhì)量。