呂成戍
(東北財經大學 管理科學與工程學院,遼寧 大連 116025)
協同過濾推薦算法(collaborative filtering recommendation algorithm,CF)是目前發展最為完善、應用最為廣泛的推薦算法之一[1-3],已被很多電子商務公司采用,出現了大量應用型推薦系統實例,如Amazon、GroupLens、Netflix和Facebook等。然而,傳統的協同過濾推薦算法存在一個弊端:隨著推薦系統規模的擴大,用戶評分數據出現極端稀疏性[4-5],大量用戶之間缺乏共同評分項,導致傳統的協同過濾推薦算法無法準確計算用戶相似性,大幅降低了推薦系統的推薦精度。并且由于協同過濾系統的開放性以及用戶的參與性,某些不良商家對推薦系統實施“托攻擊(shilling attacks)”[6-7],更改推薦結果,獲得非法收益,嚴重影響了給推薦系統的魯棒性。
圍繞數據稀疏性問題,相關學者開展了一系列的研究工作。彭石等[8]采用預先填充項目評分的方法提高推薦質量,但是推薦結果過度依賴數據填充效果;楊陽等[9]利用矩陣奇異值分解技術處理用戶評分矩陣稀疏問題,提高了推薦系統的準確性,但是在實際的應用環境中很難準確確定矩陣初值;李聰等[10]提出了基于屬性值偏好矩陣的協同過濾推薦算法(collaborative filtering recommendation algorithm based on attributes-value preference matrix,CF-APM),將稀疏的用戶-項目評分矩陣轉換為相對稠密的項目屬性值矩陣,從而解決數據稀疏性問題,但是當系統面對托攻擊時,該方法的效果并不理想。
另一方面,相關學者在推薦算法運行之前采用托攻擊檢測技術刪除用戶評分矩陣中的攻擊概貌,從而提高推薦算法的魯棒性。Chirita等[11]對推薦系統的托攻擊檢測問題進行了探索,根據用戶概貌的統計特征檢測攻擊用戶和正常用戶之間的差異,該方法簡單易行,但是在檢測過程中指標閾值的設置對檢測精度的影響較大。隨后,Chad A.Williams[12]等進一步分析了攻擊概貌的統計特征,并且將支持向量機(SVM)算法引入托攻擊檢測領域,針對不同的攻擊模型特征選擇檢測指標,與Chirita等[11]提出的算法相比獲得了更優的檢測性能,但是該檢測模型僅對某些已知的標準托攻擊有效(例如隨機攻擊、流行攻擊和均值攻擊等),無法檢測實際應用環境中未知類型的混合攻擊,適用范圍有限,制約了托攻擊檢測技術的實用化程度。
為了解決上述問題,文中提出了一種基于用戶項目屬性偏好的魯棒協同過濾推薦算法(robust collaborative filtering recommendation algorithm based on user preference of item attributes,RCF-UPIA)。用戶項目屬性偏好的作用有兩個,一是利用用戶共同的項目屬性偏好深層次挖掘用戶的興趣特征,在用戶共同評分項匱乏的情況下也可以根據相同的項目屬性偏好度量用戶相似性,緩解數據稀疏性問題;二是根據標準用戶項目屬性偏好檢測最近鄰集合中的攻擊概貌,從而將其排除在目標用戶最近鄰集合之外,消除攻擊概貌對評分預測的不良影響。最后通過實驗對該方法的有效性進行驗證。
在實際應用中,用戶會因為對商品的某些屬性感興趣而購買該商品或者對該商品給予好評,這種購買或評價行為代表了用戶的興趣偏愛。以圖書推薦系統為例,用戶可能出于對作者的喜愛而購買某本書或者對其給予較高評價。因此,推薦算法在計算用戶相似性時,可以考慮加入用戶之間的項目屬性偏好信息以豐富用戶相似性的度量途徑,減少數據稀疏性對推薦精度的負面影響。
此外,與正常用戶的購買行為不同,攻擊用戶對商品的選擇是隨機的,無法體現出商品屬性之間的內在聯系。因此,在項目屬性偏好方面,攻擊用戶與正常用戶具有明顯的差異。而且項目的屬性信息一般都記錄在商品數據庫的二維表中,攻擊用戶無法獲得相關數據,這就增加了攻擊用戶實施托攻擊的難度。因此,可以根據項目屬性語義設計獨立于攻擊模型的具有普適性的托攻擊過濾模塊,根據某一用戶偏好數據是否符合正常用戶項目屬性偏好形式判斷其是否是攻擊者。
鑒于上述分析,對傳統的協同過濾推薦算法進行改進,算法的基本流程如圖1所示。首先,根據項目屬性偏好優化用戶相似性度量方法;然后,在推薦算法中植入項目屬性偏好過濾模塊,過濾最近鄰集合中的攻擊概貌;最后,采用過濾后的最近鄰集合預測目標用戶對未評分項目的評分,從而完成商品推薦。

