2012年9月17日星期一

Fate/Legco: 機器學習與選舉工程

有兩夫婦與一位鄰居遇到海難,三人各乘一艘只可載一人的充氣快艇逃生。大海茫茫,暴風雨迫近。他們估計所餘燃料只夠二人逃走,究竟誰要犧牲?最後三人相持不下,全數沒頂,這是誰的責任?
前言
剛過去的立法會選舉,民主黨於新界西全軍覆沒。另一邊廂,公民黨的兩人競選名單成為新界西票王,獲 72185 票之多,扣除首席所需的基本票額之後,餘額卻不夠令名單中排次位的余若薇連任。有人指摘公民黨策略錯誤,既分薄了民主黨票源,又平白浪費選票。

本文將運用機器學習 (machine learning) 技巧,說明根據過往經驗,今屆各次滾動民意調查當中,即使民主黨的支持度處於最高峯 (14%) 的時候,其形勢也有很大隱憂。多數時候,民調結果更顯示民主黨有全滅危險。民主黨要保住一席的話,只要棄車保帥就可以,因此它遭全滅,完全是它自身策略錯誤所至。

過往最常見的選舉分析方法,是從滾動調查所得的政黨支持度,按多項式分佈的常態逼近 (normal approximation to multinomial distribution) 來計算勝機。一般期刊文章,若要以票站調查結果來模擬比例代表制之下的選舉結果,就是用多項式分佈。這樣做的最大好處,在於可以隨時更新評估結果。原則上,此方法更可以納入整體形勢,而不是對每張名單都只按它自己的支持度來計算勝機。然而,遠在選舉提名期尚未結束,政黨連有甚麼對手都未清楚之時,這個方法就不適用。

本文將提出一種靜態的研究方法,它只依賴過往的選舉結果,並不需要(但也可以用)最新的民意調查結果。它無法動態地考慮通盤選舉形勢,但它可以於選舉提名期間,就用來評估分拆或分併競選名單的風險。作者將估計勝算的問題聯繫到數據科學中的「分類問題」(classification problem)。解決問題的方法稱為 logistic regression,以今日的標準來看,只是統計學與數據科學 (data science) 的初等技巧,但足以應付眼前的新界西個案。

基本須知
本文假設讀者知道何謂比例代表制,亦明白本地立法會選舉比例代表制所用的最大餘額法當中,黑爾數額 (Hare quota) 的意思。從某個角度而言,黑爾數額是一張擁有多名候選人的競選名單當中,每名候選人所能消耗的票數上限。與此相關的是特羅普數額 (Droop quota),它是保證一名候選人當選所需的票數下限。近年網上多了談及 Droop quota 的文章(例一例二),可是為求完整,以下亦會稍作說明。

以今年新界西選區為例,各黨派一起競爭 9 個議席。問題:無論其他名單得票若干,民主黨的李永達名單,至少要有幾多得票率,方可保證任何情況下當選?

答案是 $\frac1{10}$。理由:設 9 位當選者的得票率為 $p_1, p_2, ..., p_9$。若李永達取得 $\frac1{10}$ 的票仍不夠當選,那即是說每名當選者的得票率 $p_i$,必然較 $\frac1{10}$ 為高,故此

$$
\begin{align*}
&\phantom{=}李永達與\ 9\ 位當選者的總得票率\\
&= \frac1{10} + p_1 + \ldots + p_9\\
&> \frac1{10} + \underbrace{\frac1{10} + \ldots + \frac1{10}}_{9 個}
\quad(因為每個\ p_i\ 都大過 \frac1{10})\\
&= 1.
\end{align*}
$$
亦即是說,李永達與 9 位當選者的得票率總和,竟然大於 1,這顯然是不可能的。同一道理,若選區有 n 個議席,只要排於名單首位的某君取得
$$d_1(n)=\frac1{n+1}$$ 的票,不管其他對手取得幾多票,此君亦鐵定當選,否則就會出現「部份候選人的得票率總和竟然大於 1」這件邏輯上不可能發生的事。上面這個 $d_1$,就是一般文章所講的 Droop quota,也就是保證排於名單首位的候選人取得一席所需的安全線

