張忠海,夏 宇,2*,楊舒波
(1. 江西師范大學地理與環境學院,330022,南昌;2. 鄱陽湖濕地與流域研究教育部重點實驗室,330022,南昌)
信息過載使用戶難以快速地從現有信息中獲取感興趣的信息[1],推薦系統在極大程度上緩解了這個問題?,F有研究表明,融合情景的推薦結果明顯優于非情景信息的推薦結果[2-3]。移動定位技術的發展,使得用戶的位置信息、身份信息、周圍的人以及這些信息的變化很容易獲取,并以位置為核心,這構成了最初的情景信息[4]。Brown認為時間、溫度和季節等也會對用戶產生影響[5],此后用戶的情緒[6]、用戶感興趣的對象[7]以及身體狀況[8]等被加入到情景信息。隨著情景維度的增多,不同用戶對同一項目的評價可能在2個完全不同的情景下完成,這種情況下直接使用經典協同推薦很容易得到錯誤的用戶相似度,低維的個性化推薦算法無法直接適用于高維的個性化推薦。為了解決這個問題,一些研究從情景預過濾的角度分析,主要在于進一步提高用戶相似度的精度,如在情景相似的前提下,計算用戶相似度[9-10];對項目的內容特征進行聚類[11-12];或以不同的權重綜合考慮多種相似度[13-14]。這些研究在預過濾的前提下進行協同推薦,使用戶的可用數據急劇下降,冷啟動問題更加突出,對于用戶數據原本較少的領域,如旅游領域,算法難以適用,對用戶偏好的研究不足,無法動態地適應情景變化。近年來對情景建模的推薦算法研究逐漸增加,對語義分析和情景的影響考慮得更加細致,包括用戶情感方向和特殊情景下對用戶行為的抑制等[15],建模過程復雜,用戶偏好的改變或興趣漂移,會使算法成本顯著增加,情景建模需要大量文檔數據,模型精度依賴于文本解析算法的精度,算法更適用于基于屬性的個性化推薦?;谏鲜龇治?,本文提出一種適應情景變化的推薦算法,在經典協同推薦的基礎上,通過計算用戶對情景的效用,以情景效用補償情景變化的影響,動態地適應情景變化,不用進行復雜的建模和計算,不會降低數據的利用率,算法適用性強。
適應情景變化的協同推薦算法分為情景效用評價和評分預測2個階段:情景效用評價發生在推薦前,對每一個具體用戶,計算用戶對情景的效用,量化用戶對情景的偏好;評分預測時比較當前情景和歷史情景的差異,在經典協同推薦算法[16]的基礎上,通過情景效用調整用戶在當情景下對目標項目的評分。本文引入用戶情景效用概念,給出計算情景效用的有效方法,并提出了一種適應情景變化的協同推薦模型和算法。實驗表明,本算法可以動態地適應情景變化,并能有效的提高推薦質量。
行為學認為,人自身的狀態和所處環境狀態的相關參數都被考慮在內之后,人的行為具有相對穩定的偏好[17]??梢酝ㄟ^對數據統計分析,定量研究影響用戶行為的因素,來把握用戶的行為[18-19],這說明用戶的行為是可以度量的[20-21],這種行為往往反應用戶的偏好。經典的協同推薦并不分析用戶偏好,僅在計算用戶相似度后,根據公式將滿足要求的用戶項目推薦給目標用戶,但此時的情景與當時的情景可能有很大不同,直接推薦可能并不符合用戶需求,需要根據情景差異進行調整。事實上,經典協同推薦只考慮了用戶對項目的興趣度,并沒有考慮情景變化對用戶的影響。
不同領域對情景缺乏統一的表達,本文從現有研究中選擇項目情景、用戶情景、商業情景、社會情景、時間情景、物理情景和網絡情景等作為本文考慮的主要情景,并將每種情景劃分為不同的子情景,按層次樹結構進行組織,如圖1。情景層次化有助于情景的擴展,能夠更好地適應不斷變化的上下文環境。

圖1 情景層次樹模型
將情景(指子情景,下同)作為影響用戶評分的單位,同一情景的具體情況不同對用戶的影響也有差異,如當一些游客選擇旅游景點時,距離的遠近可能對游客產生不同程度的影響??紤]要計算用戶對情景的效用,所選取的情景應是具有一般性、穩定性的主要情景,如項目的位置、價格和商業環境的服務、質量等,進一步將所考慮的情景細分為若干個類別,不同的類別對用戶的影響是不同的,對子情景進行分類,如表1。對于每個用戶,從表中選取影響該用戶的若干個主要情景。

