題:
如何更新Elo評分?
Misha Moroshko
2014-08-13 18:21:41 UTC
view on stackexchange narkive permalink

我正在構建一個具有Elo評分系統的國際象棋應用程序。

根據玩家在遊戲開始時的評分或在遊戲開始時的評分來更新玩家的評分會更合適嗎?例如,玩家A(1600)與玩家B(1700)進行比賽,並且花了一周的時間才能完成遊戲(對應的國際象棋)。在本週內,玩家A贏得了其他一些遊戲,其評分為1650。玩家B失去了一些遊戲,其評分為1680。現在,玩家A和玩家B之間的遊戲結束。

我應該更新評級如下:

  1. 1600對抗1700,或
  2. 1650對抗1680,或者
  3. 其他
  4. ol>

    什麼更合適,為什麼?

五 答案:
David Richerby
2014-08-14 01:50:42 UTC
view on stackexchange narkive permalink

記住什麼是評分:這是對球員相對實力的估計。您在評分計算中包含的信息越多,其準確性就越高,收斂速度就越快。在OTB遊戲結束時,您擁有的唯一新信息就是該遊戲的結果。但是,在通信站點上,您還可以從遊戲進行過程中獲得兩名玩家的成績信息。您為什麼不想使用這些信息?

要根據遊戲開始時的評分更新玩家的評分,就是說您認為他們在遊戲開始時的評分更好在比賽結束時評估他們的相對實力而不是他們的等級。換句話說,就是說您相信評分隨著時間的推移變得越來越準確。如果那是您所相信的,則根本不應該更新它們!

另一方面,在遊戲的關鍵部分之後,玩家有可能顯著提高。如果我的評分為1300,並且在開局非常糟糕的情況下犯了一些小卒,也許8個月後,我的確比我強200點,並且我的評分反映了這一點(由於某些遊戲的求解速度更快)。
@DM並不是“另一方面”,這正是我要表達的觀點。相應地,您應該根據遊戲結束時的玩家評分進行更新。
不,我的意思是,從對手的角度來看,他真正打敗1500贏得了榮譽,而他真正所做的只是利用1300的失誤。為此;任何更正可能只會增加更多錯誤。)
@DM啊,現在我明白了您的意思。有道理。
Cleveland
2014-08-13 20:36:52 UTC
view on stackexchange narkive permalink

出於各種原因,我會使用選項2。也許最重要的一個是濫用選項1的可能性。

在USCF或FIDE系統中,有兩個玩家處於同一級別。他們與一位得分最高的球員進行長時間的比賽。最終,評分會穩定在輸家(開始400)和獲勝者(開始+400)左右。

在選項1下,一個2000名玩家可以對一個評級相似的朋友開始100場比賽,贏得所有人,並突然成為網站上評分最高的人(3000+)。除其他外,這將使您的網站看起來很糟糕。輸了的玩家將跌到1000以下,但這些點很容易獲得,特別是如果他在1200個玩家下進行100場比賽時。

選項2更加穩定。我知道的所有主要通訊站點都使用了它(chess.com,redhotpawn等)。

編輯:更多場景。 1800玩家接受800的挑戰。一個月後,前800在1700並擊敗1800。當1800辭職時,他失去的是最大,而不是對抗對手的真實實力所要失去的。

一名具有2000年實力的玩家通過一些黑魔法獲得了1200分的等級。他們在1400場比賽中開始了一系列比賽,並贏得了所有人的勝利。 1400型將因必須失去這樣的無賴而失去20分以上。

如果在網站上允許這種行為,那將不是真正的國際象棋網站。如果我在自己的網站上看到此行為,則將他與同一玩家玩遊戲的能力限制為2個或更少。那是作弊。不是真正的遊戲。
如果站點足夠大,這種事情將每天開始發生-如果不是更頻繁的話。手動管理不是可行的解決方案。
總限制。我沒有看到一個網站如何允許人們首先向同一玩家玩100場遊戲。
在一個不允許我與朋友進行比賽的網站上,我會很生氣,因為他們選擇了錯誤的評分算法。
我也會對該網站感到惱火,但同時要玩100場比賽?
假設有10場比賽。那是不合理的嗎?如果您在比賽中排名靠前,那足以成為網站上收視率最高的選手。
10個人同一個?我將其限制為網站中的2個,一個為黑色,另一個為白色。
Henry Keiter
2014-08-13 20:50:43 UTC
view on stackexchange narkive permalink

都不是“正確的”。您需要考慮任何策略的影響,並確定適合您的應用的 。就我個人而言,我認為您應該始終計劃讓您的應用程序流行-一旦流行,人們嘗試玩您安裝的任何系統。因此,您需要考慮每種情況下的濫用情況,以及系統如何為新用戶和既定用戶提供服務,並確定係統的哪些因素對您最重要。