機器學習:得票率與選舉結果的關係
Droop quota 只是一條安全線,它是當選的充份條件 (sufficient condition) 而非必要條件 (necessary condition)。候選人越過它,則鐵定當選,但不越過也有可能當選。以今屆立法會選舉新界西的結果為例(下表,綠色當選,紅色落選),十六張名單爭奪 n=9 個議席,安全線為 $d_1(9) =  \frac1{9+1} = 0.1$。從表中可見,九名當選者之中,只有郭家麒一人越過安全線(即是得票率 $\ge 0.1$)。



現實中,經常有候選人未達安全線但仍當選。當然,得票率愈接近安全線,候選人就愈篤定,反之風險愈高,如何量度這個風險?

我們可以憑歷屆選舉結果,評估得票率與當選機會之間的關係,但首先要就選區議席數目調整得票率。舉例說,對一個有 9 個議席的選區(安全線 $d_1(9)=0.1$),若一張名單的得票率為 v = 0.08,應該有不錯的勝算。然而,換了是一個只得 4 個議席的選區(安全線 $d_1(4) = 0.2$),0.08 的得票率就未免離安全線太遠。因此,若一張名單的得票率為 v 而選區議席數目為 n,我們會考慮以下這個「規範得票率」:

$$
\textrm{normalized proportion of votes}\ v' = \frac{v}{d_1(n)} =(n+1)v.
$$v' 愈接近 1,即代表該選舉名單愈接近安全線。搜集從 1998 年起四屆立法會的選舉數據,可將歷屆各參選名單的規範得票率與選舉結果圖列如下。(由於 $v'\ge1$ 就必然當選,故下圖並不包括 $v'\ge 1$ 的例子。)
圖一:1998-2008 年立法會選舉各候選名單的規範得票率
從圖中可見,過往當 v' 介乎 0.5 至 0.8 的時候,當選與落選的例子混雜。這引出以下問題:若某候選名單估計會有某規範得票率 v'(譬如 v'=0.75),那麼,根據過去經驗,我們認為該名單的首席候選人會否當選?

這就是機器學習理論所謂的「分類問題」。換句話來說,我們希望憑規範得票率 v' 的數值,就可以將候選名單歸入「當選」或「落選」其中一類。當然,從上圖可知,當選與落選名單的規範得票率之間,並無一條清晰界線。因此,機器學習理論的做法,是將過往的選舉結果稱合 (fit) 到一條概率曲線之上,如下圖。譬如圖中顯示,若某名單的 v'=0.75,我們即相信該名單有 0.83 的機會當選。顧名思義,一般分類問題的目的,是為了替目標對像分類,不過我們這裏的着眼點,是評估一張競選名單的當選機會,而不是賭它會不會當選,因此我們不會說「v'=0.75 時,我們相信該名單會當選」,而只會說它有 0.83 的勝算
圖二:用概率曲線稱合 1998-2008 年的規範得票率
如何稱合概率曲線?答案是用 logistic regression。Logistic regression 是統計學與機器學習理論之中的初等方法。詳情相信大部份讀者沒有興趣知道,故此處不贅。上圖是作者利用歷屆立法會選舉結果,從統計軟件 R 計算所得,稱合的勝算曲線為:
$$f(v') = \frac{1}{1+\exp(7.899974-12.664143v')}. $$
方法利弊
從規範得票率的歷史數據來學習當選機會,有利有弊。如文首所說,它最大的好處,是只依靠歷史數據,完全不需理會現狀,甚至遠在上屆選舉剛剛結束,今屆選舉提名期尚未開始之時,即可找出稱合的勝算曲線。

然而這也是它最大的毛病。我們固然可以於民意調查開始之後,將政黨的最新支持度當成得票率,再從勝算曲線讀出當選機會,這樣做卻忽略了對手的選情。這好比打麻雀只盯着自己摸回來的牌,而不顧其他三家一樣,並非善用情報的方法。

