武曉丹
(太原師范學院 計算機科學與技術(shù)學院,山西晉中,030619)
關(guān)鍵字:Twitter;特征選擇;Scikit-Learn庫;特征提取
隨著互聯(lián)網(wǎng)的發(fā)展,諸如推特(Twitter)、新浪微博(Sina Weibo)這樣的新社交媒體也隨之發(fā)展起來。作為全球最具影響力應用程序之一的Twitter在其2022年第一季度的收益報告中表示,其日活躍用戶數(shù)達到2.29億,這一數(shù)字在上一季度是2.17億。Twitter這樣的微博平臺作為互聯(lián)網(wǎng)時代人們進行溝通的重要工具,為用戶快速交流提供便利,因此受到越來越多人們的關(guān)注。但是Twitter的這些特點也給“網(wǎng)絡水軍”提供了活動場所。水軍會通過虛假意見的廣泛傳播引導輿論,人為控制事件走向,從而達到自己的目的;同時大量水軍的存在也會導致微博內(nèi)容的真實性降低,質(zhì)量下降,嚴重影響普通用戶的使用。由于水軍的存在給Twitter等微博平臺帶來很多不穩(wěn)定的風險。因此,如何在Twitter中準確識別水軍,還給網(wǎng)絡世界一個安全穩(wěn)定的環(huán)境,成為微博熱點研究中一個亟待解決的問題。
隨著水軍反檢測能力越來越強,之前從傳播學角度定性判別水軍的方法難以達到理想效果,易于形成識別漏洞。因此,本文通過不同數(shù)據(jù)集以及Scikit-Learn機器學習庫中分類算法訓練分類器,并以此得出具有較好分類效果的特征和機器學習算法。
目前,隨著網(wǎng)絡的飛速發(fā)展以及自媒體時代的到來,微博作為分享交流信息的平臺,受到很多喜愛。關(guān)于微博的研究方向有很多,水軍發(fā)現(xiàn)也是近年來微博研究中的一個熱門話題。
國外學者陸續(xù)展開相關(guān)研究,Yard[1]等分析研究了Twitter的發(fā)展歷史,通過鏈接URL以及賬戶名稱規(guī)律性等特征識別垃圾郵件用戶。Stringhin[2]等通過創(chuàng)建Twitter用戶行為分析模型,從而區(qū)分出垃圾用戶與普通用戶。Amlesh-wara[3]等分析特征后建立Twitter用戶識別模型CATS,并證明該模型對于少量數(shù)據(jù)也有很很好地識別果。Zhang等通過分析Twitter中含有鏈接URL的推文以及其對應賬戶的特征來區(qū)分水軍用戶與普通用戶,并利用機器學習方法來檢驗其結(jié)論。
國內(nèi)對微博水軍最早的研究出現(xiàn)在2010年。謝忠紅等指出網(wǎng)絡水軍的定義并分析其特點,總結(jié)出8個基于用戶屬性的特征并訓練邏輯回歸算法,最終實現(xiàn)水軍的識別。莫倩等研究正常用戶與水軍用戶的社交網(wǎng)絡關(guān)系,發(fā)現(xiàn)其形成的社交圈有很大不同,具有不平衡的粉絲關(guān)注比。程曉濤等則在此基礎(chǔ)上加入“用戶是否認證”這一特征,并且分析用戶屬性特征和行為特征,提出基于關(guān)系圖特征的水軍賬號識別方法。韓晴晴等綜合分析微博用戶的多種特征,總結(jié)出6個屬性特征集并且考慮實際中有標記數(shù)據(jù)少無標記數(shù)據(jù)多,利用半監(jiān)督協(xié)同訓訓練類器識別微博水軍。
微博水軍的研究已經(jīng)得到社會各界的廣泛關(guān)注,所以如何精準且高高效地識別軍是一個具有很大挑戰(zhàn)的事情。目前大多數(shù)研究有些側(cè)重于單個水軍所發(fā)推文的檢測,有些則側(cè)重于水軍賬號的檢測,本實驗重點是前者。
特征選擇是特征工程中的重要環(huán)節(jié),其目的是提升模型效果,提高運行速度。本實驗采用相關(guān)性檢驗中的卡方檢驗,這是特征選擇中的Filter過濾法,其思想是研究特征與標簽之間的關(guān)聯(lián)性,根據(jù)對特征進行統(tǒng)計檢驗之后得到的分數(shù),從而篩選出相對無用的特征,挑選出最相關(guān)的特征。即對特征賦予權(quán)重,權(quán)重代表著特征的重要程度,對權(quán)重進行排名。如圖1所示。
圖1 Filter過濾法
卡方檢驗chi2是專門針對分類問題的一種獨立性檢驗,它是先假設(shè)兩個變量互相獨立,然后再觀察實際值與理論值的差距,若差距足夠小,則原假設(shè)成立。即計算特征與標簽之間的卡方統(tǒng)計量,并以此為依據(jù)將特征從高到低排名,再計算卡方值對應的p值,以0.05或者0.01作為閾值過濾相應的特征,從而可以去除最獨立于標簽,與實驗目的無關(guān)的特征。
卡方檢驗的計算公式為:
其中,A為實際值,T為理論值。
對Twitter水軍的屬性特征進行分析,發(fā)現(xiàn)與普通用戶相比,水軍由于是為某些目的性因素而出現(xiàn),例如炒作、宣傳、引導輿論之類,其對于自身賬戶的經(jīng)營比較少,因此Twitter水軍往往具有較少的粉絲數(shù)以及較多的關(guān)注數(shù)。而且Twitter水軍賬戶對其他用戶較為關(guān)注,它的收藏、回復和轉(zhuǎn)發(fā)數(shù)都比較高。此外Twitter水軍為了讓更多的人瀏覽到自己的推文,經(jīng)常會帶熱門話題(#)發(fā)文,或者是常常提及(@)其他用戶引起關(guān)注,再或者是在自己的推文中使用較多的帶有目的性的鏈接(URL),例如廣告、釣魚網(wǎng)站之類,因此水軍推文包含的話題標簽數(shù)、URL鏈接數(shù)、用戶提及數(shù)都會比較高。
本實驗在3個數(shù)據(jù)集上進行訓練和測試。數(shù)據(jù)集如下:
(1)第一個數(shù)據(jù)集來自Chen chao等人采集。這個數(shù)據(jù)集具有現(xiàn)成的特征集。特征信息如表1所示。
表1 數(shù)據(jù)集1的特征選取信息
(2)第二個數(shù)據(jù)集來自Kaggle競賽。這個數(shù)據(jù)集提供Tweet文本,以及Tweet帳賬戶的些特征,因此能夠手動提取特征集。本實驗提取的特征集如表2所示。
(3)第三個數(shù)據(jù)集來自Chen Weiling等人采集。這個數(shù)據(jù)集原是帶有標簽的Tweet ID列表,Weiling Chen等人通過Twitter API密鑰,檢索出推文得到數(shù)據(jù)集,因此也能夠提取其特征。本實驗提取的特征集與數(shù)據(jù)集2提取的相同,也如表2所示。
表2 數(shù)據(jù)集2、數(shù)據(jù)集3的特征選取信息
由表1和表2可以看出,數(shù)據(jù)集2、3所提取的特征與數(shù)據(jù)集1的特征相同,并在此基礎(chǔ)上多提取出兩個特征,分別是“actions”和“spam_words_count”。
對特征與標簽進行相關(guān)性檢驗能有效選擇出具有高區(qū)分度的特征??ǚ綑z驗在二分類問題上非常有效??ǚ綑z驗,又稱χ2檢驗,它是測量特征與標簽的相關(guān)性,相關(guān)性大的特征則認為與標簽的區(qū)分度好,相關(guān)性小的特征則認為其對于水軍的區(qū)分度差。
如圖2所示是數(shù)據(jù)集1的特征進行卡方檢驗的分數(shù)排名直方圖,可以看出,排名前三的特征分別是“粉絲數(shù)follower”“轉(zhuǎn)發(fā)次數(shù) retweets”以及“關(guān)注數(shù) following”,即這三個特征與標簽的相關(guān)性較大。
圖2 特征集1的卡方檢驗
如圖3和圖4所示是對具有相同特征集的不同數(shù)據(jù)集進行卡方檢驗,即對數(shù)據(jù)集2和數(shù)據(jù)集3進行相關(guān)性檢驗。圖2表示數(shù)據(jù)集2的卡方檢驗得分排名情況,其得出的主要特征是“粉絲數(shù) follower”,“關(guān)注數(shù) following”,“收藏、回復、轉(zhuǎn)發(fā)總數(shù)actions”。圖3表示數(shù)據(jù)集3的卡方檢驗得分排名情況,得到的有效特征同樣如此,主要特征是“follower”,“actions”以及“following”。因此對于本實驗數(shù)據(jù)集2和3,貢獻比較大的特征主要是“粉絲數(shù)”“關(guān)注數(shù)”以及“收藏、回復、轉(zhuǎn)發(fā)總數(shù)”三個特征。
圖3 特征集2的卡方檢驗
圖4 特征集3的卡方檢驗
針對水軍的特性,本實驗采用準確率Accuracy等評價指標來評估模型。對于水軍不平衡分類問題,本實驗引入了混淆矩陣,如表3所示。
表3 混淆矩陣定義
其中有Positive、Negative、True、False四個概念,P表示預測類別為1,N表示預測類別為0;T表示預測正確,F(xiàn)表示預測錯誤。根據(jù)混淆矩陣從而能計算出分類性能評價指標:
本實驗使用python語言編寫,采用Twitter真實數(shù)據(jù)集進行訓練與測試。Scikit-Learn是一個提供大量機器學習工具和模型的功能強大的Python庫。通過Python機器學習庫中的幾種分類算法對提取的特征進行實驗,比較得出提高水軍識別準確率的特征以及不同算法對水軍識別的效果差異。實驗采用的第一種分類算法是SVM,第二種分類算法是KNN,第三種是RF算法。
如表4所示,在數(shù)據(jù)集1上SVM算法能夠得到的結(jié)果是67.4%的準確率;采用KNN算法結(jié)果改善了一些,將準確率提高到75.5%;而RF算法在分類器訓練之后得到了最好的效果,賦予了82%的準確率。
表4 準確率(accuracy)對比
在數(shù)據(jù)集2上實驗證明了改善的結(jié)果很顯著。通過之前相關(guān)性檢驗的實驗可知,其中主要的改進因素來自“actions”特征的存在,這個特征表示該推特用戶的收藏、回復、轉(zhuǎn)發(fā)總數(shù)。同樣,SVM算法結(jié)果明顯提升,準確率從之前的67.4%提高到93%;對于KNN算法,準確率比起SVM稍微提升,在94.5%左右;最后,對于數(shù)據(jù)集1訓練得到的分類準確率有很大提升的RF算法,對于數(shù)據(jù)集2,結(jié)果同樣令人震驚,該算法能夠以99.87%的準確率進行識別,得到的分類效果最好。
在數(shù)據(jù)集3上的實驗結(jié)果,相對于數(shù)據(jù)集2可能不太理想,因為其數(shù)據(jù)是來自隨機選擇推文組成的數(shù)據(jù)集所生成的特征集。SVM得到的結(jié)果是69%的準確率,KNN分類算法的訓練結(jié)果有所提升達到78.5%,RF算法依舊得到最好的分類效果,有86.6%的準確率。
社交媒體上的水軍識別是社交網(wǎng)絡需要面對的最大問題之一,對網(wǎng)絡水軍的精準識別是目前微博研究領(lǐng)域亟待解決的難題。
通過對水軍識別相關(guān)文獻的研究,本文利用Scikit-Learn機器學習庫中3種分類算法對Twitter上3個不同真實數(shù)據(jù)集進行訓練,設(shè)計水軍識別分類器。在創(chuàng)建特征集的過程中,對Twitter用戶的屬性特征進行具體分析發(fā)現(xiàn)特征的選擇比數(shù)據(jù)集更重要,相較于數(shù)據(jù)集1,數(shù)據(jù)集2和3中引入了“推特用戶收藏、回復、轉(zhuǎn)發(fā)總數(shù)actions”特征后,水軍識別的準確率大幅度提升,并且對于3個分類算法都是如此;除此之外,比起前兩種分類算法,隨機森林(RF)分類法分類性能評價指標值都較高,分類效果最好。最終實驗發(fā)現(xiàn),使用強大的機器學習方法和適當?shù)奶卣魈崛‰A段,可以取得一些很好的結(jié)果。