高澤鋒,王 邦,徐明華
1(華中科技大學 電子信息與通信學院,武漢 430074) 2(華中科技大學 新聞與信息傳播學院,武漢 430074) E-mail:zefenggao@163.com;wangbang@hust.edu.cn;xuminghua@hust.edu.cn
近年來,基于活動的社交網絡(EBSNs),例如meetup1和豆瓣同城2,得到了廣泛的發展.這些網站不僅為傳播各種各樣的社交活動提供了一個方便的平臺,也在用戶之間構建了一個龐大的社交網絡.由此,不管是學術界還是工業界,如何高效地為用戶推薦個性化的活動成了一個熱門的領域[1,2].活動推薦與其他產品的推薦不一樣,因為產品推薦通常并沒有被嵌入到社交網絡中,沒有考慮各種復雜的社交關系.所以,社交網絡中的活動推薦面臨很多新的挑戰.
推薦系統的常見方法可分為兩種:一種是協同過濾算法,一種是基于內容的推薦算法.在基于內容的推薦算法中,對音樂、電影這一類的物品做推薦時,主要使用的方法是用標簽來表征物品的特征[5],而在對類似于微博這樣的文本內容做推薦時,特征值的提取主要有兩種方式,一種是基于語義的方法,一種是基于統計的方法[6];本文即采用基于語義的方法來建立用戶興趣模型.
在對文本使用基于內容的推薦方法時,傳統的做法是將用戶所有的歷史記錄數據進行處理分析,并對用戶興趣愛好進行建模[8],然而這種方法并沒有考慮用戶的長短興趣隨時間的變化可能有所改變.雖有少量研究考慮了用戶的長短興趣變化[7,10],但沒有區分用戶行為記錄中的不同行為類別,亦未加入行為權重因素進行加權考慮.
本文根據用戶行為記錄結合了用戶的行為權重計算得到用戶的興趣模型,又結合時間衰減函數分別建立用戶的長期興趣模型和短期興趣模型.根據用戶的長期興趣向量與活動的類別進行匹配,得到用戶偏好的活動類別,然后進一步基于用戶的短期興趣向量與所選擇的活動類別中的具體活動進行相似度計算,從而得到每一類別中待推薦的活動.最后對所選活動根據相似度高低進行重排,取相似度高的前K個活動,形成最后的活動推薦列表.
本文的主要貢獻包括以下幾點:
1)通過結合時間衰減函數以及行為權重分別計算了用戶的長短期興趣模型,更準確地描述了用戶的興趣愛好及其可能的變化趨勢;
2)通過用戶的長興趣匹配活動類別后,舍棄相似度低的活動類別,減少了計算量的同時也能提高推薦的準確率;
3)通過爬取的實際社交網站數據進行了實驗,結果驗證了此方法的有效性和高效性.
圖1是本文個性化活動推薦算法的一個整體框圖.首先,根據豆瓣平臺上的活動類別將待推薦的活動進行分類,并分別計算每個類別的主題分布.根據用戶所有參加和感興趣的活動記錄,賦予行為權重并結合時間函數計算得到用戶的長期興趣偏好.接著,根據用戶近段時間的活動記錄計算得到用戶的短期興趣偏好.在進行活動推薦時,首先依據用戶長期興趣偏好,對活動類別計算相似度,選取相似度高的前幾類活動.其次,在所匹配的活動類別中,根據用戶短興趣與活動的相似度高低選取前K個活動.最后對所選的活動,根據相似度的高低做一個重排序,并選取TopK作為最終的活動推薦結果.

圖1 用戶個性化活動推薦框架圖Fig.1 Frame map of user′s personalized event recommendation

