張翰林,丁琳琳,王俊陸,宋寶燕
(遼寧大學(xué) 信息學(xué)院,沈陽 110036)
近年來,基于社交事件的社交網(wǎng)絡(luò)(Event based Social Networks)作為一種提供在線社交事件信息的社交網(wǎng)站,越來越受到人們的青睞,如Meetup(1)http://www.meetup.com、Plancast(2)http://www.plancast.com等.在EBSN中如何根據(jù)用戶對事件的感興趣程度,為用戶制定一組科學(xué)合理的社交事件集,是當(dāng)前的研究熱點(diǎn)[1-3].目前很多算法的規(guī)劃通常從用戶與事件兩個(gè)方面考慮,從用戶角度考慮,每個(gè)用戶對每個(gè)事件有一個(gè)興趣值,每個(gè)用戶的總體旅行預(yù)算[2]或用戶的空閑時(shí)間;從事件角度考慮,社交事件集中事件間的關(guān)系[3],用戶參與事件的時(shí)空沖突[2,4,5],事件的發(fā)生時(shí)間段與資源約束[3].算法的評判標(biāo)準(zhǔn)大多集中在計(jì)算“總效應(yīng)值”[2,4,5]上,即將所有用戶的所有規(guī)劃集中事件的興趣值相加,該值越大,則表明規(guī)劃算法的表現(xiàn)越好.若從用戶角度考慮,利用貪心策略進(jìn)行規(guī)劃,則多數(shù)算法沒有考慮用戶本身的特征,沒有對用戶排序,導(dǎo)致規(guī)劃結(jié)果不夠優(yōu)化;若從事件角度考慮,當(dāng)事件容量不夠時(shí),有些用戶始終無法獲得事件,導(dǎo)致用戶對社交網(wǎng)站的滿意度下降.
針對上述問題,本文提出一種基于用戶特征的社交事件規(guī)劃與饑餓問題處理方法.主要貢獻(xiàn):1)提出一種離線的基于用戶特征的社交事件規(guī)劃算法,結(jié)合貪心思想,優(yōu)化了用戶的處理順序,較傳統(tǒng)貪婪規(guī)劃算法提高了總效用值;2)提出一種解決用戶饑餓問題的規(guī)劃算法,解決全局社交事件規(guī)劃算法出現(xiàn)的饑餓問題,提高了用戶滿意度;3)在Meetup合成數(shù)據(jù)集上的實(shí)驗(yàn)表明,本文所提基于用戶特征的規(guī)劃算法在性能和總效用值表現(xiàn)較好,救濟(jì)算法能夠有效消除饑餓用戶.
目前事件規(guī)劃算法主要從單一用戶角度進(jìn)行規(guī)劃、用戶組角度進(jìn)行規(guī)劃及對每一個(gè)用戶推薦一組滿足約束的事件集三個(gè)方向進(jìn)行研究.
A.MüNGEN等人[6]基于用戶參與事件的歷史與用戶感興趣的領(lǐng)域給用戶推薦社交事件;H.YIN等人[7]通過分析用戶間的社交關(guān)系推薦給好友最相似的事件;高澤鋒等人[8]提出一種結(jié)合LDA主題模型的推薦算法,結(jié)合時(shí)間函數(shù)和行為權(quán)重進(jìn)行事件推薦;以上研究工作對單一用戶進(jìn)行社交網(wǎng)絡(luò)事件的推薦,假定用戶彼此之間沒有聯(lián)系,忽略了用戶間的緊密交互性,且單一事件推薦無法滿足當(dāng)前社交網(wǎng)站大量事件的現(xiàn)狀.
Z.WANG等人[9]提出一種基于內(nèi)容感知的組成員社交影響推薦模型,按照社交影響給組成員推薦社交事件;S.PURUSHOTHAM等人[10]提出一種基于協(xié)作過濾的貝葉斯模型,捕獲用戶組中用戶的信息,用于個(gè)性化的組事件推薦;Y.JHAMB等人[11]從用戶和事件的角度考慮,通過Logistic與Proitsigmoid函數(shù)建立個(gè)性偏好的概率模型,但實(shí)際偏好很難通過單一模型進(jìn)行估計(jì).
Y.CHENG等人[4]綜合考慮事件容量與用戶能參與事件的個(gè)數(shù),利用貪婪算法的思想,對事件集與用戶集進(jìn)行全局社交事件規(guī)劃;J.SHE等人[2]提出考慮發(fā)生時(shí)空沖突時(shí),用戶與事件如何分配使得全局效用值最大的算法,但當(dāng)事件容量不夠時(shí),無法獲得事件的用戶滿意度會下降;J.SHE等人[5]進(jìn)一步提出了根據(jù)新事件或用戶的屬性調(diào)整全局社交事件規(guī)劃的算法.K.LI等人[12]提出了SEO問題,考慮了用戶個(gè)人與用戶間對事件的親密度;B.NIKOS等人[3]提出了SES問題,考慮了用戶間的社交關(guān)系和事件的影響力,B.NIKOS等人[13]在SES問題的基礎(chǔ)上進(jìn)一步提出了識別和分配適當(dāng)?shù)臅r(shí)隙,從而使參加活動的人數(shù)最大化;成雨蓉等人[14]提出了一種從用戶與事件兩個(gè)角度考慮的偏好穩(wěn)態(tài)規(guī)劃,提出了阻塞對的概念,但以上工作中若出現(xiàn)一些興趣值較小的用戶時(shí),不優(yōu)化用戶的處理順序?qū)霈F(xiàn)興趣值較高的用戶由于事件滿容量而無法參與她最感興趣的事件的情況,導(dǎo)致規(guī)劃結(jié)果的不合理.
USEPT問題是NP難問題[1],離線的社交事件規(guī)劃已知用戶與事件的相關(guān)屬性,已知用戶對事件的興趣值,對用戶進(jìn)行社交事件規(guī)劃,無論從事件角度,或從用戶角度考慮,規(guī)劃的目標(biāo)是使總效用值最大化,因此,本文提出基于用戶特征的社交事件規(guī)劃方法,優(yōu)化用戶處理順序,實(shí)現(xiàn)離線社交事件規(guī)劃.
定義1.(用戶和事件)社交網(wǎng)絡(luò)中的事件集E={ei|i∈[0,|E|]},其中i是事件的無序序號,|E|表示事件的總數(shù)量.社交網(wǎng)絡(luò)中的用戶集U={uk|k∈[1,|U|]},其中k,表示用戶的無序報(bào)名順序序號,|U|表示用戶的總數(shù)量.
設(shè)現(xiàn)有5個(gè)已報(bào)名加入?yún)⑴c事件的用戶u1~u5,有6個(gè)事件等待分配給這些用戶e1~e6,即規(guī)劃5個(gè)用戶如何合理地參與這6個(gè)事件的問題.假設(shè)每個(gè)用戶對每個(gè)事件有一個(gè)興趣值,即每個(gè)事件存在一個(gè)最感興趣的用戶,每個(gè)用戶同樣如此,用戶和事件的位置如圖1所示.
圖1 用戶與事件的位置關(guān)系Fig.1 Location between users and events
表1 用戶事件對表
Table 1 User-event pair
SU=3u1(0-171)u2(1-50)u3(2-50)u4(2-34)u5(1-10)事件發(fā)生時(shí)間e1(2)0.7
定義2.(用戶平均移動速度與轉(zhuǎn)場花費(fèi))每個(gè)uk有各自平均移動速度Suk,計(jì)算兩相鄰事件的轉(zhuǎn)場時(shí)間花費(fèi),此值可根據(jù)歷史統(tǒng)計(jì)值或數(shù)據(jù)挖掘得到,轉(zhuǎn)場花費(fèi)用公式(1)計(jì)算.
(1)
定義3.(位置)所有用戶和事件均有一個(gè)經(jīng)緯度信息lei=(xei,yei)/luk(xuk,yuk),用于表示其實(shí)際地理信息,在計(jì)算距離時(shí)求歐氏距離,如公式(2)所示,即:
(2)
式中xuk、yuk分別表示用戶uk的經(jīng)緯度,xei、yei分別表示事件ei的經(jīng)緯度,u?e表示從用戶uk的初始位置移動到某事件ei,e?e表示用戶從一個(gè)事件的位置到另一個(gè)事件的位置.
(3)
例,在傳統(tǒng)貪婪算法規(guī)劃中,當(dāng)設(shè)置所有用戶平均速度S=3時(shí),事件e1最感興趣的用戶為u4,但u4空閑時(shí)間不滿足,再找到u1,我們將事件e1加入u1的規(guī)劃中,同時(shí)繼續(xù)找u2、u5、u2滿足約束,將e1加入u2安排中,再尋找e2適合的用戶,u4符合約束,將e2加入u4中,繼續(xù)找u2、u3,將e2加入他們的規(guī)劃中,此時(shí)e2容量已滿,因此我們尋找e3適合的用戶,u3從e2出發(fā)到e3不滿足時(shí)間約束,u2、u4同樣不滿足,u5空閑時(shí)間不滿足,繼續(xù)找u1滿足約束,將e3加入u1安排,以此類推,得到全局規(guī)劃:Pu2={e1,e2,e5},Pu1={e1,e3,e4,e6},Pu3={e2,e6},Pu4={e2,e6},Pu5={e6},這樣全局事件規(guī)劃的興趣總值(效用總值)為7.7.
定義5.(全局規(guī)劃)一個(gè)合理可行的事件規(guī)劃集中,單個(gè)用戶的空閑時(shí)間真包含所有事件集的發(fā)生時(shí)間段,事件集中事件間的發(fā)生時(shí)間段沒有交集,且滿足轉(zhuǎn)場時(shí)間花費(fèi),表示為:PU={Puk|uk∈U,k=1,2,…,|U|}.
每個(gè)用戶對每個(gè)社交事件都有一個(gè)興趣值,該值決定了社交事件分配的順序,目前多數(shù)貪婪社交事件規(guī)劃算法忽略了用戶的處理順序[2],而提取用戶特征可以將一些具有明顯特征的用戶區(qū)分開來,通過對這些特征進(jìn)行排名,可以保證有最小的饑餓用戶的同時(shí),保證最大的總效用值.
對全體用戶空閑時(shí)間內(nèi)能參與的事件的個(gè)數(shù)進(jìn)行從小到大的排序,并對用戶空閑時(shí)間長短進(jìn)行從短到長的排序,這樣得到兩個(gè)排序,按照公式(4)進(jìn)行綜合.其中Hvar是方差排名,IR是評價(jià)值排名.
AV=(Hvar+IR)/2
(4)
(5)
其中,ρei∈[0,1]是根據(jù)歷年事件影響力的統(tǒng)計(jì)進(jìn)行評估.將事件的持續(xù)時(shí)間作為分母,對于持續(xù)時(shí)間較長的事件,降低它們每次加入用戶全局事件規(guī)劃的可能性.
對全體用戶空閑時(shí)間內(nèi)參與事件的興趣值求取方差,從小到大進(jìn)行排序,并將評價(jià)值R求和進(jìn)行由大到小的排序,得到兩個(gè)排序,按照公式(6)進(jìn)行綜合,其中Hcount(e)是某用戶空閑時(shí)間內(nèi)參與事件個(gè)數(shù)的排名,Iidle是某用戶空閑時(shí)間的長短排名.
AT=(Hcount(e)+Iidle)/2
(6)
參與事件個(gè)數(shù)越少,空閑時(shí)間越短,表明該用戶更需要優(yōu)先安排,可以減少饑餓用戶;用戶的空閑時(shí)間內(nèi)能參與的每個(gè)事件的評價(jià)值的方差越大說明該用戶的評價(jià)值相差越大,優(yōu)先安排這類用戶可以提高這類用戶的滿意度;興趣值總和越大說明該用戶愛好越廣泛,優(yōu)先安排這類用戶可以使總效用值越大.
借鑒Skyline查詢[16]多目標(biāo)優(yōu)化的特點(diǎn),針對多目標(biāo)即用戶特征排序進(jìn)行優(yōu)化,通過對用戶特征排序的同時(shí),盡可能接近全局最優(yōu)的結(jié)果,提出基于用戶特征的貪婪規(guī)劃算法(RGreedySkyline).算法流程如下:
Step 1.通過AV、AT這2個(gè)排名的組合,構(gòu)成Skyline的查詢二元組.迭代運(yùn)行Skyline,為更準(zhǔn)確的確定各個(gè)支配點(diǎn)的先后順序,每次運(yùn)行Skyline后求取各支配點(diǎn)與原點(diǎn)構(gòu)成的面積由小到大排序,直至遍歷所有點(diǎn),得到最終的用戶處理順序,再利用貪婪思想對用戶進(jìn)行社交事件規(guī)劃.
Step 2.引用先前工作[1]中RGPV算法的思想,先對用戶大于平均值的事件進(jìn)行規(guī)劃,然后再規(guī)劃小于用戶平均值的事件.
基于3.2節(jié)提出方法的邏輯,給出偽代碼實(shí)現(xiàn)及算法復(fù)雜度分析.算法偽代碼如算法1所示.
算法1. RGREEDYSKYLINE
輸出:A feasible global planPU.
1.cUE←dUE/SU,cEE←dEE/SU2.RUV←InitializeeveryRukeiby(5)3.PU←?,q←aquerystoresallusers4.InitializeothervariablesinAlgorithm1,tmp,series,Hvar,Iμ,AV,Iidle,AT5.Tuplesofusers(AV,AT)6.While(qisnotnull)do7.tmp←BNL(tuplesofusersinq)8.Removetmp'susersfromq9.10.Sorttmpaccordingtotheareasurroundedbytheorigin(0,0)increasinglyseries←series∪tmp11.CallRGPVAlgorithmin[1]12.OutputPU;
規(guī)劃算法中,可能由于一些興趣值較高(敏感度較高)的用戶占用了某個(gè)熱門事件的名額,導(dǎo)致其他只能在空閑時(shí)間內(nèi)參與該熱門事件的不敏感的用戶沒有事件可參與的情況.為此,本文提出救濟(jì)算法以解決該問題.
由于一些用戶的興趣值敏感度較高,搶占了過多事件資源,導(dǎo)致另一些興趣值不敏感的用戶始終無法擁有資源的現(xiàn)象稱為饑餓,如在十一黃金周期間,某段時(shí)間內(nèi)景點(diǎn)門票售罄,空閑時(shí)間只在該段時(shí)間內(nèi)的游客都無法進(jìn)入,此時(shí)這些游客均變成饑餓用戶,若事先將空閑時(shí)間內(nèi)可以參加其他事件的用戶手中的票,勻給這些沒有票的游客,則不僅用戶的滿意度上升,且總效用值下降不明顯.在本文約束條件下,當(dāng)某事件容量小于用戶總數(shù)量時(shí),可能發(fā)生饑餓.由于社交事件規(guī)劃算法均是離線的,若某事件容量不足,在某些情況下產(chǎn)生饑餓用戶幾乎是必然的.
假設(shè)用戶的空閑時(shí)間段相同,都包含全部事件集E,此時(shí),按照貪婪算法的思想,從第一個(gè)用戶開始進(jìn)行全局社交事件規(guī)劃,必定有用戶無法參與事件,且經(jīng)過救濟(jì)算法后,每個(gè)用戶均只參加了一個(gè)事件,但還是存在饑餓用戶,所以推論1成立.同理,當(dāng)某事件容量小于用戶總數(shù)量時(shí),總效用值不一定下降.
推論2.救濟(jì)算法執(zhí)行后,總效用值不一定減小,即:
或:
例如,文獻(xiàn)[1]中的三個(gè)全局社交網(wǎng)絡(luò)事件規(guī)劃算法中,算法RDP得到的安排結(jié)果總效用值最大,但RGS算法中用戶的排名與事件集的大小有關(guān),若事件集過大,用戶排名無法做到完全最優(yōu),所以,可能出現(xiàn)有些對某事件興趣值較大的用戶,未安排事件,導(dǎo)致饑餓的現(xiàn)象發(fā)生,因此總效用值不一定減小,推論2成立.
針對上述問題,本文提出救濟(jì)算法(RescueHunger)判斷全局規(guī)劃結(jié)果集中是否存在饑餓用戶,調(diào)整全局規(guī)劃事件集盡最大可能減少饑餓用戶的數(shù)量,同時(shí)保證總效用值下降最小.
基于4.2節(jié)提出方法的邏輯,給出偽代碼實(shí)現(xiàn)及算法復(fù)雜度分析.救濟(jì)算法偽代碼見算法2.
算法 2. RESCUEHUNGER
輸出:A new feasible planPU.
2.FindUstrin|U|orReturnPU
3.If|Ustr|=0ReturnPU
4.ForeachukinUstrdo
7.Foreachujin Ugdo
15.OutputPU
實(shí)驗(yàn)在通過與Meetup真實(shí)數(shù)據(jù)集進(jìn)行合成的數(shù)據(jù)集上進(jìn)行,對比算法為RDP算法和RG算法,并加入文獻(xiàn)[1]中的預(yù)處理算法Pre,實(shí)驗(yàn)環(huán)境為Windows7操作系統(tǒng),CPU為Intel 8核e3-1230 v5、3.4GHz、內(nèi)存為8GB.
真實(shí)數(shù)據(jù)集的分布情況如表2所示.原始數(shù)據(jù)包括:用戶與事件的位置信息、事件的發(fā)生時(shí)間段;合成的數(shù)據(jù)段包括:
表2 數(shù)據(jù)集信息及影響因素表
Table 2 Data set information and effect factors in experiments
影響因素AlaskaLosAngeles事件平均容量實(shí)驗(yàn)變量設(shè)置|E|7031522851.0510,0.5k,1k|U|5600780050.7210,0.5k,1k
用戶對事件的興趣值(通過用戶喜好標(biāo)簽與事件屬性標(biāo)簽匹配個(gè)數(shù)、用戶的空閑時(shí)間段、用戶的平均移動速度、事件的最大容納用戶的數(shù)量(事件容量).其中,后三項(xiàng)是隨機(jī)生成的.實(shí)驗(yàn)的主要評價(jià)標(biāo)準(zhǔn)為總效用分?jǐn)?shù)(總效用值)大小與饑餓用戶數(shù)量的變化,次要評價(jià)標(biāo)準(zhǔn)為運(yùn)行時(shí)間.
實(shí)驗(yàn)參量設(shè)置如表2所示,分別改變事件數(shù)量、用戶集數(shù)量,同時(shí)為線性實(shí)驗(yàn),將每個(gè)事件的影響力設(shè)置為1,并將每個(gè)用戶設(shè)置為相同的平均移動速度.
同時(shí),檢測了兩個(gè)事件集的沖突率,如圖2所示.
圖2 數(shù)據(jù)集中事件的沖突率圖Fig.2 Conflict ratio of event set in two data sets
從圖2中可以看出,數(shù)據(jù)集的事件沖突率在事件數(shù)量增大時(shí),沒有較大的突變,維持在0.65-0.70之間,對于實(shí)驗(yàn)結(jié)果影響較低.
圖3表示改變事件數(shù)量情況下RGS算法的性能.
從圖3(a)和圖3(b)可以看出,用戶數(shù)量增大時(shí),三個(gè)算法運(yùn)行時(shí)間均增大.從圖3(c)和圖3(d)可以看出,用戶數(shù)量增大時(shí)總效用值增大明顯,由于事件容量較大,因此不會出現(xiàn)用戶無事件可參加的情況.
圖4為改變用戶數(shù)量情況下RGS算法的性能.
如圖4(a)和圖4(b)所示,事件數(shù)量增大時(shí),三個(gè)算法運(yùn)行時(shí)間均增大.觀察圖4(c)和圖4(d)可以看出,當(dāng)事件數(shù)量達(dá)到2k時(shí),在用戶數(shù)量為200時(shí),三種算法的效用總值下降明顯,這是由于在增大的事件集中,用戶更感興趣的事件持續(xù)時(shí)間較長,占用了其他短時(shí)間事件的時(shí)間,每個(gè)用戶參與事件的數(shù)量下降,所以效用總值下降.當(dāng)用戶數(shù)量增大時(shí),彌補(bǔ)了事件無法充分安排的不足,當(dāng)|U|=500時(shí),效用總值不下降.
圖3 改變用戶數(shù)量評估RGS算法Fig.3 Change the number of users to evaluate the RGS algorithm
圖4 改變事件數(shù)量評估RGS算法Fig.4 Change the number of events to evaluate the RGS algorithm
結(jié)論:盡管RGS算法的總效用值不如動態(tài)規(guī)劃算法,但RGS算法的運(yùn)行時(shí)間較RDP算法具有明顯的優(yōu)勢,而RG算法的總效用值較RGS小,因此RGS算法的性能更優(yōu).
圖5表示真實(shí)數(shù)據(jù)評估救濟(jì)算法的總效用.
從圖5(a)-圖5(c)和圖5(d)-圖5(f)可以看出,隨著用戶數(shù)量的增長,在|E|=10時(shí)效用總值增長不明顯,但|E|=100和|E|=1000時(shí),總效用值增長較快,由于事件的總?cè)萘抗潭?,雖然有更高興趣值的用戶加入,但總效用值仍受參與用戶數(shù)量的限制,沒有明顯增長;當(dāng)事件數(shù)量增大時(shí),容納用戶數(shù)量顯著增大,因此隨著用戶數(shù)量的增大,總效用值也隨之顯著增長;執(zhí)行救濟(jì)算法后,算法的總效用值在用戶數(shù)量增大時(shí)下降,而RGS算法的總效應(yīng)值卻上升了,見推論2.
圖5 真實(shí)數(shù)據(jù)評估救濟(jì)算法的總效用分?jǐn)?shù)圖Fig.5 Real data to evaluate the total utility scores of the relief algorithm
圖6為評估救濟(jì)算法的運(yùn)行時(shí)間.
對RDP、RGS兩個(gè)算法的規(guī)劃結(jié)果運(yùn)行救濟(jì)算法,從圖6中可以看出,當(dāng)饑餓用戶較多且事件數(shù)量較少時(shí),算法運(yùn)行時(shí)間較少,同樣當(dāng)饑餓用戶較多且事件數(shù)量較多時(shí),算法運(yùn)行時(shí)間也較少,但當(dāng)饑餓用戶與事件數(shù)量適中時(shí),由于救濟(jì)的用戶數(shù)量上升,因此運(yùn)行時(shí)間明顯增大.
圖7為評估救濟(jì)算法執(zhí)行后的救濟(jì)效果.
從圖7(a)-圖7(c)可以看出,當(dāng)|E|=10時(shí),饑餓用戶隨著用戶數(shù)量的增長明顯增大,由于事件容量一定,因此用戶數(shù)量顯著增大時(shí),饑餓數(shù)量明顯上升,但由于候選救濟(jì)用戶幾乎不存在,所以救濟(jì)算法效果不明顯.隨著事件容量的上升(|E|=100、|E|=1000),能容納用戶的數(shù)量上升,因此救濟(jì)算法效果明顯.
圖6 真實(shí)數(shù)據(jù)評估救濟(jì)算法的運(yùn)行時(shí)間圖Fig.6 Real data to evaluate the running time of the relief algorithm
從圖7(d)-圖7(f)可以看出,當(dāng)|E|=100和|E|=1000時(shí),執(zhí)行救濟(jì)算法后,饑餓用戶數(shù)量顯著下降,救濟(jì)算法效果明顯.
結(jié)論:通過三組評價(jià)指標(biāo),可以看出雖然RDP的規(guī)劃結(jié)果總效用值較大,但執(zhí)行救濟(jì)算法后RGS的總效用值上升了;救濟(jì)前,RDP的饑餓用戶的數(shù)量較少,救濟(jì)后,兩個(gè)算法饑餓用戶數(shù)量持平;因此RGS算法與救濟(jì)算法結(jié)合表現(xiàn)更好.
本文通過提出一種與Skyline查詢結(jié)合的社交事件規(guī)劃算法RGS優(yōu)化了貪婪算法中用戶的處理順序,合理地對具有不同特征的用戶進(jìn)行社交事件規(guī)劃,較傳統(tǒng)貪婪算法提高了總效用值;救濟(jì)算法RH解決在特定約束下的全局事件規(guī)劃中可能出現(xiàn)的饑餓現(xiàn)象,同樣此思想可以應(yīng)用到具有其他約束的規(guī)劃算法中,通過救濟(jì)算法對規(guī)劃結(jié)果進(jìn)行處理有效減少了全局規(guī)劃中饑餓用戶的數(shù)量,最大程度解決了由于其他愛好廣泛的高興趣值用戶搶占事件資源的情況,最后通過在與Meetup真實(shí)數(shù)據(jù)集合成的合成數(shù)據(jù)集上的實(shí)驗(yàn)結(jié)果表明,本文提出的RGS算法能夠有效的進(jìn)行社交事件規(guī)劃,RH算法能夠有效解決全局規(guī)劃算法中存在的用戶饑餓問題.