表1 子情景分類
本文引入經濟學中的基數效用論,用效用度量用戶消費的滿足程度。偏好的差異導致效用的差異,可以通過用戶效用來反映用戶偏好。在推薦領域,效用可以視為用戶對項目的評分,由項目和項目所處情景決定,用戶的最終評分表現為用戶對項目效用和對各情景效用的疊加,當各分效用已知時,就可以求出用戶對具體項目的總效用。
設項目i的所有情景分類為Ti={ti,1,ti,2,…,ti,j},ti,j= {0,1},用戶對所有情景下不同分類的效用為kj= {k1,k2, …,kj}。根據基數效用論,用戶對項目的效用可以用如下公式表示:
Si=∑nj=1kjti,j
(1)
式中:ti,j取值1或0,表示存在或不存在,同一時間一個情景下最多只能有一個分類存在;kj表示用戶對ti,j的效用,Si表示用戶對項目i的總效用,即評分。如用戶在選擇旅游景點時主要考慮距離和價格2個情景,并且用戶對距離的效用為近(2)、一般(1)、遠(0),對價格的效用為低(3)、一般(2)、高(1),對其它情景效用為0,則用戶對距離近且價格一般的景點的總效用為:2×1+1×0+0×0+3×0+2×1+1×0+0×0+…=4。
當i=1,2,3,…,m時,與線性最小二乘法的基本公式一致:
∑nj=1Xi,jβj=yi
(2)
式中:m表示等式個數,n表示未知數個數,m>n,通過m個實測值可以求得使殘差平方和最小的β值,即可以根據m條用戶數據求得用戶對情景的效用。
本文在經典協同推薦基礎上進行改進,將算法分為預測階段和調整階段。預測階段使用經典算法進行預測,首先根據所有用戶和項目構建用戶項目-矩陣,然后根據用戶-項目矩陣計算用戶之間的相似度,最后根據公式(3)計算出用戶對項目的預測值,本文相似度計算采用皮爾遜相關系數。
用戶u對項目i的評分預測公式如下:
(3)

計算出用戶對項目的評分后,進一步考慮當前情景與歷史情景的差異,調整用戶對項目的評分。分析公式(1),對于相同項目i,不同的情景t和c有:
Si,c=Si,t+∑nj=1kj(cj-tj)
(4)
式中:Si,t表示情景t下用戶的總效用;Si,c表示情景c下用戶的總效用。
適應情景變化的推薦算法:
輸入:目標用戶數據,其他用戶數據;
輸出:目標用戶的推薦集;
偽碼描述:
1: Input current user data (u,i,c);
2: forMitemi%M表示參與效用計算的數據量;

圖2 適應情景變化的協同推薦
3: build I×C matrixC(i,c);%構建項目-情景矩陣;
4:build U×I matrixR(u,i);%構建用戶-項目矩陣;
5:for all itemsi;
6:User utility:k(u,j)=pinv(C(i,c))*R(u,i)';%j表示用戶效用的個數;
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))。
實驗的硬件環境為Inter(R) Core (TM) i5-7300HQ CPU @2.50GHz 2.50GHz,8G內存。軟件環境為Windows10,Matlab2017a,算法使用Matlab腳本語言編寫。
算法通過解超定方程的方式來擬合用戶的情景效用,用戶數據必須大于所考慮的所有情景類別個數。采用模擬數據的方式進行仿真實驗[22-24]可用于評價復雜情景感知推薦算法[25],能避免實際數據中存在的稀疏性和冷啟動等問題,更好地驗證算法的有效性??紤]到一些領域用戶的歷史數據量相對較少,為了保證用戶有足夠的數據,選取的主要子情景數量要適中。不同領域,用戶所關注的情景大不相同,故實驗考慮5個較普遍的情景,每個情景分為3個類別,共15個效用值。每個用戶對情景的偏好和每個項目的情景類別用隨機數函數產生,不同的用戶所考慮的情景不同,為了能夠統一表達,用戶偏好可以為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條數據中隨機選擇40個項目進行評分,部分數據如表2、表3。文獻[12]指出,當鄰居數達到20時,推薦結果的精度,不會隨鄰居數量增加而提高,從模擬數據中抽取至少擁有20個鄰居的用戶進行實驗。

表2 用戶偏好