圖1 算法流程
具體地,RCF-UPIA算法主要包含4個步驟:挖掘用戶項目屬性偏好;計算用戶綜合相似性;過濾最近鄰集合中的攻擊概貌;預測用戶評分。
推薦系統中通常包括用戶信息表、項目信息表和用戶評分表。整理項目信息表可以獲得項目屬性矩陣Attr。設有n個評分的項目,選擇k個屬性描述每個項目,即{Attr1,Attr2,…,Attrk}。若項目i具有屬性k,則Attri,k的投影值為1,否則為0。項目屬性矩陣Attr如表1所示。

表1 項目屬性矩陣Attr
為便于后續算法描述,做如下定義:
定義1:項目屬性偏好閾值φ。設N代表用戶U的評分項目數,NAttri代表NAttri個項目具有屬性Attri,NAttrj代表有NAttrj個項目具有屬性Attrj。對于指定的φ,如果NAttri/N≥φ且NAttrj/N≥φ,則AttriAttrj為一個候選項目屬性偏好組合。如果γ個用戶均符合這個組合(γ為最小用戶數),則確定AttriAttrj為一個項目屬性偏好組合。
定義2:少數類項目屬性偏好閾值σ。對于包含項目數量較少的項目屬性,由于在用戶已評項目中占的比例較少,通常會小于項目屬性偏好組合閾值而被排除在標準項目屬性偏好組合之外。但是在實際應用環境中,如果用戶對與某個屬性相關的大多數項目均進行了評分,則表明用戶對這個屬性具有偏好。因此,設置閾值σ,當用戶U對具有項目屬性Attri的NAttri個NAttri進行了評分,且NAttri/|Attri|≥σ(|Attri|表示具有項目屬性Attri的項目總數),則Attri為一個項目屬性偏好組合。
根據定義1和定義2,可以挖掘出用戶集合U={U1,U2,…,Um}中每個用戶的項目屬性偏好,如果某個項目屬性偏好的用戶數量大于最小用戶數γ,則該項目屬性偏好稱為標準用戶項目屬性偏好。具體算法描述如下:
算法1:挖掘用戶項目屬性偏好。
輸入:推薦系統評分矩陣Rm×n=[R1,R2,…,Rm]T,用戶項目屬性偏好閾值φ,少數類項目屬性偏好閾值σ,最小用戶數γ
輸出:用戶項目屬性偏好集合IAC
步驟1:整理推薦系統中的項目信息表,得到項目屬性矩陣Attr。
步驟2:對于項目集合I={I1,I2,…,In}中的每個項目Ii,均賦予對應的項目屬性號。
步驟3:掃描用戶-項目矩陣Rm×n=[R1,R2,…,Rm]T,對用戶Ui的評分向量ui=[Ri1,Ri2,…,Rin]T,統計各屬性的評分數目Nui={NAtt1,NAtt2,…,NAttk}。
(1)如果NAtti/N≥φ,且Atti不在候選項目屬性偏好集合IACui中,則將項目屬性標號Atti加入到集合IACui中并計數;如果NAtti/N≥φ,且Atti已在IACui中,則只計數。
(2)如果NAttj/|Attj|≥σ,且Attj不在候選項目屬性偏好集合IACui中,則將項目屬性標號Attj加入到集合IACui中并計數;如果NAttj/|Attj|≥σ,且Attj已在IACui中,則只計數。
步驟4:對候選項目屬性偏好集合IAC={IACu1∪IACu2∪…∪IACum},累計具有相同項目屬性偏好的用戶數量,刪除小于最小用戶數γ的項目屬性偏好。
利用上述算法得到用戶項目屬性偏好集合IAC,將IAC作為推薦系統中正常用戶的項目屬性偏好標準。由于用戶項目屬性偏好的挖掘可以在線下完成,因此不會影響推薦系統的工作效率。
對于某個用戶,可以將其已評價過的所有項目投影到相應屬性上,以此衡量該用戶對不同屬性的偏好。用戶-項目屬性關注矩陣UAm×t是一個m×t階矩陣,m表示m個用戶,t表示t個具有代表性的項目屬性描述。若用戶Ui評價過的項目具有屬性Aj,則UAi,j的投影值為1,否則為0。如表2所示,UAm×t是一個0-1矩陣。

