技術觀察二 - Elo rating system

Elo是由Arpad Elo發明的,最早是用來優化國際象棋評估棋力的一種方法。很顯然,象棋比賽以前是個輸贏積分制,贏的比輸的積分拿的多,目前大部分體育賽事,甚至還是如此,比如足球比賽,well,這是另一個有趣的問題,主要原因是因為具備相同競技實力的足球隊數量過少,elo評估演算法在這種情況下和輸贏積分制應該是近似的,而後者顯然算起來更簡單,也更容易投注,這裡就不展開了。

採用輸贏積分制帶來的一個問題是,你無法及時的評估實力相對變化情況,尤其是弱勝強的場景。以國際象棋為例,弱者A戰勝強者B時,很可能A的實力在此刻已經逼近甚至超越B,這時候從棋力來講,應該大幅度提高A的排名,而傳統的輸贏積分制顯然做不到這一點,你從傳統的積分數據榜上無法解讀出A的實力已經逼近B的這個場景的表達,而Elo就可以。

Arpad Elo首先用了正態分布的累積分布函數來評估一個人的勝率(棋力):

我們假設

x=Ra-Rb=D,也即a,b選手的rank分差;位置參數u=0,則上述公式可以簡化為如下:

然而,這個公式用來評估棋手的表現並不準確,經過多次模擬,Elo改成了Logistic distribution,和正態函數很類似,但是峰更陡,尾部更沉。

所以我們就得到了如下2個公式:

A對B的勝率

B對A的勝率

在電影《社交網路》里,Eduardo給Mark Zackburg免費貢獻的公式,其實就是elo。

假如棋手A獲勝了,則他的積分要加多少呢?

Ra = Ra + K(Sa - Ea)

Ra代表新的分值,Ra是原有的分值;

Sa代表一位棋手在圍棋比賽中的真實得分,勝=1分,和=0.5分,負=0分;

K 值代表理論上最多可以獲得的贏分或者失分,國際象棋大師賽中,對於大師選手為16,對於一般選手是32,也是大部分遊戲的取值。通常水平越高的比賽中其K值越小,這樣做是為了避免少數的幾場比賽就能改變高端頂尖玩家的排名。

那麼,勝率評估公式里的400是怎麼來的?可以推算得知,當K值相同的情況下,越高的分母,越低的積分變化。總體來說400是一個較為平衡的值,讓玩家積分保持Logistic distribution,詳細可以閱讀這篇文章:

en.chessbase.com/post/a

One more thing:

這個公式用到遊戲是根據場景優化的,比如在賽季初的天梯,可以加大K值,在高分段的玩家中,可以加大K值,營造競爭激烈的感覺。


推薦閱讀:

瀕危物種為什麼要保護,誰出錢來保護?如何評估保護效果?
以案說法:房屋價值評估報告須及時送達當事人進行確認

TAG:評估 | 遊戲 | 國際象棋 |