此外,由於這個方法只依賴歷史數據,但各政黨的排陣、支持度與選區議席數目皆因時而異,故此歷史經驗未必適用。事實上,今屆有選區(新界西與新界東)議席增加為九個,就前所未見,不過以前已經試過一區有八個議席,所以這還不算是大問題。最嚴重的,是現況完全超出過去經驗的時候,稱合所得的曲線就會變成廢物。例如根據 1998-2008 年的數據,若我們想稱合一張名單會取得第二席的勝算曲線,就會遇着這樣的情況,不過本文重點是取得第一席的概率,故詳情此處不贅。

換句話說,儘管 logistic regression 背後有堅實的統計學基礎,但歷屆選舉並非處於同樣條件的統計事件,因此我們實際上並非用 logistic regression 來解決一個統計問題,而僅僅是把它當成一種插值法,用來將曲線稱合到數據當中。這也算是沒辦法之中的辦法,卻也是讀者必須留意的一點。

圖表詮釋
今屆民主黨於新界西用李永達、陳樹英兩張名單參選。去屆該黨於新界西取得 23.25% 的選票。今屆安全線為 $d_1(9)=0.1$,若該黨得票率與上屆相若,則已超過兩張名單越過安全線所需,所以,毋須任何麻煩的分析,只要民主黨能夠令支持者比較平均地投票給兩張名單,就幾乎可以保證全取兩席。

只不過,「得票率與上屆相若」 這個假設,於民意調查甫一開始時,就已經站不住腳。



以上七次滾動調查結果,以最尾一次最利民主黨。暫且假設這個結果可信。根據此結果,民主黨的支持度有 14%。原則上同黨各名單的支持度是不可相加的,原因是選民可能「投人」而不是「投黨」,不投李永達,也未必會改投陳樹英,更何況有些人本來投的就是遊離票。只不過以舊鑑新總要有個標準,因此本文仍假設選民乃按黨派投票,而同一黨的支持票是可以於各名單之間轉移。這樣,我們應如何看待民主黨這 14% 的支持度?

記民主黨的得票率為 $v_\max$,並設李永達名單的得票率為 v,因此它的規範得票率為 $\frac{v}{d_1(9)} = 10v$,而陳樹英名單的規範得票率為 $10(v_\max-v)$。故此,根據歷屆數據,李、陳兩張名單的勝算分別為 $f(10v)$ 與 $f\left(10(v_\max-v)\right)$。若民主黨新界西的總得票率真的如調查所得,即 $v_\max=0.14$,那麼李、陳兩者的勝算曲線有如下圖,其中藍線代表李永達,黑色虛曲線代表陳樹英,橫軸為李永達的得票率(不論是李永達的曲線還是陳樹英的曲線)。例如九月七日的民調顯示李永達的支持度為 0.08,圖中顯示了這個情況之下,陳樹英的勝算為黑色曲虛線的高度,亦即 0.43,而李永達的勝算為藍色曲線的高度,即 0.9。

從這幅圖也可推出兩人皆勝或兩人皆輸的機會率。當李永達的支持度為 0.08,陳樹英的支持度就是 0.14 - 0.08 = 0.06,比李永達低。若陳樹英當選,由於李永達得票比她多,因此亦必然當選。換句話說,當陳樹英的得票比李永達低的時候,她的勝算實際上就是兩者皆勝的機會率,而李永達的落選機會率就是兩人皆輸的機會率。同一道理,可知圖中紅色部份的高度,代表兩人全滅的機會率,綠區高度代表兩人全勝的機會率,而黃區高度代表兩人中只得一人當選的機會率。以李永達的得票率為 0.08 為例,兩人全勝的機會率為 0.43(圖中深綠色直線長度),兩人全滅的風險為 0.1(赤色直線長度),而李勝陳敗的機會率為 0.47(暗黃直線長度)。
圖三:從九月七日民調所得的民主黨勝算曲線
分析
政黨派兩張(實際上等於一人的)名單參選,目標不外以下兩者:
  1. (全攻型)務求全取兩席。
  2. (防守型)確保一席,並伺機提高另一張名單的勝算,情況轉壞則棄車保帥。