表2 用戶-項目屬性偏好矩陣UA
設向量UAi={UAi1,UAi2,…,UAik}和向量UAj={UAj1,UAj2,…,UAjk}表示用戶Ui和用戶Uj在用戶-項目屬性偏好矩陣UA中對應的投影值,那么在項目屬性偏好方面,用戶Ui和用戶Uj相似性計算公式為:
(1)
由式(1)可知,用戶Ui和用戶Uj共同偏好的項目屬性越多,用戶Ui和用戶Uj之間的相似性越大。將傳統的基于用戶評分的用戶相似性記為simr(i,j),則結合項目屬性偏好的用戶相似性度量為simr(i,j)與simatt(i,j)的加權組合,即

(2)

通過式(2)計算用戶綜合相似性,可以在用戶共同評分項匱乏的情況下,獲得更為準確的目標用戶最近鄰集合。
基于用戶的協同過濾算法對托攻擊高度敏感,少量的攻擊概貌就有可能會改變推薦結果[13]。攻擊者利用這個漏洞,通過模擬用戶評分數據的方式提高自身與真實用戶的相似度,增加攻擊概貌在最近鄰中出現的概率,進而影響推薦系統對目標用戶的推薦結果。為降低算法對托攻擊的敏感程度,文中將用戶項目屬性偏好過濾模塊植入推薦算法中,濾除最近鄰中的攻擊概貌,從而提高推薦算法的魯棒性。
算法2:過濾最近鄰集合中的攻擊概貌。
輸入:目標用戶Uk的最近鄰集合Uknei,標準用戶項目屬性偏好集合IAC
步驟1:對于最近鄰集合Uknei中的每一個用戶概貌,使用算法1的步驟1~3挖掘最近鄰用戶的項目屬性偏好組合;
步驟2:從Uknei中尋找用戶U*,并且滿足條件IACu*?IAC;
步驟3:若U*不存在,則終止執行,返回Uknei;否則繼續執行;