圖2 用戶興趣向量訓練流程圖Fig.2 Flow chart of user′s interest vector training
本文利用LDA(Latent Dirichlet Allocation)概率主題模型建立用戶興趣模型.LDA是一種非監督的機器學習技術,主要被用來識別大規模文檔集或語料庫中潛在的主題信息[3].
LDA模型有三層:
1)單詞層:從語料庫中提取出來一個詞頻大于一定數量的單詞集V={w1,w2,…,wv};
2)主題層:主題集Φ={z1,z2,…,zk}中的每一個zk,都是一個基于單詞集V的概率多項分布,可以被表示成φ=
3)文檔層:就單詞層而言,采用詞袋方法,每一篇文檔被表示成一個詞頻向量di=
LDA模型采用了狄利克雷分布作為概率模型分布的先驗分布,α和β分別是文檔-主題分布以及主題-詞分布的先驗知識.在給定的α和β下,由LDA模型生成一篇文檔的過程可以表述如下:
1)從狄利克雷分布Dir(α)中取樣生成文檔i的主題分布θi;
2)從主題的多項式分布θi中取樣生成文檔i的第j個單詞的主題Zi,j;
3)從狄利克雷分布Dir(β)中取樣生成主題Zi,j對應的詞分布φzi,j;
4)從詞語的多項式分布φzi,j中采樣最終生成詞語wi,j.重復這樣的過程就可以生成一篇文檔.
由吉布斯采樣可以得到α和β的近似值,即得到了文檔-主題的分布,以及主題-詞的分布.于是,訓練后的活動文本的LDA特征向量可表示如下:
本文使用上文所述的LDA模型來對活動文本進行潛在主題分布計算,進而計算出用戶的長短期興趣模型.圖二為計算用戶興趣模型的流程圖.
3.2.1 用戶長時興趣模型的計算
取用戶所有歷史記錄,使用LDA主題模型計算得到每個活動文本的特征向量,結合行為權重和時間衰減函數計算得到用戶的長時興趣向量.具體步驟如下:

b)對每個活動ei,若用戶參與了該活動,則取權重α1,若用戶只是對該活動感興趣,則取權重α2.用公式(1)計算fei,
fei=αj*lei,j∈{1,2}
(1)
并稱該fei為活動ei體現的無衰減的用戶興趣向量.
c)對每個ei,結合時間衰減公式[4]
f(t)=e-λ*t
(2)

(3)

可以看到用戶長興趣向量中的每一維代表的主題都與活動的特征向量相對應,所以他們之間計算相似度是完全合理的.
3.2.2 用戶的短興趣模型的計算
取用戶近期的歷史記錄,使用LDA主題模型計算得到每個活動文本的特征向量,結合行為權重和時間衰減函數計算得到用戶的短時興趣向量.具體步驟如下:

1)將所有待推薦的活動依據豆瓣平臺上的類別分成13組,表示成E={E1,E2,…,E13}.

(4)
(5)
3)對用戶U,使用公式(6)將U的長興趣向量Lu與lE={lE1,lE2,…,lE13}中每個類別的主題向量求余弦相似度,得到H={H1,H2,…,H13}.對H進行降序的排序后,取相似度值Top 3的類別記為T={Htop1,Htop2,Htop3}.

(6)

(7)
5)遍歷S,將這3K個活動根據相似度高低進行快速排序,取相似度值最高K的個活動加入列表R,得到R={e1,e2,…ek}作為最后的推薦結果.
算法1.選取為用戶U推薦的活動類別

輸出:為用戶推薦的活動類別列表T
1.初始化SUM=0;初始化列表T,H為空;
2.FOR EACHlEiINlE:
4. 將Hi及對應類別名加入中;
5.SORT(H);
6.T=TOP3(H);
7.RETURNT;
Hi表示用戶的長興趣向量與活動類別的主題向量的點積,即相似度.將Hi以及對應的活動類別加入到列表H中,遍歷完所有的活動類別之后把得到的H列表根據其中的相似值的高低降序排序,之后取相似值較高的三類活動加入到列表中返回.
算法2. 為用戶推薦topK的活動

