夏 翔,劉 姜,倪 楓,肖云天
(上海理工大學管理學院,上海 200093)
隨著互聯網高速發展及電商紅利的爆發,數據呈現爆炸式增長,其規模之大,產生速度之快,使得人們面對海量信息進行查詢挖掘和分析成了熱點和難點。推薦系統通過自動向用戶推薦可能符合其興趣的項目來處理信息過載問題[1]。目前,推薦系統的應用領域十分廣泛,包括商品推薦[2]、音樂推薦[3]、新聞推薦[4]、圖書推薦[5]等。
現有的推薦系統雖已進入成熟階段,但也面臨著一些長久以來的挑戰,如:數據稀疏性[6]、冷啟動[7]、等問題。本文重點針對現有協同過濾忽略用戶屬性權重的問題,以及用戶興趣隨時間發生動態遷移問題,考慮用戶屬性相似度及用戶時間權重,提出了一種基于混合相似度和用戶興趣遷移的改進協同過濾推薦算法HSIT-CF(hybrid similarity and interest transfer collaborative filtering)。
傳統的User-based 步驟主要分為以下幾步:構建用戶—項目評分矩陣、計算用戶相似度、評分預測并產 生Top-N 推 薦。假 設U={u1,u2,…,um} 是用戶 集合,I={i1,i2,…,in} 是項目集合,構建用戶—項目評分矩陣R,其中包括m 個用戶和n個項目,如表1所示,元素ru,i表示用戶u 對項目i 的評分,數值越大表示用戶對該項目偏好程度越高,反之則越低。

表1 用戶—項目評分矩陣R
修正的余弦相似度在余弦相似度上彌補了其不足,將用戶評分減去該用戶的平均評分后,再進行原本的相似度計算,其計算公式如下:
本文利用熵權法計算出各個用戶屬性類型權重wj,以及計算各個用戶的綜合屬性得分值si,假設有m 個用戶,n 個屬性,xij為第i 個用戶的第j 個屬性值(i=1,…,m;j=1,…,n),其步驟如下:
⑴標準化處理
通過標準化處理,把屬性的絕對值轉化為相對值,歸一化后的數據仍記為xij。
⑵計算第j個屬性下第i個樣本值占該屬性的比重
⑶計算第j個屬性的熵值
(4)計算信息熵冗余度
⑸計算各個屬性的權重
⑹計算各個用戶的綜合屬性得分值
本文提出的基于混合相似度與用戶興趣遷移的協同過濾推薦算法,算法具體流程如圖1所示。

圖1 HSIT-CF算法推薦流程
在實際生活中,屬性相似的的兩個用戶,其興趣偏好往往同時具有相似性。例如針對美食推薦項目,四川人更普遍喜歡吃辣,而廣東人更喜清淡,此時用戶背景中的地域屬性對用戶相似度的計算影響較大,因此賦予各個用戶不同的權重是具有現實意義的。
本文實驗所使用的數據集為明尼蘇達大學的Grouplens 研究小組收集的Movielens-100k,如表2。在對用戶屬性特征表中的年齡、性別、職業、時間戳等數據進行預處理時,根據上述方法計算出的用戶屬性權重信息結果如表3所示。

表2 用戶屬性特征表

