Author: vincentlaucy
Date: 26 April 2014

關心時事的朋友可能有留意《立法會重要表決紀錄》網站 (www.legcovotes.net)的設立,議員政黨取態一目了然。

可是類似的網站數據需要人手輸入,費時失事。上年年底立法會正式發佈投票結果的開放數據,其XML格式較其他資料如會議紀綠的PDF較適合電腦處理(Machine-readable),令市民及新聞工作者更容易分析、了解及監察議會。

熱心參與Code for Hong Kong的中大信息工程系導師Pili Hu,便於課堂帶領學生運用立法會投票結果作數據分析實習。課程教授不同的資料探勘(Data mining)技巧、利用Python程式語言及Pandas等程式庫,以數據繪製圖像及找出有意義的資訊。

其中一種應用了的技巧,為主成分分析 (Principal Component Analysis),可以找出投票傾向相近的議員。

投票結果數據相對簡單,每名議員為出席並投票、缺席投票或缺席,出席議員投票分贊成、否決或棄權。首先簡化數據,電腦化表示贊成為1,反對為-1,其餘為0。而紀錄包含不同議員一年半愈1000次的投票結果,難以直接分析;PCA能在統計學上將每人的投票傾向統整為一個數字。圖象化如下便會得出一個較易理解的「政治光譜」,每點代表議員,點越接近便代表投票傾向越接近。(*註)

課程中以PCA得出的投票傾向光譜,另一嘗試是生成3D圖象,詳細分析見http://bit.ly/1riabfV

眾所周知,香港大部分議案都為泛民和建制派的對立。光譜中粗略可見不論民主黨或建制派以黨派整體來說投票都相當一致(圖中數字接近的直線),而若計算人民力量、社民連或自由黨在內,投票傾向就較建制派分散得多。這圖有助看中哪些議員較「獨立」,投票傾向和兩派都不相近。同樣的方法,也可以用予分析那些議案議員整體投票傾向會較相近。

課程中其他技巧包括推薦系統(Recommender System),以往日投票紀錄可以準確預計議員投票的取向;甚至用中央性(Centrality Analysis)、HITS等算法嘗試發掘出議員及議案的關係。

上述分析原為教學用途,要歸納出準確結論需要更細緻的數據處理及立法會專家研究。

而開放數據優點在於每人都可以參與分析,基於數據理性討論、互相進步。立法會今次公開投票結果是一好開始,僅促請政府今後開放更多適合電腦處理的數據。有興趣可到課程網站了解更多及嘗試參考例子分析;這次分析亦為開源項目設於Github。另外Code for Hong KongOpen Data Hong Kong均會舉辦駭客松(Hackathon)等相關活動,使大家能實際應用立法會及其他開放數據,可密切留意!

*註:曾鈺成為立法會主席,只出席而不會投票所以所有投票結果均為0。 數據處理並沒有作篩選,即使缺席/棄權/缺席投票亦會計算為一種「傾向」

*註二:立法會原數據(raw data) 中郭偉「強」和郭偉「强」重覆出現兩次,現已更新圖片

*主成分分析,見維基百料

立法會xml 投票紀綠

*課程分析結果詳請,以Creative Commons 4.0 發佈

*Cyrus Wong 先生早前亦發表了相關研究,見http://data.jmsc.hku.hk/hongkong/legco/data-hk/

**鳴謝Pili Hu 提供資料



blog comments powered by Disqus