不過手上只有 Twitter 公布的資料,也就是只有單一分類,雖然可能可以找出其中的特徵,但還是覺得有點不踏實。為了讓我的機器學習有其他不同分類的資料,就上了kaggle(機器學習的專門網站)去找了一批 twitter 帳號跟他們的貼文下來用。但從分出出的特徵看來,這份資料也是 kaggle 上某個分類後的結果,對於電腦來說,要完全分辨這兩群似乎不是難事,得到的結果似乎是有
所幸我們團隊同時也在進行這些反送中相關帳號跟其他人的互動關係,我就利用 twitter API 去抓了這些被標注的帳號資料跟他們的貼文,而且這些被網軍標注的帳號中,有絕大多數其實是沒有跟他們互動的,所以某種程度來看,型態接近隨機帳號。我們就用這三百多萬筆資料隨機取出適合的樣本,再把這些資料丟進訓練模型中,發現分類的成功率還是非常高。
這讓我們開始懷疑資料的多樣性。雖然這兩次的樣本讓人感覺有點過度學習(overfitting),但是出來的特徵其實還滿類似的。且理論上,這些使用者已經相當隨機,但從另一個角度來看,會被這些網軍挑上的帳號可能也比較有人氣,而聚集人氣的方式可能也透過某些特定行為達成?但我們還是決定再去收集第三次樣本來進行機器學習的過程,而且既然第二次收集過程中已經把處理Twitter API 的程式寫好了,相對容易得多。
第三次的收集,我們再一次到 kaggle拿了曾經發表過跟奧斯卡金像獎有關 tweets 的使用者,取得他們的 id 之後,再丟去 twitter API 拿到貼文,取回將近七萬筆資料。這些人幾乎沒有什麼固定的交集,唯一的相同點大概就是都發表過對於奧斯卡的想法。最後我們合併了這三次的訓練樣本,希望它們可以有更多樣性,避免特徵太過一致。
最後,我們主要用來作為訓練特徵的項目,除了使用者的個人檔案資料(包含地點、使用語言,註冊時間等等),還將每個使用者所發過的 tweets 做完統計成為新的欄位(例如每個使用者一天 24 小時發文的比例,每個人總共發文量,使用不同語言發文的比例等等),而訓練模型則使用了 DecisionTree,RandomForest 跟 XGBoost 三種模型,並且試了排除一些可能會影響判斷的欄位。其實以結果來看,最終機器學習得到的分類器看來還是滿一致的,而通常都是發文時間佔了最重要的因素,接下來就是這些帳號跟其他人的互動情況。也就是說,這些帳號雖然不是機器人帳號,但是還是會有相當制式的行為模式,他們大多數都只在「需要」工作的時間發文,然後他們的工作也許需要透過具有人氣的人來提升自己的能見度,但是卻並不想要和其他人互動。