表3 項目情景類別
本文采用常用的平均絕對誤差(MAE)作為度量標準,MAE值越小,準確性越高,設預測的用戶評分集合表示為{p1,p2, …,pN},對應的實際用戶評分集合為{q1,q2, …,qN},則平均絕對偏差MAE定義為:
(5)
對1 000個用戶的數據進行分析,選取其中334個符合條件的用戶。對于每個用戶,模擬1個項目情景作為歷史情景,根據鄰居的評分使用經典算法來預測目標用戶的評分;模擬3個項目作為當前情景,為表現與歷史情景的差異,設置1個項目情景與歷史情景完全相同,1個項目情景明顯優于歷史情景,1個項目情景明顯低于歷史情景,計算用戶的實際評分,部分數據如表4。

表4 當前項目與部分歷史項目
首先使用經典協同推薦算法求基礎預測值。分別計算3種情況的MAE,相同情景、不同情景1(優于歷史情景)和不同情景2(低于歷史情景),重復實驗10次,如圖3。實驗發現:當歷史情景與當前情景相同時,經典的協同推薦算法有較高的推薦質量;當歷史情景與當前情景差異較大時,經典推薦方法精度極不穩定,具有隨機性。原因是,經典推薦方法假設歷史情景與當前情景總是相同,但實際情況往往與此不同,而當歷史情景與當前情景差異很大時,經典方法可能會給出錯誤的結果。圖中橫軸表示實驗次數,縱軸表示MAE。

圖3 經典算法不同情況下的MAE
然后計算用戶對情景的效用。效用通過解方程求取,為了保證最終的推薦質量,需要保證用戶對情景效用的精度。用M表示參與計算的用戶數據量,本文考慮15個效用,故M≥ 15,取M等于15、20、25、30、35、40進行實驗,使用歷史數據的觀察值進行調整,結果如表5和圖4。研究發現,M越大時,精度越高,當M取40時,有較高的精度,實驗最終取M=40。

表5 某用戶不同M值下的情景效用

(a) 低于當前情景

(b) 優于當前情景
最后對基礎預測值進行調整。從圖3可以看出,當歷史情景與當前情景相差很大時,傳統算法的推薦質量很低,但當歷史情景與當前情景相同時,傳統算法有較高的推薦質量。對圖3中不同情景1和不同情景2的預測值根據情景效用進行調整,如圖5。

圖5 預測值調整后的MAE
可以發現,不同情景的預測值調整之后的精度與相同情景下的預測精度十分接近,具有較高的精度。為了進一步證明本方法的有效性,取用戶對項目的實測值進行調整,其中不同情景1的第1個項目不用調整,不同情景2的第2個項目不用調整,結果如圖6。可以發現,當使用實測值進行調整時,預測精度進一步提高。結果表明,基礎預測階段的精度越高,調整后的精度越高。

圖6 真實值調整后的MAE
與文獻[9]對比,當歷史情景與當前情景不同時,本算法明顯有更好的推薦質量,如圖7。原因在于文獻[9]使用平均值來表示用戶對情景戶偏好程度,這平滑了用戶對情景的偏好,連續進行2次相似度計算,誤差被積累,此外2次相似度計算使得計算量大大增加,相似情景下進行用戶相似度計算會降低數據地利用率,使冷啟動問題更加突出。
本文重點研究預測值如何調整以動態地適應情景變化。實驗發現,當歷史情景與當前情景相同時,經典協同推薦的預測值具有較高的精度。而實際生活中,歷史情景與當前情景往往有所差異,因此考慮情景變化能夠有效地提高推薦質量,可以發現,本文所提出的方法能夠很好地適應情景變化;此外研究還發現,當預測階段精度越高時,調整之后的精度越高;用戶的情景效用計算只依賴用戶歷史數據,可以離線完成,在線階段的時間復雜度增加O(N);經典的推薦算法作為本算法獨立的一個步驟,增加經典算法推薦質量的改進也可增加本算法的推薦質量。

圖7 適應情景變化的協同推薦算法與不同算法比較
經典推薦算法及眾多改進算法無法適應情景的變化,很少考慮當前情景與歷史情景間的差異,對所有用戶都按照統一的規則進行分析?,F有的個性化推薦策略采用前置過濾的方式,提高了推薦質量,卻降低了數據利用率,使冷啟動問題更加突出,并且無法動態地適應情景變化。本文在經典推薦的基礎上,提出一種適應情景變化的推薦算法,將用戶偏好轉換為用戶對情景的效用,通過用戶對情景的效用來調整歷史情景與當前情景不同時算法的預測值,使算法能動態地適應情景變化,在情景變化時,能做出合理的調整。本文給出的算法使用用戶歷史數據計算用戶的情景效用,根據不同情景下的效用變化來調整預測值,理論上對不同的用戶考慮不同的情景,算法能正確運行。實驗表明了該算法的可行性和有效性,有助于提高推薦質量。