當然,在每個系統中,對於實際的實現,您有各種各樣的選擇,它們可以幫助增強或減輕下面列出的因素,但是我將跳過所有這些,因為這不是您所要的。


使用起始評分進行計算

在此系統中,您需要掌握的主要濫用情況看看有人用一個或多個虛擬帳戶同時開始一百場比賽,以贏得所有人並提高他們的評級。這是相當容易檢測到的,並且易於設計(事實上Elo系統已經在這種操作上有一些限制),但是您需要提防它。

該系統的缺點是新玩家一段時間內的評分會非常不穩定,要花一段時間才能達到真實的評分。大多數係統已經通過大幅增加新玩家的 K係數來解決此問題,因此在前20到50場左右的比賽中,他們的評分會迅速變化。

另一方面,假設您有一個評級較高的老玩家(例如1900),而臨時評級較低的新玩家(例如1200)。如果新玩家的真實實力實際上是2000+,則與使用最新分數計算分數相比,已建立的玩家可能損失的積分要多得多(1900與1200)。當然,如果新玩家只與高水平的玩家對戰,那麼無論您使用的是什麼系統,某人都必須負擔費用。

  • 易於發現潛在的濫用行為
  • 評級收斂緩慢

使用當前評級進行計算

在最新評級系統中,主要的濫用案例可能是人們為了讓自己或對手的評分下降或上升而退出遊戲或過早辭職。例如,如果我一直處於輸家狀態,以至於我低於真實的平均評分,那麼該系統實際上會給我獎勵,讓我立即退出其他所有我不喜歡的遊戲 winning ,因為與等到評分恢復之前相比,我現在會因為在評分已經很低的情況下立即全部辭職而損失的積分減少了。或者,如果在比賽進行過程中對手的評分下降,那麼我就有強烈的動力使遊戲盡可能長時間地持續 ,無論我是贏還是輸。這樣,當我的對手的評分恢復時,我會變得更好。這種系統的遊戲很難下定論。

但是,正如其他人指出的那樣,單個結果更準確,因此人們的收視率收斂更快。您還可以減少臨時1200對已建立的1900所玩遊戲的影響,儘管就我個人而言,這並不是什麼大不了的事-以我的經驗,已建立的玩家並不在乎臨時等級像新玩家一樣損失。

  • 難以發現潛在的濫用行為
  • 更快的評級趨同
“例如,當遊戲結束時,請計算新的評分,而不是計算要應用的評分更改”,這聽起來不錯。您打算如何計算新的評分?
-1
這是錯誤的方法。為什麼新用戶*不能*能夠開始大量遊戲?如果有一個合法的新用戶確實開始(例如,同時玩20場遊戲),那麼為什麼在這些遊戲的第20場結束時更改評級是基於他們處於默認級別的虛假假設,而不是基於他們有價值的信息在前19場比賽中贏得X並吸引Y?以這種方式運行評分系統意味著評分會非常緩慢地收斂,因為故意從計算中忽略了信息。
您的優先級沒有意義。您建議使用一種方案,該方案會使新玩家的評分非常不准確(降低數十分或數百分),因為另一種方法是允許已建立的玩家在這里和那裡打幾分。另外,請注意,使用Elo,您不可能通過贏得比賽而失去積分。
-1
@HenryKeiter可以,但是您仍然沒有提到初始評分計算中的潛在誤差很大(對於一個強大而活躍的新手來說,可能會獲得數百分),而老牌玩家最近進行最新評分的可能性很小(可能只有在這里和那裡的幾點。
RingMaster
2014-08-13 20:12:34 UTC
view on stackexchange narkive permalink

如果您是按照USCF系統進行建模的,那麼您會看到場景2。1650對1680進行了比賽。我自己在USCF評分系統中遇到了這種情況,其中我參加了為期10週的聯賽,評分為1953。在第6週前後在我所在的地區玩了一個星期三晚上的比賽,輸掉了比賽,我的評分成為1929。第10週之後,我的USCF評分顯示我從1929 => 1995而不是1953 => x和x => y的增加。

MikhailTal
2014-08-13 18:34:42 UTC
view on stackexchange narkive permalink

最正確的方法是使用起始評級。為什麼?因為那是他們同意開始比賽的等級,並且在評估了風險與回報之後,知道了自己會贏還是輸的決定讓他們決定開始比賽。因此,我認為這兩家公司的起步等級都是最佳解決方案。

OTOH,為了阻止等級評定和鼓勵下棋,可以以相反的方式應用相同的論點。 ;)
等級不是在玩家之間交易的硬幣:它們是在試圖衡量玩家的相對實力。


該問答將自動從英語翻譯而來。原始內容可在stackexchange上找到,我們感謝它分發的cc by-sa 3.0許可。
Loading...