(3)
得到用戶預測評分PUk,i后,將其從大到小排列,并取Top-N個項目組成推薦集Irec={i1,i2,…,iN},從而完成對目標用戶Uk的推薦。
實驗數據來自明尼蘇達大學GroupLens研究小組通過MovieLens網站(http://movielens.umn.edu)收集的MovieLens100K數據集[14],該數據集包含了943位用戶對1 682部電影的100 000條1~5的評分數據,每位用戶至少對20部電影進行了評分。從MovieLens數據集的電影題材文件u.gere中獲取每個電影的題材,u.gere包括Musical(音樂片)、War(戰爭片)、Action(動作片)、Crime(犯罪片)、Adventure(冒險片)、Children’s(兒童片)等19種項目的特征屬性。
為確保數據比較的合理性,實驗相關的模型參數通過交叉驗證方式獲得,項目屬性偏好組合閾值φ=0.4,少數類項目屬性偏好閾值σ= 0.3,最小用戶數γ=12。
為了評價算法的推薦精度,將文中提出的RCF-UPIA算法與文獻[10]提出的CF-APM算法以及CF算法進行了實驗對比,選取平均絕對偏差(mean absolute error,MAE)作為測評指標,MAE值越小,算法的推薦精度越高。在不同個數的最近鄰居集下,比較三種算法的推薦精度,實驗結果如圖2所示。

圖2 不同最近鄰數據集下推薦精度的對比
從圖2分析可知,RCF-UPIA算法和CF-APM算法的MAE值均小于CF算法。與CF算法相比,CF-APM算法的MAE值降低了7.41%,RCF-UPIA算法的MAE值降低了16.17%,說明將用戶項目屬性偏好引入到用戶相似度的計算過程,可以使缺乏共同評分項目的用戶由于具有某些相似的項目屬性偏好而成為最近鄰,從而提高用戶相似性的計算精度,減少數據稀疏問題對推薦質量的不良影響。此外,值得注意的是,RCF-UPIA算法的MAE值小于CF-APM算法,與CF-APM算法相比RCF-UPIA算法的MAE值降低了10.72%,這是由于文獻[10]單純通過項目屬性值確定用戶相似性,但是在實際應用中,盡管用戶對項目的評價很高,用戶也可能僅僅對評價項目賦含的某些屬性感興趣,而不是喜好全部屬性。因此,這種僅依靠項目屬性值計算用戶相似性的方法具有一定的片面性。而文中方法從用戶評分和用戶項目屬性偏好兩個角度深入挖掘用戶之間的相似性,融合了兩者的優勢,從而提高了最近鄰居項目的搜尋準確度,因此獲得了更優的推薦效果。
為了評價算法的抗攻擊能力,向MovieLens100K數據集中注入混合攻擊數據(隨機攻擊、均值攻擊和流行攻擊的攻擊概貌個數各占1/3)。實驗中采用交叉驗證方式確定選取鄰居用戶的個數為35,驗證在攻擊規模(2%,5%,10%)和填充規模(3%,6%,9%,12%,15%)實驗配置下推薦算法的性能,并將RCF-UPIA算法與CF-APM算法、CF算法,文獻[10]提出的基于SVM的托攻擊檢測模型和CF相結合的算法(簡稱SVM-CF算法)進行對比實驗。選取預測偏差(prediction shift,PS)作為測評指標,四種推薦算法的對比結果如圖3~5所示。

圖3 2%攻擊規模下預測偏差的對比

圖4 5%攻擊規模下預測偏差的對比

圖5 10%攻擊規模下預測偏差的對比
從圖3~5可以看出,在混合攻擊下RCF-UPIA算法和SVM-CF算法的預測偏差值要低于CF-APM算法和CF算法。與CF-APM算法相比,RCF-UPIA算法的預測偏差降低了38.2%,SVM-CF算法的預測偏差降低了22.4%;與CF算法相比,RCF-UPIA算法的預測偏差降低了42.3%,SVM-CF算法的預測偏差降低了27.6%。這表明CF-APM算法和CF算法由于不具備攻擊防御能力,推薦系統的魯棒性無法得到有效保障;而文中的RCF-UPIA算法和SVM-CF算法考慮了托攻擊對推薦系統的影響,濾除了攻擊數據,因此表現出了良好的魯棒性。另外,在同一填充規模和攻擊規模下,RCF-UPIA算法獲得了比SVM-CF算法更小的預測偏差值,這是由于文獻[10]提出的基于SVM的托攻擊檢測模型只能檢測某一種攻擊模型所產生的攻擊,無法檢測包含多種攻擊模型的混合攻擊,在濾除攻擊概貌的同時,不可避免地誤刪了一定量的真實用戶概貌,這必然會對魯棒性產生負面影響。而文中的RCF-UPIA算法從分析項目的語義入手,針對攻擊數據中的隨機性,提出了獨立于攻擊模型的具有普適性的攻擊檢測算法,能夠準確識別并濾除目標用戶最近鄰中的大部分混合攻擊,從而獲得了最佳的魯棒性。
傳統的協同過濾推薦算法受到數據稀疏性和托攻擊問題的制約,對此將用戶項目屬性偏好引入到推薦算法中,使得推薦系統在用戶共同評分項匱乏的情況下,也能根據用戶項目屬性偏好計算用戶相似性,緩解了評分數據稀疏性,并通過分析用戶項目屬性偏好過濾目標用戶最近鄰集合中的攻擊概貌,從而削弱攻擊者對目標項評分的篡改程度。實驗結果表明,該方法能提高算法的推薦精度,具有較好的抗攻擊能力。
參考文獻:
[1] 于洪濤,周倩楠,張付志.基于項目流行度和新穎度分類特征的托攻擊檢測算法[J].工程科學與技術,2017,49(1):176-183.
[2] 李文濤,高 旻,李 華,等.一種基于流行度分類特征的托攻擊檢測算法[J].自動化學報,2015,41(9):1563-1576.
[3] 張 靖,何發鎂,邱 云.個性化推薦系統描述文件攻擊檢測方法[J].電子科技大學學報,2011,40(2):250-254.
[4] 李 聰,駱志剛,石金龍.一種探測推薦系統托攻擊的無監督算法[J].自動化學報,2011,37(2):160-167.
[5] ZHENG V W,ZHENG Y,XIE X,et al.Towards mobile intelligence:learning from GPS history data for collaborative recommendation[J].Artificial Intelligence,2012,184-185:17-37.
[6] SEMINARIO C E, WILSON D C. Robustness and accuracy tradeoffs for recommender systems under attack[C]//Proceedings of the 25th international Florida artificial intelligence research society conference.[s.l.]:[s.n.],2012:86-91.
[7] BURKE R,O’MAHONY M P,HURLEY N J.Robust collaborative recommendation[M].New York:Springer,2011:805-835.
[8] 彭 石,周志彬,王國軍.基于評分矩陣預填充的協同過濾算法[J].計算機工程,2013,39(1):175-178.
[9] 楊 陽,向 陽,熊 磊.基于矩陣分解與用戶近鄰模型的協同過濾推薦算法[J].計算機應用,2012,32(2):395-398.
[10] 李 聰,梁昌勇.基于屬性值偏好矩陣的協同過濾推薦算法[J].情報學報,2008,27(6):884-890.
[11] CHIRITA P A,NEJDL W,ZAMFIR C.Preventing shilling attacks in online recommender systems[C]//Proceedings of the 7th annual ACM international workshop on Web information
and data management.New York,NY,USA:ACM,2005:67-74.
[12] WILLIAMS C,MOBASHER B,BURKE R.Defending recommender systems:detection of profile injection attacks[J].Service Oriented Computing and Applications,2007,1(3):157-170.
[13] ZHANG F,ZHOU Q.A meta-learning-based approach for detecting profile injection attacks in collaborative recommender systems[J].Journal of Computers,2012,7(1):226-234.
[14] MILLER B N,ALBERT I,LAM S K,et al.MovieLens unplugged:experiences with an occasionally connected recommender system[C]//Proceedings of the international conference on intelligent user interfaces.New York,NY,USA:ACM,2003:263-266.