誰在橢圓形辦公室發(fā)推:機器學(xué)習(xí)揭露川普推文的真實作者
我采取了這一領(lǐng)域的標(biāo)準(zhǔn)做法,將數(shù)據(jù)分成兩部分:80%訓(xùn)練集和20%測試集。
特征重要程度
我進(jìn)行的最重要的任務(wù)之一是根據(jù)對模型輸出的影響的數(shù)量級排序特征。為了排序,我使用了scikit learn的Ridge分類器。Ridge回歸是一種包含正則化因子(alpha)的邏輯回歸形式。alpha為零時,ridge回歸和普通的邏輯回歸一樣;alpha值較低時,ridge回歸迫使影響力最低的那些特征的系數(shù)為零,實際上將這些特征從模型中移除了;alpha值較高時,更多特征被移除了。我遞歸地迭代每個alpha級別,逐一移除特征,直到所有特征都被移除了。
如圖所示,在alpha級別剛超過1022時,第一個(影響力最低)的特征被移除了。超過1025之后,特征移除的速度迅速增加了,在1026之上,只有最具影響力的特征保留下來。
單個模型
我總共創(chuàng)建了9個模型:高斯樸素貝葉斯、多項樸素貝葉斯、K近鄰、邏輯回歸、支持向量分類器、支持向量機,以及集成方法AdaBoost、梯度提升、隨機森林。每個模型在訓(xùn)練數(shù)據(jù)上使用10折交叉驗證精心調(diào)優(yōu),并在測試數(shù)據(jù)上進(jìn)行了評估。
交叉驗證是訓(xùn)練這些模型同時避免它們過于偏向特定的訓(xùn)練數(shù)據(jù)的有效方法;換句話說,讓它們在未知數(shù)據(jù)上更具概括性。在10折交叉驗證中,數(shù)據(jù)被平均分為10組,組1-10. 在第一次訓(xùn)練的迭代中,模型在組1-9上訓(xùn)練,在組10上測試。然后重復(fù)這一過程,只不過這次在組1-8、10上訓(xùn)練,在組9上測試。整個訓(xùn)練步驟共重復(fù)10次,因此訓(xùn)練集中的每個組都有一次被保留,作為未知測試集使用。最后,在10折中具有最佳平均表現(xiàn)的模型參數(shù)組合成為最終模型使用的組合。
這些模型背后的算法都很迷人;它們各有自己的優(yōu)勢和弱點,在偏置-方差的折衷上各有不同的取舍,有時處理時間大不相同(例如,訓(xùn)練樸素貝葉斯,只需幾分之一秒,而支持向量分類和梯度提升方法各自需要一整個周末進(jìn)行網(wǎng)格搜索)。如果你對此感興趣,想要學(xué)習(xí)更多內(nèi)容,我推薦從閱讀這些模型的維基百科條目開始:
樸素貝葉斯分類器
K近鄰算法
邏輯回歸
支持向量機
AdaBoost
梯度提升
隨機森林
利用前面提到的生成的特征重要程度,我在每個模型上訓(xùn)練了將近900個特征的子集。例如,樸素貝葉斯,在只有5個最重要特征的情形下表現(xiàn)最優(yōu),而兩個提升模型在300個最重要特征上表現(xiàn)出色。這部分源于維度詛咒;在高維空間中,看上去彼此相近的兩個點(在我們3維生物的腦海中想象的),可能事實上相距非常、非常遠(yuǎn)。特別是K近鄰模型(knn),對過多維度高度敏感,因此我對傳入這一模型的數(shù)據(jù)應(yīng)用了主成分分析(PCA)方法。
主成分分析技術(shù)可以在降維的同時消除特征間的共線性。想象一組高維空間中的向量,PCA扭曲、揉搓這些向量,使得所有向量彼此垂直。如果這些向量表示特征,那么通過迫使所有向量正交,我們確保了它們之間不存在任何共線性。這將大大提升knn這樣的模型的預(yù)測能力,也讓我們可以在不減少信息的前提下,減少傳給模型的特征數(shù)目。簡而言之,這讓我的knn模型表現(xiàn)更好。
集成
最后,我創(chuàng)建了兩個不同的集合。第一個是簡單多數(shù)投票:奇數(shù)個模型和二元輸出意味著不會有平局,所以我可以簡單地將結(jié)果為川普的預(yù)測和結(jié)果為助手的預(yù)測分別相加,其中值較大的那個將是我的最終預(yù)測。我的第二個集成有一點復(fù)雜:我將9個模型的結(jié)果傳入一顆新的決策樹。這一最終模型在我的測試集上達(dá)到了完美的精確度。
好了,終于到結(jié)果部分了……
結(jié)果
如你所見,梯度提升和隨機森林的表現(xiàn)最優(yōu),錯誤率大約只有1/20.
模型 | 精確度(Accuracy) | 準(zhǔn)確率(Precision) | 召回(Recall) | F1分值 |
---|---|---|---|---|
梯度提升 | 95% | 95% | 95% | 95% |
隨機森林 | 94% | 94% | 95% | 94% |
AdaBoost | 92% | 92% | 90% | 91% |
邏輯回歸 | 90% | 90% | 88% | 89% |
KNN | 90% | 91% | 89% | 90% |
SVM | 90% | 90% | 90% | 90% |
SVC | 92% | 92% | 92% | 92% |
多項樸素貝葉斯 | 84% | 83% | 82% | 82% |
高斯樸素貝葉斯 | 92% | 90% | 90% | 89% |
其他模型單獨使用時表現(xiàn)不那么好,不過在最終的集成中貢獻(xiàn)不少。我基于這9個模型的結(jié)果創(chuàng)建的決策樹最終達(dá)到了99%的精確度!
如果你不清楚上面的這些指標(biāo)意味著什么,我這里簡單介紹一下。精確度是這些指標(biāo)之中最為直觀的,它是正確猜測數(shù)除以總猜測數(shù),即,我的所有猜測對了多少?準(zhǔn)確率則回答這樣一個問題,在我所有猜測是川普所發(fā)的推文中,有多少確實是川普所發(fā)的?召回幾乎是準(zhǔn)確率的反義詞(不過事實上并不是);它回答的問題是,在所有事實上由川普所寫的推文中,有多少被我預(yù)測到了?F1是準(zhǔn)確率和召回兩者的調(diào)和,技術(shù)上而言是兩者的調(diào)和平均數(shù)(一種平均數(shù))。它理解起來不像精確度那樣直觀,但當(dāng)類別失衡程度較高時,f1分值是比精確度好很多的指標(biāo)。在這一推文數(shù)據(jù)的情形中,類別很均衡,因此上表中的指標(biāo)都差不多。如果你仍對這些概念感到困惑,或者你想了解更多內(nèi)容,可以參考這篇討論這些指標(biāo)的文章。
因此,川普的推文的特征是什么呢?
引用轉(zhuǎn)推
@提及
在10pm和10am間發(fā)布
驚訝、憤怒、消極性、厭惡、快樂、悲傷、恐懼
感嘆號
全大寫單詞
@realDonaldTrump
正如我所預(yù)料的,我在特征選取一節(jié)中描述的引用轉(zhuǎn)推很能預(yù)測推文是否是川普所發(fā)。@提及其他用戶同樣如此。川普經(jīng)常在晚上、大清早還有周末發(fā)推。他傳達(dá)了驚訝、憤怒、消極性、厭惡……事實上包括了所有的情緒,而不僅僅是媒體如此強調(diào)的負(fù)面情緒。相比語法上的需要,他確實更多地使用感嘆號和全大寫的單詞。最后,他太多地提及了自己。
另一方面,他的助手發(fā)的推文的特征是:
真正的轉(zhuǎn)推
使用單詞“via”
在10am和4pm間發(fā)布
分號
句號
URL
@BarackObama
如果一則推文是方法正確的轉(zhuǎn)推,你可以很自信地打賭它是由助手發(fā)布的。有趣的是,助手的推文經(jīng)常使用“via”——他們經(jīng)常引用一篇文章或者一張圖片,然后使用“via”指明作者。意料之中,他們經(jīng)常在工作日發(fā)推,工作日以外不常發(fā)推。他們的語法更復(fù)雜,句子結(jié)構(gòu)和標(biāo)點的使用更妥當(dāng),同時他們頻繁地粘貼指向其他資源的URL。有趣的是,如果一則推文@了Barack Obama(奧巴馬)的推特用戶名,那么通常這條推文是助手發(fā)布的。川普會提到奧巴馬的名字,但不會@奧巴馬。
詞類標(biāo)記上,川普最常使用的組合是NN PRP VBP,或者,名詞、人稱代詞、動詞。這些推文經(jīng)常采用@某人后接“I thank…”或“I have…”的形式。助手常常寫的是NNP NNP NNP,連用三個專有名詞,經(jīng)常是某個組織的名字。同時,助手傾向于在文字之后使用#,而Trump習(xí)慣在@某人后使用#。
我有點失望,因為詞類標(biāo)記對模型的作用不是那么顯著。我知道推文使用的具體詞匯表會隨時間而改變,因此我希望更多地刻畫語法結(jié)構(gòu),據(jù)我推斷,這些語法結(jié)構(gòu)更加穩(wěn)定。然而,這一項目面對的主要挑戰(zhàn)是推文本質(zhì)上的簡短,這大大減少了我的模型可以獲取的語法信號。對我的模型而言,盡管它在歷史推文上具有幾乎完美的精確度,在當(dāng)下的推文上的精確度下降了。
此外,有三個在歷史推文上表現(xiàn)出高度預(yù)測能力的特征:推文長度、收藏數(shù)量、轉(zhuǎn)推數(shù)量。然而,我在部署模型進(jìn)行實時預(yù)測時,移除了這三個特征。移除后兩個特征的原因很明顯:我嘗試在推文發(fā)布后立刻進(jìn)行預(yù)測,因此它還沒來得及被收藏或被轉(zhuǎn)推。移除推文長度是基于另一個原因。訓(xùn)練數(shù)據(jù)中的33000條推文,是在推特限制字符數(shù)140的前提下發(fā)布的。但最近推特將限制提高到了280。所以我需要丟棄基于這一特征進(jìn)行的訓(xùn)練。

請輸入評論內(nèi)容...
請輸入評論/評論長度6~500個字
最新活動更多
推薦專題
- 1 UALink規(guī)范發(fā)布:挑戰(zhàn)英偉達(dá)AI統(tǒng)治的開始
- 2 北電數(shù)智主辦酒仙橋論壇,探索AI產(chǎn)業(yè)發(fā)展新路徑
- 3 “AI寒武紀(jì)”爆發(fā)至今,五類新物種登上歷史舞臺
- 4 降薪、加班、裁員三重暴擊,“AI四小龍”已折戟兩家
- 5 國產(chǎn)智駕迎戰(zhàn)特斯拉FSD,AI含量差幾何?
- 6 光計算迎來商業(yè)化突破,但落地仍需時間
- 7 東陽光:2024年扭虧、一季度凈利大增,液冷疊加具身智能打開成長空間
- 8 地平線自動駕駛方案解讀
- 9 封殺AI“照騙”,“淘寶們”終于不忍了?
- 10 優(yōu)必選:營收大增主靠小件,虧損繼續(xù)又逢關(guān)稅,能否乘機器人東風(fēng)翻身?