張 鑫 黃 剛
(南京郵電大學(xué)計(jì)算機(jī)學(xué)院 江蘇 南京 210000)
2018年,阿里巴巴的年?duì)I收是321.54億元人民幣,亞馬遜的年?duì)I收是177 866.0百萬(wàn)美元,電子商務(wù)發(fā)展如此迅猛,協(xié)同過(guò)濾算法功不可沒(méi)。信息數(shù)量的爆炸式增長(zhǎng),使得用戶難以在海量的信息中,找到自己感興趣的商品。如何準(zhǔn)確快速地定位用戶偏好的商品,從而對(duì)用戶進(jìn)行推薦,成為推薦系統(tǒng)設(shè)計(jì)的首要目標(biāo)。協(xié)同過(guò)濾算法[1-4]從相似的用戶和相似的項(xiàng)目角度出發(fā),分析項(xiàng)目之間和用戶之間的相似程度,找到用戶偏好的項(xiàng)目,可以在大數(shù)據(jù)的情境下,較為可靠地完成推薦任務(wù)。
研究表明[5-7],數(shù)據(jù)稀疏性問(wèn)題和托攻擊問(wèn)題,對(duì)于推薦的準(zhǔn)確度有較大的影響。為了緩解現(xiàn)實(shí)生活中用戶只評(píng)論少量的項(xiàng)目導(dǎo)致的數(shù)據(jù)稀疏性問(wèn)題,研究證明[8-10],在推薦過(guò)程中,綜合考慮用戶添加的信任關(guān)系來(lái)改進(jìn)用戶之間的相似度,往往可以獲得更好的推薦效果。
基于信任的推薦算法,已經(jīng)有許多學(xué)者進(jìn)行了研究,但是算法大多沒(méi)有考慮到托攻擊問(wèn)題的影響。托攻擊問(wèn)題指托攻擊用戶向推薦系統(tǒng)中注入虛假的評(píng)分信息,最終影響系統(tǒng)的推薦結(jié)果。如表1所示,托攻擊用戶X通過(guò)對(duì)項(xiàng)目1和項(xiàng)目2正常評(píng)分偽裝為正常用戶的鄰居用戶,對(duì)項(xiàng)目3實(shí)施托攻擊,使得項(xiàng)目3的評(píng)分上升。
表1 托攻擊用戶對(duì)于項(xiàng)目進(jìn)行惡意評(píng)分
針對(duì)以上問(wèn)題,本文提出一種信任網(wǎng)絡(luò)下的托攻擊用戶檢測(cè)算法TSAD,通過(guò)研究信任網(wǎng)絡(luò)下托攻擊的統(tǒng)計(jì)量特征檢測(cè)托攻擊用戶,提升系統(tǒng)的魯棒性。
1998年,Gambetta首次定義了信任[11],從社會(huì)學(xué)的角度出發(fā),敘述了信任的本質(zhì):如果我們信任某個(gè)人,就表明這個(gè)可信的人的行為有可能對(duì)我們有幫助,因此我們會(huì)考慮與其合作;相反地,如果我們不信任某個(gè)人,就表明這個(gè)人對(duì)我們沒(méi)有幫助甚至有害,因此我們不會(huì)考慮與其合作。信任包含以下性質(zhì):(1) 不對(duì)稱(chēng)性,用戶A對(duì)于用戶B添加了信任關(guān)系,并不能說(shuō)明用戶B也信任用戶A;(2) 傳遞性,如果用戶A對(duì)于用戶B添加了信任關(guān)系,用戶B又信任用戶C,可以得出用戶A在一定程度上信任用戶C;(3) 多樣性,根據(jù)信任的不同表現(xiàn)形式,可以分為直接信任、間接信任等;(4) 動(dòng)態(tài)性,信任的程度會(huì)隨著時(shí)間等因素發(fā)生變化。
針對(duì)以上性質(zhì),潘一騰等[12]提出了一種新的基于信任關(guān)系隱含相似度的度量方法,并與協(xié)同推薦算法相結(jié)合,提升了推薦質(zhì)量;Wang[13]提出了一種基于改進(jìn)D-S證據(jù)理論的多源屬性信任預(yù)測(cè)方法,通過(guò)七重交叉驗(yàn)證方法驗(yàn)證了屬性證據(jù)的充分性和信任預(yù)測(cè)結(jié)果,改善了推薦效果;Shabut等[14]提出了一種新的信任模型,該模型具有防御方案,利用聚類(lèi)技術(shù),動(dòng)態(tài)地過(guò)濾不誠(chéng)實(shí)的信任關(guān)系,增加了推薦的精度;林韶娟等[15]基于二值信任網(wǎng)絡(luò),提出了GenTrust算法來(lái)預(yù)測(cè)新的信任關(guān)系,提升了原始信任網(wǎng)絡(luò)推薦的準(zhǔn)確率。雖然上述算法都結(jié)合信任進(jìn)行評(píng)分預(yù)測(cè),但是都沒(méi)有考慮到托攻擊問(wèn)題,導(dǎo)致系統(tǒng)的魯棒性較差。
協(xié)同過(guò)濾推薦系統(tǒng)中,系統(tǒng)根據(jù)每個(gè)用戶的鄰居的概貌信息為其生成推薦列表,因此惡意用戶可人為地向系統(tǒng)中注入大量虛假概貌,成為多個(gè)真實(shí)用戶的近鄰,進(jìn)而達(dá)到影響推薦結(jié)果的目的,這種向推薦系統(tǒng)注入虛假概貌的行為即為托攻擊,2004年Lam等[16]首次正式提出了這個(gè)概念。托攻擊問(wèn)題被提出之后,如何在推薦的過(guò)程中對(duì)于托攻擊進(jìn)行檢測(cè)和抵御,成為了推薦領(lǐng)域中的又一重要課題。托攻擊方式主要分為兩種:提升攻擊項(xiàng)目排名的推攻擊;降低攻擊項(xiàng)目排名的核攻擊。圖1是托攻擊的一般結(jié)構(gòu)[17]。
圖1 托攻擊的一般結(jié)構(gòu)
圖1中,IS為選擇項(xiàng)目集合,IF為填充項(xiàng)目集合,it為攻擊項(xiàng)目集合。根據(jù)攻擊方式的不同,托攻擊又可以分為平均攻擊、隨機(jī)攻擊、混合攻擊等。由于本文實(shí)驗(yàn)中采用的托攻擊方式為隨機(jī)攻擊,下面只對(duì)該方式進(jìn)行介紹:選擇項(xiàng)目為空,評(píng)分為空,填充項(xiàng)目為隨機(jī)選擇,評(píng)分為該項(xiàng)目全局評(píng)分的臨近值,攻擊項(xiàng)目為要攻擊的目標(biāo),評(píng)分為最大值或者最小值。
在含有用戶信任信息的推薦系統(tǒng)中,托攻擊方式有了以下行為特征[18-21]:
1) 對(duì)稱(chēng)性:托攻擊用戶為了使自身的評(píng)分有更高的可信性,往往會(huì)對(duì)其他托攻擊用戶添加信任關(guān)系。與正常的信任關(guān)系的非對(duì)稱(chēng)性相比,其信任關(guān)系往往是雙向的,并且多個(gè)托攻擊用戶之間會(huì)形成區(qū)域性質(zhì)的信任關(guān)系,如圖2所示。
圖2 托攻擊用戶的對(duì)特征
2) 偽裝性:托攻擊用戶為了隱藏自身的惡意評(píng)分,對(duì)正常用戶添加信任關(guān)系。另外,由于托攻擊用戶的評(píng)分對(duì)于正常用戶難以分辨,使得正常用戶也會(huì)對(duì)其信任,如圖3所示。
圖3 托攻擊用戶的偽裝性
3) 傳染性:多個(gè)托攻擊用戶對(duì)于同一個(gè)正常用戶添加信任,導(dǎo)致該正常用戶被檢測(cè)為托攻擊用戶。如果該正常用戶被多數(shù)正常用戶所信任,惡意的信任關(guān)系的添加會(huì)降低該用戶在信任網(wǎng)絡(luò)中的可信度,最終導(dǎo)致整體的評(píng)分失衡,如圖4所示。
圖4 托攻擊用戶的傳染性
根據(jù)1.3節(jié)中托攻擊用戶在信任網(wǎng)絡(luò)下的表現(xiàn)特征,與正常用戶的信任關(guān)系對(duì)比,提出以下統(tǒng)計(jì)量:信任集群等級(jí)TCL(Trust Cluster Level)、信任項(xiàng)目等級(jí)TPL(Trust Project Level)、信任相似度等級(jí)TSL(Trust Similarity Level)、全局一致度等級(jí)GCL(Global Consistency Level)。結(jié)合以上統(tǒng)計(jì)量計(jì)算,給出信任托攻擊檢測(cè)TSAD算法(Trust Shilling Attacks Detection)的相關(guān)描述。
該等級(jí)描述了信任網(wǎng)絡(luò)中的用戶彼此信任的“集群”程度。由于正常用戶A的信任關(guān)系呈現(xiàn)非對(duì)稱(chēng)性,其信任的用戶往往不會(huì)有較大的交集。而托攻擊用戶的對(duì)稱(chēng)性特征,導(dǎo)致彼此之間的信任關(guān)系形成一定的集群特征。對(duì)于該等級(jí),定義如下:
(1)
式中:TA表示用戶A信任的用戶集合;TTA表示信任TA的用戶集合。對(duì)于托攻擊用戶的傳染性特征,式(1)一方面削減托攻擊用戶對(duì)于正常用戶添加信任的影響,另一方面正常用戶誤信任托攻擊用戶的影響也在公式中進(jìn)行削減。以圖3為例,對(duì)于分子,托攻擊用戶X對(duì)正常用戶A信任時(shí),托攻擊用戶X不會(huì)出現(xiàn)在用戶A信任的用戶集合中;對(duì)于分母,用戶A信任了托攻擊用戶X,但是由于托攻擊用戶X信任的托攻擊用戶集合Y,沒(méi)有被用戶A信任,不會(huì)參與計(jì)算。
為了欺騙正常用戶,托攻擊用戶會(huì)對(duì)填充項(xiàng)目進(jìn)行評(píng)分,一方面成為正常用戶A的鄰居用戶,一方面對(duì)于目標(biāo)項(xiàng)目進(jìn)行最大最小值評(píng)分而改變?cè)u(píng)分預(yù)測(cè)。評(píng)分可以由托攻擊的隨機(jī)攻擊的特性得出。托攻擊用戶的評(píng)分物品數(shù)量幾乎相同且評(píng)分物品數(shù)目較多。而實(shí)際推薦情景中,正是由于用戶對(duì)于較少的物品評(píng)分,導(dǎo)致評(píng)分矩陣數(shù)據(jù)稀疏使得推薦不理想。利用托攻擊用戶的這一特征,定義TPL為:
(2)
式中:It表示用戶t評(píng)價(jià)的項(xiàng)目集合;IA表示用戶A評(píng)價(jià)的項(xiàng)目集合;NumberIA表示用戶A評(píng)價(jià)的項(xiàng)目集合的數(shù)目。現(xiàn)實(shí)生活中,正常用戶A、B、C可能為同一個(gè)宿舍的同學(xué),都只是評(píng)論了一個(gè)項(xiàng)目,并且其互相之間添加了信任關(guān)系。按照式(2)最終計(jì)算得到的三個(gè)正常用戶的TPL較高,該等級(jí)的設(shè)計(jì)目的應(yīng)該是托用戶有較高的TPL??紤]到托用戶評(píng)分特點(diǎn),改善式(2),定義式(3),作為T(mén)PL的判定。
(3)
式中:Numbermax為評(píng)分最多項(xiàng)目的用戶的評(píng)分項(xiàng)目總數(shù),實(shí)際上對(duì)NumberIA進(jìn)行歸一化處理。對(duì)于正常用戶,由于其數(shù)據(jù)稀疏性,雖然評(píng)價(jià)了同一個(gè)商品,但是評(píng)論數(shù)量往往較少,通過(guò)調(diào)節(jié)參數(shù)φ和ω的大小,能夠適應(yīng)不同信任情況的推薦情形,同時(shí)也降低正常用戶的TPL等級(jí)。
托用戶攻擊方式,不論是托舉攻擊還是詆毀攻擊,對(duì)于填充項(xiàng)目都能取得項(xiàng)目的全局平均值,與正常用戶相比,尤其考慮正常用戶往往沒(méi)有過(guò)多的項(xiàng)目評(píng)分,所以兩者相似度不高。在信任網(wǎng)絡(luò)中,由于托攻擊用戶的相互信任行為和托攻擊的相似攻擊行為,導(dǎo)致其信任關(guān)系中的兩個(gè)用戶有很高的相似度。而不論正常用戶是否有信任關(guān)系,兩者的相似度都不會(huì)很高。利用托攻擊用戶的這個(gè)特征,定義TSL:
(4)
式中:simA,t為用戶A和用戶t的余弦相似度。
部分托攻擊用戶不添加信任信息,對(duì)系統(tǒng)進(jìn)行隨機(jī)攻擊,為了增加系統(tǒng)抵御該種托攻擊方式的魯棒性,提出全局一致度等級(jí)GCL,定義如下:
(5)
算法主要分為信任網(wǎng)絡(luò)中的托用戶判斷和未添加信任信息的托用戶判斷兩個(gè)部分。
1) 信任網(wǎng)絡(luò)中的托用戶判斷。首先計(jì)算信任網(wǎng)絡(luò)的統(tǒng)計(jì)量TCL、TPL、TSL,將每個(gè)統(tǒng)計(jì)量大于各自閾值α、β、γ的用戶加入托攻擊用戶集合。在添加之后,在托攻擊用戶集合中的用戶,滿足以下條件:信任關(guān)系中有較大的“集群”,評(píng)論了較多的項(xiàng)目且信任關(guān)系的用戶共同評(píng)分的項(xiàng)目較多,信任關(guān)系中的用戶與自身有較高的相度。可以認(rèn)為,此時(shí)集合中的用戶是添加了信任信息的托攻擊用戶。
算法步驟如下:
1. 將用戶分為托攻擊用戶集合attackUser和正常用戶集合normalUser,初始化為空。
2. 在信任關(guān)系數(shù)據(jù)集中,計(jì)算每一個(gè)有信任關(guān)系用戶的TCL、TPL、TSL。
3. 將TCL>α,TPL>β,TSL>γ的用戶添加到attackUser集合中。
6. 算法結(jié)束,attackUser集合中的用戶為檢測(cè)出的托攻擊用戶。
本次實(shí)驗(yàn)的數(shù)據(jù)采用含有信任信息的Eponions數(shù)據(jù)集[22-23],數(shù)據(jù)集包含49 290位用戶,139 738個(gè)不同的項(xiàng)目,664 824條評(píng)分記錄和487 181條信任記錄。數(shù)據(jù)集包含兩個(gè)文件,用戶評(píng)分?jǐn)?shù)據(jù)ratings_data.txt.bz2和用戶信任關(guān)系數(shù)據(jù)trust_data.txt.bz2。用戶評(píng)分?jǐn)?shù)據(jù)格式:user_id item_id rating_value,例如:3 12 5。用戶信任關(guān)系數(shù)據(jù)格式:source_user_id target_user_id trust_statement_value,例如:22633 12220 1。
系統(tǒng):Ubuntu。軟件:Java,Spark,Hadoop。內(nèi)存:16 GB。CPU:4核。編程語(yǔ)言:Scala,Java。
托攻擊用戶檢測(cè)率:該項(xiàng)反映了不同攻擊程度下,算法對(duì)于托攻擊的檢測(cè)效果,衡量了系統(tǒng)的魯棒性。定義如下:
(6)
由于托攻擊的目的就是將項(xiàng)目的評(píng)分拉高或者降低,最終達(dá)到提高推薦或者減低推薦的目的。采用該標(biāo)準(zhǔn)來(lái)檢測(cè)對(duì)比的兩種算法與文本算法在受攻擊時(shí)的抵抗攻擊程度。該值越小,說(shuō)明托攻擊未能對(duì)攻擊項(xiàng)目的評(píng)分加以影響,算法的魯棒性更好。定義如下:
(7)
本次實(shí)驗(yàn)對(duì)比的對(duì)象是協(xié)同過(guò)濾算法和林韶娟等[15]提出的基于二值信任網(wǎng)絡(luò)的推薦算法。托攻擊方式選擇隨機(jī)攻擊的托舉攻擊,在信任信息數(shù)據(jù)集中,人為地增加托攻擊用戶的信任關(guān)系,其信任關(guān)系為雙向的,人數(shù)數(shù)量為50,編號(hào)范圍為50000-50050,并且對(duì)于正常用戶隨機(jī)的對(duì)編號(hào)50000-50050的托攻擊用戶添加信任關(guān)系。在用戶評(píng)分?jǐn)?shù)據(jù)中,人為地增加托攻擊用戶,人數(shù)數(shù)量為50,編號(hào)范圍為50051-50100。采取隨機(jī)攻擊的方式,按照不同的填充大小和攻擊大小,增加托用戶的評(píng)分信息。
對(duì)于原始數(shù)據(jù)集,采用協(xié)同過(guò)濾和基于信任的推薦算法,得到結(jié)果數(shù)據(jù);對(duì)于添加了托用戶攻擊的數(shù)據(jù)集,采用協(xié)同過(guò)濾和基于信任的推薦算法,得到結(jié)果數(shù)據(jù);使用TSAD算法進(jìn)行托用戶檢測(cè)之后,對(duì)正常用戶集合采用協(xié)同過(guò)濾和基于二值信任網(wǎng)絡(luò)的推薦算法,得到結(jié)果數(shù)據(jù)。實(shí)驗(yàn)結(jié)果如下:
圖5為不同填充大小、不同攻擊大小下的托攻擊用戶檢測(cè)率。在填充大小和攻擊大小都為0.10%的情況下,由于托攻擊用戶的特征不夠明顯,此時(shí)一小部分正常用戶由于也具有較高的TCL、TPL、TSL,而被加入托用戶集合。而當(dāng)填充大小和攻擊大小的數(shù)量上升到1.00%時(shí),正常用戶已經(jīng)很難獲得較高的TCL、TPL、TSL,而不會(huì)被誤加入托攻擊用戶集合。
圖5 不同填充大小、不同攻擊大小下的托攻擊用戶檢測(cè)率
圖6為未使用TSAD算法的協(xié)同過(guò)濾算法的受攻擊項(xiàng)目的攻擊程度,填充項(xiàng)目在評(píng)分?jǐn)?shù)大于3且評(píng)分為3的項(xiàng)目集合中選擇100個(gè)項(xiàng)目,攻擊大小分別為5、10、20。可以看到,由于填充項(xiàng)目的評(píng)分與正常用戶的評(píng)分一致,使得托攻擊用戶與每一個(gè)用戶都擁有很高的相似度,在相似用戶中排名靠前。并且托攻擊用戶的平均評(píng)分接近正常評(píng)分,在預(yù)測(cè)評(píng)分公式中,對(duì)于攻擊項(xiàng)目得到更高的評(píng)分,算法對(duì)于托攻擊用戶抵御較差。
圖6 未使用TSAD算法的協(xié)同過(guò)濾算法的受攻擊項(xiàng)目的攻擊程度
圖7為基于二值信任網(wǎng)絡(luò)算法的受攻擊項(xiàng)目的攻擊程度,該算法在預(yù)測(cè)評(píng)分時(shí)采用了用戶之間的信任度,而信任度是根據(jù)信任用戶的個(gè)數(shù)計(jì)算的。為了方便比較,依然采用協(xié)同過(guò)濾算法時(shí)的填充大小和攻擊大小。可以看到,雖然二值網(wǎng)絡(luò)算法使用信任值增強(qiáng)了推薦的精確性,但由于實(shí)驗(yàn)數(shù)據(jù)集中,人為增加正常用戶對(duì)于托攻擊用戶的信任關(guān)系,導(dǎo)致托攻擊用戶在用戶預(yù)測(cè)評(píng)分計(jì)算時(shí),信任值較高較大,使得最終的受攻擊項(xiàng)目預(yù)測(cè)評(píng)分依然有較大的偏差,無(wú)法較好地消除托攻擊用戶的影響。
圖7 基于二值信任網(wǎng)絡(luò)算法的受攻擊項(xiàng)目的攻擊程度
圖8為T(mén)SAD算法檢測(cè)之后的受攻擊項(xiàng)目的攻擊程度,由于填充大小較少,修正TPL計(jì)算中項(xiàng)目數(shù)量的權(quán)重,將φ增大,ω減小,使得托攻擊用戶即使擁有較少的總評(píng)分項(xiàng)目數(shù),依然會(huì)有較大的TPL,會(huì)被算法檢測(cè)為托攻擊用戶,加入到托攻擊用戶集合中。與之前的實(shí)驗(yàn)結(jié)果對(duì)比,說(shuō)明在推薦的過(guò)程中,對(duì)于托攻擊用戶進(jìn)行檢測(cè),TSAD算法能夠提升推薦系統(tǒng)的準(zhǔn)確率,增強(qiáng)系統(tǒng)的魯棒性。
圖8 TSAD算法檢測(cè)之后的受攻擊項(xiàng)目的攻擊程度
在包含信任信息的推薦情景下,為了增加系統(tǒng)的魯棒性,本文從抵御托攻擊的角度提出信任網(wǎng)絡(luò)下的托攻擊用戶檢測(cè)算法TSAD。通過(guò)分析信任網(wǎng)絡(luò)下托攻擊用戶的行為特征,提出信任網(wǎng)絡(luò)下的不同托攻擊檢測(cè)統(tǒng)計(jì)量,以檢測(cè)隱藏在正常用戶集合中的托攻擊用戶。經(jīng)過(guò)實(shí)驗(yàn)的驗(yàn)證,在使用本文的TSAD算法檢測(cè)過(guò)濾到托攻擊用戶之后,對(duì)于協(xié)同過(guò)濾等易受托攻擊的算法,均能較好地抵御托攻擊用戶的托舉攻擊或者詆毀攻擊。但是,由于托攻擊手段的復(fù)雜性,往往在實(shí)際的托攻擊情況中,多種攻擊方式混合使用。此情境下,本文提出的統(tǒng)計(jì)量可能不能準(zhǔn)確檢測(cè)出托攻擊用戶,需要多種統(tǒng)計(jì)量來(lái)作為衡量維度或者綜合機(jī)器學(xué)習(xí)等知識(shí)去檢測(cè)。即便如此,TSAD算法也增加了信任網(wǎng)絡(luò)下推薦系統(tǒng)對(duì)于隨機(jī)攻擊托攻擊方式的魯棒性。面對(duì)更加復(fù)雜的托攻擊手段,希望本文能給其他學(xué)者解決問(wèn)題提供一些思路。