九月七日的民調指民主黨所享的支持度為 14%。若此支持度不變,而民主黨務求兩張名單皆勝,就要靠配票來提高全勝的機會率。下圖顯示,若要將全勝的機會保持於五成以上,李永達的得票率就必須維持於 (0.062, 0.078) 這個範圍之內,得票率的誤差不能大於 0.016(圖中綠色橫線長度),亦即所有支持票的 (0.016/0.14) × 100% = 11.4%;以去屆該區的總投票人數 398292 人來估計,即誤差不能大於 6373 票。靠配票令兩張名單得票相差不多於六千幾票,換了是民建聯應該能輕易辦到。民主黨的支持者並非鐵票部隊,但是上述這個準確度照計尚算寬鬆。

吊詭的是,要提高全勝機會,亦自然會提高全滅的風險,原因是綠區的頂峯即是紅區的尖端。最有全勝把握的時候,也是全滅風險最大之時。圖四之中,若民主黨要將全勝機會保持在五成以上,全滅的風險就會介乎 0.12 至 0.27 之間。0.27 的全滅概率,或 1 - 0.27 = 0.73 的全勝機會算不算高,我不知政黨怎麼想,我自己就覺得「唔湯唔水」,有點微妙,不過也不是去到要令人非常警惕的地步。故此,若民主黨要採取全攻型策略而不棄保,也是合理的。

只是,這背後隱藏了一個假設,就是民主黨的支持率真的如民調所說,有 14%。
圖四:總得票率 0.14,全勝機會 0.5 或以上
民意調查當然並非毫無誤差。九月七日的調查,樣本數為 503,而民主黨的支持度為 0.14。若以常用的 95% 信賴區間來計算,民主黨支持度的誤差可達 $1.96\sqrt{\frac{0.14(1-0.14)}{503}} = 0.03$ 之多。換句話說,即使民主黨實際的支持度為 0.14 - 0.03 = 0.11,也不是甚麼奇怪的事。


事實上,前述 NOW 新聞台的多次民意調查,都顯示民主黨的支持度低迷,只得 11% 左右,直到最後兩次民調,才忽然上升至 14%。如此情況下,究竟我們應該相信之前的結果,認為後來兩次有統計誤差,抑或相信民意真的變強,實在見仁見智。然而,問題是,即使民主黨的支持度真的變強了,民調的誤差也沒有 3% 那麼大,我們仍不能排除 14% 這個數字有誤差,而民主黨的真正問題,是即使它的支持度只下降少許,勝算也會大幅改變

前面提過,若李、陳兩張名單的總得票率為 $v_\max$,李永達的得票率為 $v$,則陳樹英的得票為 $v_\max-v$。因此,若李永達的得票率不變,但民主黨的總得票率 $v_\max$ 下降一個單位,陳樹英的勝算曲線就會向左移動一個單位。下圖顯示了民主黨的總得票率為 0.14, 0.13, 0.12 及 0.11 時的情況。圖中可見,若李永達的得票率為 0.08,而民主黨的總得票率由 0.14 跌至 0.13,則全勝機會會由 0.4 以上大降至 0.2 以下;若總得票率降至 0.11,而李永達的得票率並無改變,則民主黨的全勝機會更是近乎零。
圖五:民主黨的全勝機會,對總得票率十分敏感
就算民主黨的真正得票率只下降 0.01,配票也會變得異常困難。見圖六。當 $v_\max = 0.13$,全勝機會最多也不到六成。若要將全勝機會維持於五成或以上,配票的準確度就要在 0.006 之內,或支持票的 (0.006/0.13) × 100% = 4.6%;以去屆投票人數來計算,即是 2400 票左右。換了是民建聯,恐怕也未必做得到。何況選舉當日的票站調查結果以及配票都會有誤差,若對配票準確度的要求太高,配票策略很容易泡湯。困難之餘,全滅的風險亦變得相當大,介乎 0.33 與 0.41 之間。為追求不到六成的全勝機會而冒上超過三分之一的全滅風險,實在不是明智的做法。
圖六:民主黨的勝算曲線 ($v_\max=0.13$)
要減低全滅的風險又如何?見圖七。若要將風險局限於兩成以下,全勝的機會就頂多得 0.34,並不值得期待。