表3 用戶屬性權重表
利用余弦公式計算出用戶間的屬性相似度sim1(u,v)。其公式如下:
其中,simL(u,v)表示用戶u,v之間的屬性相似度,表示用戶屬性特征向量。
傳統協同過濾只考慮用戶間的相似性,往往忽略了用戶興趣的動態變化,從而導致推薦精度會隨時間推移而下降[8]。指數衰減函數可以通過衰減項目影響力,即運用用戶興趣權重來衡量用戶長期興趣[9]。本文借助指數函數作為時間權重來描述用戶的興趣變化差異,用戶對項目的評分越靠近當前,其時間權重越大。
其中,Wu,i表示用戶u對項目i的興趣衰減的時間權重,其大小反映了用戶興趣衰減快慢;tu,i表示用戶u 對項目i 的評分時間,t0表示項目的發布時間,tnow表示當前時間。
本文2.1節(公式⑻)和1.1(公式⑴)中提出的相似度的計算方法各有優點,因此考慮將兩種相似度進行結合,計算最終的用戶相似度,其計算公式如下:
其中,a 的值在0~1 之間變化,表示兩種相似度的融合比例。simP(u,v)sim(u,v)表示用戶評分相似度,simL(u,v)sim1(u,v)表示用戶屬性相似度。
將上述混合相似度與用戶時間權重引入傳統協同過濾算法中,改進后的協同過濾推薦算法預測公式為:
其中,pu,i表示用戶u 對項目i 的預測評分;rv,j表示用戶v 對項目j的實際評分;和分別表示用戶u 和用戶v對已有項目的平均評分;Wu,i表示用戶u 對項目i 的興趣衰減的時間權重,Nu表示用戶u 的最近鄰集合;sim(u,v)表示用戶之間的混合相似度。
根據以上步驟,HSIT-CF具體算法流程描述如下。
算法:基于混合相似度和用戶興趣遷移的協同過濾推薦算法HSIT-CF。
輸入:用戶、項目、評分數據文件,融合參數a。
輸出:用戶評分預測值矩陣。
步驟1根據輸入的評分數據文件構建用戶—評分矩陣R;
步驟2計算所有用戶的評分均值;
步驟3利用式⑴計算用戶評分相似度simP(u,v);
步驟4根據1.1 節中的式⑶~式⑺算出各屬性的權重與綜合得分值,利用式⑻計算用戶屬性相似度simL(u,v);
步驟5根據式⑼算出用戶的時間權重Wu,i來描述用戶的興趣變化差異;
步驟6根據式⑽計算得到混合相似度sim(u,v);
步驟7根據步驟6中的sim(u,v)得出的結果,采用K 近鄰法選出最大的k 個用戶形成目標用戶的最近鄰集合,利用式⑾得出預測評分,形成用戶的評分預測值矩陣。
本文實驗使用明尼蘇達大學的Grouplens研究小組收集的Movielens-100k 數據集對算法進行實驗驗證。該數據集包含943 個用戶對1682 部電影的10 萬條評分數據。由于部分用戶屬性信息不全面,本文剔除了部分用戶數據,最終實驗的用戶數據為934個用戶。
本實驗采取平均絕對誤差(MAE)和召回率來評價算法的推薦質量。平均絕對誤差根據算法計算出的預測值與實際值之間的平均絕對差值,其偏差越小,準確性越高。召回率表示用戶興趣列表中有多少正確推薦,是指根據用戶在訓練集上的行為做出的推薦列表與用戶在測試集上的行為列表的“交集”與用戶在測試集上的行為列表的比值。計算公式:
其中,u表示用戶,i表示項目,T表示測試集,pu,i和ru,iru,i分別表示用戶u 對項目i 的預測評分和實際評分。R(u)為表示根據訓練數據集為用戶提供的推薦列表;T(u)表示用戶在測試集上的行為列表。
為了驗證本文算法的有效性,本文采用傳統User-CF(originalCF),文獻[10]提出的UII-CF 以及文獻[11]提出的proposed 算法作為對比算法進行比較。實驗結果如圖2、圖3所示。

圖2 不同算法的MAE值

圖3 不同算法的recall值
圖2給出了不同算法對MAE值的影響。從圖2中可以看出,隨著鄰居數目的增加,MAE 值逐漸下降。傳統的original CF 由于其自身相似度計算等局限性,其MAE 值高于本文及其他兩種對比算法。當鄰居個數為10 至50 時,proposed 的MAE 值基本穩定在0.75 至0.79 之間且變化趨勢趨于平緩。文獻[10]提出UII-CF 算法的MAE 值波動相對較大,但當鄰居數目大于20 時,可以取得較好的推薦效果。由圖2 可見,本文HSIT-CF 算法的MAE 值相對于傳統的協同過濾算法及UII-CF及proposed均有顯著降低,當最近鄰居個數為16 時,本文算法的MAE 值較文獻[11]降低了6.61%,較文獻[10]降低了3.43%。
由圖3 可見,在MovieLens-100k 數據集上,針對recall指標,本文提出的HSIT-CF明顯優于original CF和文獻[11]提出的proposed 算法,與文獻[10]提出的UII-CF 保持基本持平,當最大鄰居數為16 和30 時高于UII-CF算法,當k為15時,最高提高了7.86%。
本文針對協同過濾算法忽略用戶屬性權重差異,導致相似度計算不準確和用戶興趣的動態變化問題,提出了一種基于混合相似度和用戶興趣遷移的協同過濾推薦算法。該算法根據熵權法計算出各用戶特征屬性權重,并構造出用戶混合相似度,然后加入時間權重描述用戶的興趣動態變化,克服了一般協同過濾算法的弊端。實驗表明,該方法能夠有效降低平均絕對誤差,提高推薦精度。然而在本文算法中,并未詳細考慮針對不同推薦項目時,具體用戶背景屬性對推薦結果的影響,接下來將考慮一個或多個具體屬性對不同推薦項目的影響,進一步提高推薦精度。