陳智 梁娟 謝兵 傅籬
摘 要:微博的龐大數(shù)量以及微博文本的多樣性,給微博輿情監(jiān)控和預(yù)測帶來較多困難,如果能夠預(yù)先判斷用戶發(fā)表微博的意向,那么就可以進(jìn)行更有針對性的引導(dǎo)和控制。文中根據(jù)微博用戶數(shù)據(jù)的主要特征,使用Python的scikit-learn包中的主要回歸預(yù)測模型,對用戶發(fā)表微博的意向進(jìn)行預(yù)測分析,評價(jià)不同回歸預(yù)測模型預(yù)測微博發(fā)表意向的能力以及用戶特征對微博發(fā)表意向的影響。通過實(shí)驗(yàn)研究發(fā)現(xiàn),用戶的微博發(fā)表意向更多取決于用戶關(guān)注數(shù),而梯度提升回歸模型對此問題有更好的適應(yīng)性。
關(guān)鍵詞:微博發(fā)表意向;Python;回歸預(yù)測模型;特征貢獻(xiàn)度
中圖分類號:TP391 文獻(xiàn)標(biāo)識(shí)碼:A 文章編號:2095-1302(2018)04-00-03
0 引 言
作為虛擬社交的重要方式之一,微博在主導(dǎo)輿論方面的作用越來越重要。微博輿論具有擴(kuò)散圈層化、傳播裂變化等特征[1],社會(huì)影響巨大。如何監(jiān)測和控制微博輿論,避免惡意言論和謠言在微博傳播,成為微博輿情監(jiān)控的重要研究內(nèi)容。目前,已有不少微博輿情分析[2]、垃圾信息檢測[3]、傳播趨勢預(yù)測[4,5]、輿論引導(dǎo)[6]等研究,但由于微博數(shù)據(jù)量龐大,且具有形式多樣化的特點(diǎn),使得各種輿情監(jiān)控算法在效率和性能方面都面臨著巨大壓力。如果可以預(yù)先判斷用戶發(fā)表微博的意向,進(jìn)而進(jìn)行引導(dǎo)和控制,那么就可以在一定程度上將惡意言論或謠言控制在產(chǎn)生初期并遏制其傳播,提高微博輿情監(jiān)控的效率。
本研究從爬盟[7]獲取微博用戶數(shù)據(jù),提取微博用戶數(shù)據(jù)的特征,并使用Python機(jī)器學(xué)習(xí)回歸預(yù)測模型分析這些數(shù)據(jù)與微博用戶發(fā)表意向之間的潛在規(guī)律,進(jìn)而對用戶可能發(fā)表微博的意向進(jìn)行預(yù)測,為微博輿情控制提供更細(xì)化的數(shù)據(jù)參考。
1 數(shù)據(jù)預(yù)處理
通過爬盟獲取的新浪微博用戶數(shù)據(jù)包括24個(gè)數(shù)據(jù)項(xiàng),即用戶ID,屏幕名,用戶名,是否VIP,VIP描述,自我介紹,性別,地區(qū),工作,教育,頭像,生日,QQ,MSN,Email,標(biāo)簽,關(guān)注數(shù),粉絲數(shù),微博數(shù),創(chuàng)建時(shí)間,關(guān)注列表,是否會(huì)員,是否達(dá)人,等級。在這些數(shù)據(jù)項(xiàng)中,用戶ID,屏幕名,用戶名都可以看作是用戶的唯一標(biāo)識(shí),作為一個(gè)數(shù)據(jù)項(xiàng)處理;是否VIP,VIP描述反映用戶加入VIP的情況,作為一個(gè)數(shù)據(jù)項(xiàng)處理;性別,地區(qū),工作,教育,頭像,生日,QQ,MSN,Email,創(chuàng)建時(shí)間可以看作自我介紹的明細(xì)和補(bǔ)充內(nèi)容,根據(jù)其詳細(xì)程度統(tǒng)一處理為自我介紹;關(guān)注列表是關(guān)注該用戶的其他用戶ID,對判斷用戶微博發(fā)表意向及后續(xù)研究沒有直接作用。因此,對微博用戶數(shù)據(jù)進(jìn)行篩選后,只留下用戶ID、自我介紹、關(guān)注數(shù)、粉絲數(shù)、微博數(shù)、是否VIP、標(biāo)簽、是否會(huì)員、是否達(dá)人、等級共10個(gè)數(shù)據(jù)項(xiàng),對其進(jìn)行必要的規(guī)范化轉(zhuǎn)換。
(1)用戶ID、關(guān)注數(shù)、粉絲數(shù)、微博數(shù)、是否VIP、是否會(huì)員、是否達(dá)人、等級:這些數(shù)據(jù)項(xiàng)保留其值,不做進(jìn)一步轉(zhuǎn)換;
(2)自我介紹:根據(jù)相關(guān)數(shù)據(jù)項(xiàng)(自我介紹,性別,地區(qū),工作,教育,頭像,生日,QQ,MSN,Email)是否為空,即根據(jù)用戶是否有介紹的相關(guān)數(shù)據(jù)項(xiàng)值來賦值,如果相關(guān)數(shù)據(jù)項(xiàng)中至少6項(xiàng)有值,則賦值為1,否則賦值為0;
(3)標(biāo)簽:標(biāo)簽在微博用戶相似度分析、博文推薦、影響力研究等領(lǐng)域都有較重要的作用,用戶添加標(biāo)簽的個(gè)數(shù)反映了用戶興趣領(lǐng)域的深度或廣度,同地區(qū)數(shù)據(jù)類似,考慮后續(xù)分析中數(shù)據(jù)維過于分散的問題,以用戶標(biāo)簽個(gè)數(shù)作為參考值。
此外,在獲取的用戶數(shù)據(jù)中,有一部分?jǐn)?shù)據(jù)存在數(shù)據(jù)缺失的情況,可直接刪除。
在本實(shí)驗(yàn)中,共從爬盟獲取了2 021個(gè).csv格式的用戶數(shù)據(jù)文件,包括用戶數(shù)據(jù)共3 583 677條,在預(yù)處理過程中,刪除了不完整數(shù)據(jù)共126 097條,最后獲得3 457 580條用戶數(shù)據(jù)為后續(xù)分析使用。
2 預(yù)測分析的方法及過程
用戶微博發(fā)表意向可以看作是一個(gè)回歸預(yù)測問題,以用戶發(fā)表的微博數(shù)作為輸出,以除了用戶ID之外的其他數(shù)據(jù)項(xiàng)作為高維輸入。即:
X= {[自我介紹,關(guān)注數(shù),粉絲數(shù),標(biāo)簽數(shù),是否VIP,是否會(huì)員,是否達(dá)人,等級]}
Y={微博數(shù)}
F(X)→Y的映射關(guān)系即為回歸預(yù)測模型,需要通過實(shí)驗(yàn)確定。在Python的scikit-learn包[8]中,包含了多個(gè)回歸預(yù)測模型,因此可以直接使用scikit-learn包中的模型,通過輸入用戶相關(guān)數(shù)據(jù),估計(jì)用戶發(fā)表微博數(shù)。通過模型評價(jià)選取其中最合適的一個(gè)或多個(gè)模型。
線性回歸模型是回歸分析中最基本、最簡單的模型,其模型預(yù)測能力的評價(jià)結(jié)果體現(xiàn)了X和Y滿足線性關(guān)系的程度;隨機(jī)梯度下降回歸模型采用隨機(jī)梯度下降參數(shù)估計(jì)算法,適用于輸入數(shù)據(jù)較多的回歸預(yù)測,可以看作是線性回歸模型的有力補(bǔ)充。
K近鄰回歸模型和回歸樹模型雖然能夠較好地解決非線性數(shù)據(jù)的建模問題,但是當(dāng)數(shù)據(jù)量過大時(shí),其訓(xùn)練效率低下。因此,綜合考慮模型的可用性和實(shí)現(xiàn)效率,采用集成模型中常用的隨機(jī)森林回歸模型、梯度提升回歸模型和極端隨機(jī)森林回歸模型作為參與比較的模型。
選取了以下模型進(jìn)行對比分析:
(1)線性回歸模型(Linear Regression);
(2)隨機(jī)梯度下降回歸模型(SGDR egressor);
(3)隨機(jī)森林回歸模型(Random Forest Regressor);
(4)梯度提升回歸模型(Gradient Boosting Regressor);
(5)極端隨機(jī)森林回歸模型(Extra Trees Regressor)。
在建立模型的過程中,首先對獲得的用戶數(shù)據(jù)進(jìn)行分割和規(guī)范化處理,然后用訓(xùn)練集數(shù)據(jù)訓(xùn)練各模型的參數(shù),最后使用測試集數(shù)據(jù),用R-square評價(jià)函數(shù)進(jìn)行模型能力評價(jià),其函數(shù)定義見式(1)。
其中:n為用戶數(shù)據(jù)的條數(shù);yi為第i個(gè)用戶實(shí)際發(fā)表的微博數(shù);為第i個(gè)用戶發(fā)表微博數(shù)的預(yù)測值;為用戶發(fā)表微博數(shù)的平均值。
R-square評價(jià)函數(shù)既考慮了預(yù)測值的內(nèi)部差異,也考慮了預(yù)測值與真實(shí)值之間的回歸差異,其數(shù)值表明模型回歸結(jié)果可被真實(shí)值驗(yàn)證的百分比。
3 回歸模型的預(yù)測能力分析
確定回歸模型預(yù)測能力的實(shí)驗(yàn)基于經(jīng)過預(yù)處理的所有用戶數(shù)據(jù)進(jìn)行,首先對這些數(shù)據(jù)進(jìn)行分割,選擇其中90%的數(shù)據(jù)作為訓(xùn)練集,10%的數(shù)據(jù)作為測試集,并使用隨機(jī)數(shù)種子35進(jìn)行隨機(jī)分割。分割之后的數(shù)據(jù)提供給5個(gè)回歸模型訓(xùn)練模型參數(shù),使用R-square評價(jià)函數(shù)評價(jià)模型預(yù)測能力。
此外,在所有采集的3 457 580條用戶數(shù)據(jù)中,存在發(fā)表微博數(shù)為0的數(shù)據(jù)。為確定發(fā)表的微博數(shù)為0對模型是否有影響,以及影響程度,在對所有數(shù)據(jù)執(zhí)行回歸分析后,排除了其中發(fā)表微博數(shù)為0的數(shù)據(jù),以剩下的2 882 839條數(shù)據(jù)再次進(jìn)行實(shí)驗(yàn)。兩種情況下各種模型的預(yù)測能力比較見表1所列。
從表1的實(shí)驗(yàn)結(jié)果可以看出,兩種線性模型(線性回歸模型和隨機(jī)梯度下降回歸模型)對用戶微博發(fā)表意向的預(yù)測能力均較差。在集成模型中,隨機(jī)森林回歸模型和梯度提升回歸模型的預(yù)測能力較強(qiáng),而極端隨機(jī)森林回歸模型在包含微博數(shù)為0和不包含微博數(shù)為0的情況時(shí),預(yù)測能力差異較大。
數(shù)據(jù)中是否包含微博數(shù)為0的數(shù)據(jù)對模型預(yù)測能力的影響并不明顯,但倘若不包含微博數(shù)為0的數(shù)據(jù),模型能夠得到更好的預(yù)測結(jié)果。
各種模型的R-square評價(jià)函數(shù)值最高為0.486 783 374 421,說明模型預(yù)測能力差強(qiáng)人意。一個(gè)可能的原因是:微博發(fā)表的數(shù)量一定為整數(shù),而回歸預(yù)測模型的預(yù)測結(jié)果為實(shí)數(shù),影響了評價(jià)函數(shù)的計(jì)算結(jié)果。
4 各數(shù)據(jù)項(xiàng)貢獻(xiàn)度分析
對3種集成回歸模型(隨機(jī)森林回歸模型、梯度提升回歸模型和極端隨機(jī)森林回歸模型)做進(jìn)一步分析,可以得到輸入的各數(shù)據(jù)項(xiàng)對模型的貢獻(xiàn)度,進(jìn)而確定哪些數(shù)據(jù)項(xiàng)對模型預(yù)測能力有決定性作用。
使用3種集成模型,包含微博數(shù)為0的數(shù)據(jù)時(shí),各數(shù)據(jù)項(xiàng)貢獻(xiàn)度見表2所列。
使用3種集成模型,不包含微博數(shù)為0的數(shù)據(jù)時(shí),各數(shù)據(jù)項(xiàng)貢獻(xiàn)度見表3所列。
綜合表2與表3的結(jié)果可以看出,“是否會(huì)員”數(shù)據(jù)項(xiàng)對模型貢獻(xiàn)度為0;“是否VIP”“是否達(dá)人”數(shù)據(jù)項(xiàng)對模型貢獻(xiàn)度約等于0。對模型貢獻(xiàn)度最大的是“粉絲數(shù)”和“關(guān)注數(shù)”,除了用包含微博數(shù)為0的數(shù)據(jù)訓(xùn)練的梯度提升回歸模型之外,其他模型中,“關(guān)注數(shù)”的貢獻(xiàn)度均大于“粉絲數(shù)”,即關(guān)注其他用戶越多的用戶,發(fā)表微博的熱情越高;而不是粉絲越多的用戶,發(fā)表微博的熱情越高。
5 數(shù)據(jù)分割對預(yù)測能力的影響
集成模型得到的回歸模型并不是確定不變的,使用不同的訓(xùn)練集或者在模型訓(xùn)練過程中選取的隨機(jī)值不同,都會(huì)對模型的參數(shù)造成影響,從而影響模型的預(yù)測效果。因此,在后續(xù)實(shí)驗(yàn)中,采用不同的隨機(jī)數(shù)種子多次分割數(shù)據(jù),訓(xùn)練3種集成模型并評價(jià)其性能,可更全面地說明模型的預(yù)測能力。
在實(shí)驗(yàn)中,從[0,100]之間隨機(jī)選取隨機(jī)數(shù)種子,作為Python中train_test_split()函數(shù)的參數(shù),得到不同訓(xùn)練集情況下,3種集成回歸模型的R-square值變化趨勢如圖1所示。
從圖1可以看出,排除少數(shù)孤立值,隨機(jī)森林回歸模型和梯度提升回歸模型的R-square值均在0.4~0.5之間變化,且梯度提升回歸模型的R-square值變化更集中,在預(yù)測微博發(fā)表意向時(shí)表現(xiàn)更加穩(wěn)定,而極端隨機(jī)森林回歸模型受測試集數(shù)據(jù)影響較大,其R-square值主要在0.35~0.5之間浮動(dòng)。
6 結(jié) 語
綜合以上實(shí)驗(yàn)研究可以發(fā)現(xiàn),關(guān)注數(shù)、粉絲數(shù)是用戶微博發(fā)表意向預(yù)測模型的主要特征項(xiàng),特征貢獻(xiàn)度最高的是用戶關(guān)注數(shù),即關(guān)注其他用戶越多的用戶,越有可能發(fā)表新的微博。在各種回歸預(yù)測模型中,3種集成回歸模型(隨機(jī)森林回歸模型、梯度提升回歸模型和極端隨機(jī)森林回歸模型)具有更好的模型預(yù)測能力。當(dāng)訓(xùn)練集變化時(shí),梯度提升回歸模型表現(xiàn)最穩(wěn)定。但是,各種回歸預(yù)測模型的預(yù)測能力都不盡如人意,一個(gè)可能的原因是:回歸預(yù)測模型的結(jié)果為實(shí)數(shù),而微博發(fā)表數(shù)據(jù)為整數(shù)。模型的適應(yīng)性以及如何提高模型預(yù)測能力還需要今后進(jìn)一步的研究和探討。
參考文獻(xiàn)
[1]王慧.微博輿論的傳播特征及社會(huì)影響[J].合肥學(xué)院學(xué)報(bào)(綜合版),2017,34(4):65-68.
[2]張露晨,張良,孫昊良,等.基于領(lǐng)域文法的微博輿情分析方法及其應(yīng)用[J].計(jì)算機(jī)應(yīng)用與軟件,2016,33(8):43-49.
[3]鄒永潘,李偉,王儒敬.基于多特征的垃圾微博檢測方法[J].計(jì)算機(jī)系統(tǒng)應(yīng)用,2017,26(10):184-189.
[4]劉巧玲,李勁,肖人彬.基于參數(shù)反演的網(wǎng)絡(luò)輿情傳播趨勢預(yù)測——以新浪微博為例[J].計(jì)算機(jī)應(yīng)用,2017,37(5):1419-1423.
[5]李文娟. 基于灰色模型的微博輿情預(yù)測研究[J]. 開封教育學(xué)院學(xué)報(bào),2017,37(1):280-282.
[6]張明旺. 基于微博的網(wǎng)絡(luò)輿情監(jiān)測與引導(dǎo)機(jī)制探索[J].電腦知識(shí)與技術(shù),2015,11(31):32-34.
[7]中國爬盟[DB/OL].http://www.cnpameng.com/
[8] Scikit-learn: machine learning in Python[DB/OL].http:// scikit-learn.org/