訂閱
糾錯
加入自媒體

誰在橢圓形辦公室發(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%
AdaBoost92%92%90%91%
邏輯回歸90%90%88%89%
KNN90%91%89%90%
SVM90%90%90%90%
SVC92%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)練。

<上一頁  1  2  3  4  下一頁>  余下全文
聲明: 本文系OFweek根據(jù)授權(quán)轉(zhuǎn)載自其它媒體或授權(quán)刊載,目的在于信息傳遞,并不代表本站贊同其觀點和對其真實性負(fù)責(zé),如有新聞稿件和圖片作品的內(nèi)容、版權(quán)以及其它問題的,請聯(lián)系我們。

發(fā)表評論

0條評論,0人參與

請輸入評論內(nèi)容...

請輸入評論/評論長度6~500個字

您提交的評論過于頻繁,請輸入驗證碼繼續(xù)

暫無評論

暫無評論

    掃碼關(guān)注公眾號
    OFweek人工智能網(wǎng)
    獲取更多精彩內(nèi)容
    文章糾錯
    x
    *文字標(biāo)題:
    *糾錯內(nèi)容:
    聯(lián)系郵箱:
    *驗 證 碼:

    粵公網(wǎng)安備 44030502002758號