輸出:為用戶推薦的topK活動列表R
1.初始化列表R,R′為空;
2.FOR EACHTiINT:
3. 初始化列表E,S,找到對應類別的活動加入E
4. FOR EACHejINE:
6. 將Sj及對應的活動id加入到列表S中
7. SORT(S)
8. 取topK(S),加入到列表R′中
9.SORT(R′)
10.R=topK(R′)
11.RETURNR
遍歷完活動類別列表T之后得到的活動列表R′包含了3K個活動,對R′根據相似值的高低再排序,取值較高的前K個活動作為最終的推薦結果.這樣做的原因是算法最終只需要推薦K個活動,那么只需要對每個類別中與用戶短興趣向量相似度較高的前K個活動進行重排序,相對于把三類活動全部整合再排序可以大大節約計算時間和計算機內存的消耗.
實驗選取了2015年9月21日至2016年9月20日這一年的豆瓣同城中上海地區的活動數據.共爬取活動15052個活動,25902個用戶.活動類別共有音樂,展覽,戲劇,講座等13類別.由于實驗將劃分前十個月的用戶記錄作為訓練數據,后兩個月的記錄作為測試記錄,用戶數據中有很大一部分的無效數據,所以進行了一定的預處理:
1)將訓練時間段內活動記錄數小于6個用戶數據剔除,將測試時間段內活動記錄數小于3個的用戶數據剔除;
2)將訓練活動數或者測試活動數大于100個用戶認為是異常用戶,剔除掉;
3)有部分用戶雖然符合訓練活動數和測試活動數,但是由于他的活動記錄中的個別活動無法爬取到,導致測試或訓練數不符要求也要剔除掉;
4)對后兩個月的測試活動中剔除掉0用戶參與并且0用戶感興趣的干擾活動.
最終預處理完之后留下11607個訓練活動作為訓練集,3362個測試活動作為測試集;用戶部分剔除掉了大量的無效數據,留下509個有效用戶,他們分別有至少6個的訓練活動數據和至少3個的測試活動數.
實驗訓練集與測試集數據的劃分:實驗取2015年9月21日至2016年7月20日這十個月作為訓練期,用戶在這段時間的數據記錄用來訓練用戶的興趣模型,取2016年7月21日至9月20日之間的兩個月的活動記錄作為測試數據.
論文選取了標準的評價指標作為該推薦算法的評價機制,對每個用戶,分別計算:
1)準確率PU(L),即系統為用戶推薦的L個活動中用戶參加或者感興趣的活動所占的比例[9].
2)召回率RU(L),即一個用戶感興趣的或者參加的活動被推薦的概率,定義為推薦列表中用戶喜歡的活動與所有用戶喜歡的活動的比率.
3)F1值,由于推薦的準確率和召回率與推薦列表的長度都是相關的,一般推薦列表增加,準確率會下降而召回率上升,所以需要一個包含準確率和召回率的二維向量來反映算法的表現.
(8)
4)P@n值,即推薦的個活動中前n個活動的準確率.由于本次實驗選取的用戶的測試活動數至少為3個,因此實驗對應地統計至少為3的推薦結果,即主要考察P@1與P@3.
5.3.1 時間函數和衰減因子
用戶長興趣模型結合了時間衰減函數進行計算.從實驗數據的分析中發現,通常一個用戶參與活動并不是非常頻繁,一般一個月內參與一次到兩次,所以公式(2)中的時間t的單位以月作為單位.

圖3 不同取值下的算法效果對比圖Fig.3 Comparisonofalgorithmeffectsunderdifferentvalues圖4 不同LDA維數下的實驗結果圖Fig.4 ExperimentalresultsofdifferentdimensionsofLDA圖5 α1=1時α2變化對算法效果的影響圖Fig.5 Influenceofthechangeofα2ontheeffectofthealgorithmwhenα1=1
對于衰減因子λ的選取,論文對不同取值下的推薦結果進行了對比,實驗結果見圖3.可以看到λ的取值從0.3變化到1時,算法的各項指標均呈現緩慢上升趨勢;當λ從1變化到1.5時,算法各項指標變化趨于平緩后略有下降趨勢.但對性能指標的影響并不是十分明顯,因此以下實驗結果中選取λ=1.
5.3.2 LDA主題維數的選擇
由于實驗中使用的數據已經帶有分類信息,故不再使用LDA主題分布來做分類,但是LDA主題的維數的多少可以衡量活動的每個潛在主題的區別度.維數越少,則訓練出來的主題之間存在著較小的關聯性,主題之間的區別度就較大;維數越多,訓練出來的主題之間的區別度就較小.來看下面的對比實驗:
可以看出隨著LDA維數的增加,各項指標呈現略有所上升的趨勢,當維度被放大到100維之后,前四項指標還是略有增加,但是P@3指標相較略有所下降,所以后續實驗選擇100維LDA模型.
5.3.3 行為權重值選取
在計算用戶的長短興趣模型時,對于用戶表現出來的不同行為賦予了不同的權重,若用戶參與了某個活動,取權重α1,若用戶只是對該活動感興趣,則取權重α2.這兩個權重的意義在于不同的行為體現的用戶的興趣是不同的,直觀的判斷是用戶參加的活動比用戶感興趣的活動更加符合用戶的興趣,即α1>α2.對于這兩個參數對推薦結果的影響,論文進行了實驗,結果如下:
從圖5可以看出:當α1固定為1時,α2從0.1變化到1,實驗的各項指標均是先有上升趨勢,到α2=0.3時,各項指標達到最大值,α2>0.3之后,各項指標趨于平緩后有下降趨勢.所以取α2為0.3.
從圖6可以看出:當α2固定為0.3時,α1從0.5變化到1,實驗的各項指標先有上升趨勢,當α1=0.9時,各指標達到最大值,之后基本保持平穩.所以取α1為0.9.
5.3.4 活動類別數選取
對于上面所述的算法中,用長興趣匹配活動類別后,首先選取了相似度最高的TopS個類別,論文進行了實驗判斷活動類別數S.
圖7繪出了用戶參與活動類別數的統計圖.可以觀察到,參與活動類別數最多的人群是2類、3類、4類.統計結果顯示,509個用戶中有336個用戶參加了2到4類活動,占了66%.
圖8繪出了選取不同活動類別數的活動推薦準確率,以及對比了另外兩種算法的準確率.可以看到S取3的時候比選2的情況下準確率略高一點,比選4的時候準確率略低一點.由于準確率相差非常的小,出于計算量的考慮,將S的取值定為3.但是不管S的取值是多少,高相似度類別算法的實驗準確率都明顯比其他兩種實驗的準確率要高.

圖6 α2=0.3時α1變化對算法效果的影響圖Fig.6 Influenceofthechangeofα1ontheeffectofthealgorithmwhenα2=0.3圖7 用戶參與的活動類別數-人數統計圖Fig.7 Summarygraphofnumberofeventcategoriesforusers-numberofpeople圖8 選取不同活動類別數的準確率對比以及三種方法的推薦準確率對比圖Fig.8 Contrastofdifferentnumberofeventcategoriesandcontrastofthreemethods
為了驗證論文提出的算法性,論文與以下兩種同類算法進行了對比實驗:
1)采用均衡各類別活動的占比方法[7]得到個性化推薦列表;
2)采用長興趣匹配所有活動法[8]得到個性化推薦列表;
3)采用論文提出的方法得到的推薦列表.
評價標準分別為準確率、召回率、F1值、P@n指標以及時間消耗.實驗結果見表1.
從實驗結果可知:
1)均衡占比法的準確率明顯比其他兩種方法低,說明在活動推薦中,大多數用戶的興趣愛好往往集中在某幾個類別中,并不會對平臺上所有的活動類別都感興趣.
2)論文提出的方法相較于長興趣匹配法各項指標都要好,說明長興趣用來匹配活動類別比較合適,而匹配具體活動時依據用戶短興趣進行選擇會更精確.
3)論文提出的方法比其他兩種方法在計算時間上都要優秀一個數量級,說明這樣的做法在不失準確率的基礎上大大提高了算法執行效率.
論文提出了一種基于LDA主題模型,并且結合用戶長短期興趣的活動推薦算法.算法中結合了時間衰減函數與行為權重計算用戶的穩定興趣愛好,與活動類別做相似度計算,選取相似度最高的前三類活動.對類內的活動又結合用戶近期行為得到的短興趣向量做依據計算與每個活動的相似度.取類內活動相似度最高的topK,匯總重排序后再取topK作為最后的推薦結果.實驗結果顯示這樣的方法在準確率,召回率,F1值以及執行效率等指標上都優于其他同類算法.

表1 各方法在top_3、top_5、top_10推薦性能上的比較Table 1 Comparison between different approaches in top_3,top_5 and top_10 recommendation
本文還有一些待改進的地方:由于首先選取了與用戶長興趣相似度最高的少量類別活動類別進行類別篩選,能夠減少時間復雜度,但這可能使得算法推薦活動的覆蓋率會相較其他算法有所下降,這是今后需要進一步提高的地方.
[1] Jie Bao,Yu Zheng,David Wilkiem,et al.Recommendations in location-based social networks:a survey [J].Geoinformatica(GEOINFORMATICA),Springer,2013,19(3):525-565.
[2] Pavlos Kefalas,Panagiotis Symeonidis,Yannis Manolopoulos.A graph-based taxonomy of recommendation algorithms andsystems in lbsns [J].IEEE Transactions on Knowledge and DataEngineeing(IEEE Knowl Data EN),2016,28(3):604-622.
[3] Blei D M,Ng A Y,Jordan M I.Latent dirchlet allocation[J].Journal of Machine Learning Research(J Mach Learn RES),2003,3(4/5):993-1022.
[4] Ding Yi,Xue Li.Time weight collaborative filtering [C].Proceedings of the 14th ACM International Conference on Information and Knowledge Management(CIKM),Bremen,Germany,ACM,2005.
[5] Gao Na,Yang Ming.Topic model embedded in collaborative filtering recommendation algorithm[J].Computer Science,2016,43(3):57-61.
[6] Sun Tie-li,Yang Feng-qin.An approach of building and updating user interestprofile according to the implicit feedback[J].Journal of Northeast Normal University,2003,35(3):99-104.
[7] Chen Jie,Liu Xue-jun,Li Bin.Personalized microblogging recommendation based on long-term and short-term interest of user[J].Journal of Chinese Computer Systems,2016,37(5):952-956.
[8] Guo Yu.Design and implenmentation of a test recommender system of social network based on latent dirichlet allocation[D].Beijing:University of Chinese Academy of Sciences,2015.
[9] Zhu Yu-xiao,Lu Lin-yuan.Evaluation metrics for recommender systems[J].Journal of University of Electronic Science and Technology of China,2012,41(2):163-175.
[10] Gao Xing,Yang Xiu-mei,Sun Yong,et al.Research of news recommendation based on dynamix user's interest matrix [J].Journal of Chinese Computer Systems,2016,37(5):948-951.
附中文參考文獻:
[5] 高 娜,楊 明.嵌入LDA主題模型的協同過濾推薦算法[J].計算機科學,2016,43(3):57-61.
[6] 孫鐵利,楊鳳芹.根據用戶隱式反饋建立和更新用戶興趣模型[J].東北師大學報自然科學版,2003,35(3):99-104.
[7] 陳 杰,劉學軍,李 斌.一種基于用戶長短期興趣的微博推薦方法[J].小型微型計算機系統,2016,37(5):952-956.
[8] 郭 宇.基于LDA的社會化網絡文本推薦系統的設計及實現[D].北京:中國科學院大學,2015.
[9] 朱郁筱,呂琳媛.推薦系統評價指標綜述[J].電子科技大學學報,2012,41(2):163-175.
[10] 高 興,楊秀梅,孫 詠,等.基于時間段的動態用戶興趣度矩陣的新聞推薦研究[J].小型微型計算機系統,2016,37(5):948-951.
征稿簡則
一、征稿范圍:《小型微型計算機系統》雜志刊登文章的內容涵蓋計算技術的各個領域(計算數學除外).包括計算機科學理論、體系結構、計算機軟件、數據庫、網絡與通訊、人工智能、信息安全、多媒體、計算機圖形與圖像、算法理論研究等各方面的學術論文.
二、來稿要求:本刊主要刊登下述各類原始文稿:
1.學術論文:科研成果的有創新、有見解的完整論述.對該領域的研究與發展有促進意義.
2.綜述:對新興的或活躍的學術領域或技術開發的現狀及發展趨勢的全面、客觀的綜合評述.
3.技術報告:在國內具有影響的重大科研項目的完整的技術總結.
三、注意事項
1.來稿務求做到論點明確、條理清晰、數據可靠、敘述簡練,詞義通達.
2.來稿必須是作者自己的科研成果,無署名和版權爭議.引用他人成果必須注明出處.
3.本刊采用在線投稿方式,可登陸http://xwxt.sict.ac.cn/進行在線投稿.
4.格式要求:題目(中、英文)、摘要(中、英文)、作者的真實姓名(中、英文)、作者的單位、城市(中、英文)、郵政編碼、E-mail(便于聯系的)、關鍵詞(中、英文4~7個),中圖分類號、作者簡介、基金項目.
(1) 英文部分的作者姓名使用漢語拼音,單位英文名稱須給出英文全稱,不要使用縮略語;
(2) 作者簡介包含作者姓名、性別、出生年、最高學歷、技術職稱、研究方向(若作者中有中國計算機學會(CCF)會員,請注明,并給出會員號).凡第一作者為CCF會員/高級會員/學生會員者,將享受八五折的版面費優惠;
(3) 基金項目的類別與項目編號.
5.中、英摘要:文章摘要具有獨立性和自明性,含正文等量的主要信息,一般為250~300字,采用第三人稱表述.
6.參考文獻:未公開發表的文獻不得列入.文后所列參考文獻統一排序,且必須在正文中引用.中文參考文獻應給出對應的英文譯文.其具體書寫格式為:
(1) 圖書:[編號]作者姓名(姓在前,名在后),書名,出版社地址,出版社,出版年.
(2) 期刊:[編號]作者姓名、文章題目、刊物名稱,出版年,卷號(期號):起止頁碼.
(3) 會議論文:[編號]作者姓名.論文題目.見:編者、論文集全名、出版地:出版者,出版年,起止頁碼.
(4) 網絡文獻:請給出文獻作者或單位名,文章題目、網址、發布日期.
7.插圖和表:插圖必須精繪并用計算機激光打印,一般不超過7幅.圖應結構緊湊,不加底紋,不要做成彩色的,圖寬最好不超過8厘米,圖內字號統一使用6號宋體,字跡、曲線清晰,必要時給出坐標名稱和單位.每個圖、表均給出中英文圖注(如:“圖1:***圖;”“Fig.1:***”)和表注(如:“表1:***表”,“Table 1:***”).
8.計量單位:稿件中一律使用《中華人民共和國法定計量單位》.外文和公式中應分清大、小寫和正、斜體,上、下角的字母、數碼位置準確.易混淆的字母或符號,請在第一次出現時標注清楚.
9.本刊在收到作者稿件經初審后立即給作者電子郵箱發“稿件收到通知”.除作者另有明確要求外,本刊原則上只與第一作者聯系,作者投稿后若4個月無消息,可自行改投它刊.通過初審的稿件將收到本刊給予的編號,并需郵寄審稿費.
10.本刊對不擬錄用的稿件只發給“退稿通知”,恕不退回原稿,請自留底稿.
11.稿件一經發表,將酌致稿酬,并寄送樣刊.
本刊文章現被國內外多家數據庫收錄,作者著作權使用費與本刊稿酬一并給付,作者若不同意將文章收錄,請在投稿時說明.
編輯部地址:沈陽市渾南區南屏東路16號《小型微型計算機系統》編輯部郵政編碼:110168
電話:(024)24696120 E-mail:xwjxt@sict.ac.cn網址: http://xwxt.sict.ac.cn