由此可見,即使民主黨的支持度只下跌 0.01,守勢已比攻勢來得現實和明智。
圖七:民主黨的勝算曲線 ($v_\max=0.13$)
若支持度下降到 95% 信賴區間的下限 0.11 的話,情況就更嚴重了。見圖八。兩條曲線圍成一個紅色的死亡大三角,民主黨全勝的機會頂多只有三成,全滅風險卻可以高達七成。若如上例般,想將全滅風險保持於兩成以下,則全勝機會最多只剩 4%。若這樣的情況下仍希冀全勝,簡直異想天開,棄車保帥才是唯一合理策略。
圖八:民主黨的勝算曲線 ($v_\max=0.11$)
討論
以上各種情形顯示,若民主黨的支持度真的達到如選前最後兩次民意調所指的 14%,它不棄車保帥,還算合理。今次選舉,結果民主黨的得票率只有 11.77%。如果我們據此指摘民主黨之前過份樂觀的話,只是事後孔明。然而,按九月七日的民調結果,只要民主黨的總得票率下降 0.01,全攻型策略已經變成不夠現實。鑑於民主黨的全勝機會對總體得票率太過敏感,而民意調查結果及配票也會出現誤差,因此,除非主事人懷着 wishful thinking,或者於九月七日民調結果公布後,認為自己有可靠方法提高總得票率,否則,為免全滅,民主黨當時是應該棄車保帥的。

(至於誰是車,誰是帥,就很難說。我自己就比較希望棄李保陳,但這是另話。)

既然選舉結果已經揭盅,我們難免要事後孔明一番。民主黨於新界西最後得票率為 0.1177,李永達為 0.0658。憑過往經驗,這個情況的勝算有幾高?見下圖。
圖九:事後孔明圖 ($v_\max=0.1177, v=0.0658$)
Fate/Legco
有人指摘余若薇參選分薄了民主黨票源,連累民主黨全滅。余若薇分薄了民主黨票源固然是事實,然而,根據上述分析結果,按當時形勢,民主黨是應該棄車保帥的。它最後得票 11.77%,九月七日的民調結果則為 14%,兩者都夠一張名單越過安全線。要避免全滅,保持原有的一席,技術上十分容易,但它沒有這樣做。因此,今次全滅完全是民主黨自己的責任,與人無尤。

然而,亦有人說,若余若薇不參選(或者不落力競選第二席,而只是保郭家麒當選),則民主黨可全取兩席。故此,就算李永達落選的責任不在余若薇,她仍是連累了陳樹英丟了另一席。

我不能同意這種論調。誠然,若余若薇不參選,就算支持余若薇的票並不完全流向民主黨,添給陳樹英的部份應該也足夠令她當選。事後看來,要將余若薇的票過給李永達與陳樹英,令民主黨取得兩席,亦比將陳樹英的票過給李永達與余若薇,令他們連任容易。然而,說余若薇連累陳樹英,講到這個議席彷彿本來就屬於陳樹英一樣,是十分奇怪的。若問余若薇為何不退選,為何不反過來問,何以陳樹英不退選?候選人參選,是為了提供一個選擇給選民;選民投票,是為了選出能夠代表他們的議員。議席並非議員的私有物,民主派的候選人,對選民來說,更非隨便一個也可以代表他們,個個一樣的替代品。即使議席是議員的私有物,余若薇本來就有一個議席,她有何義務要將議席拱手相讓給本來並無議席的陳樹英?

有兩夫婦與一位鄰居遇到海難,三人各乘一艘只載一人的充氣快艇逃生。大海茫茫,暴風雨迫近。他們估計所餘燃料只夠二人逃走,究竟誰要犧牲?最後三人相持不下,全數沒頂,這是誰的責任?

有人指摘該名鄰居不肯自我犧牲,成全兩夫婦。你話呢?

參考網頁
伸延閱讀

沒有留言: