作者:NGA-平A攻速流關羽
很多同學在516抱怨過ELO,聲稱如果沒ELO他們的遊戲體驗會更好。這是一個很大的誤解。因為他們根本不知道所謂的ELO到底是啥。
那麼,作為一個985的工科學子,雖然沒清北科學家厲害,但是我還是想和大家解釋下什麼是ELO,以及為什麼你們是錯的。
這是電影《社交網絡》的截圖,窗戶上寫着的就是Facebook最早的ELO算法公式。
是的,你沒看錯,ELO并不是清北科學家搞出來的讓我們難過的東西,而是一個在體育比賽,遊戲,社交網站中廣泛适用的預期和評級系統。
其發明者美國物理學教授Arpad Elo真的要比真武大弟子們厲害多了...
為了讓我的解釋通俗易懂,我們先把王者榮耀所有的對戰模式删除,僅留下1V1
現在,有四個玩家:
愛鹿,筆神,多尼,老亞瑟
最後的結果是 愛鹿和老亞瑟連勝,分數漲到1238和1237,多尼連跪到1145,筆神輸了一場憤怒地關掉了遊戲,分數1180.
反饋到星星上,愛鹿和老亞瑟各打了兩盤,上了兩顆星。多尼掉了三顆,筆神掉了一顆。
你可以看到,經過兩場随機匹配後,多尼成為受害者,每一盤他的對手和他都有巨大的差距,盡管星星差不多,但是這對他是不公平的比賽。
ELO機制,最重要的一個概念就是“從你身上拿走ELO分”
1.每個參與者都有一個ELO評分,這是一個代表他們相對于其他參與者的技術水平的總分。
2.新玩家自動獲得初始評級1200分。
3.當兩名參與者之間完成比賽時,比較他們的ELO分數。 比賽的勝者将從輸家那裡“獲取”一定數量的ELO積分。
4.擁有較高ELO的玩家傾向于獲勝,因此獲勝将為他們赢得幾分。 相反,當分數更低的玩家獲勝時,他們會從獲勝者那裡獲得很多積分。
實際的ELO算法由5部分組成:
Rn - 玩家的新評級(比賽結束後)
Ro - 玩家的舊評級(比賽前)
S - 比賽的實際得分/結果
E - 比賽的預期得分/結果
K - K因子
Rn = Ro K * (S - E)
Rn和Ro不用我解釋吧,關鍵就在于S,E和K.
S(實際分數)
這是比賽的實際得分。 它始終為0 <= x <= 1。
勝利計為1,
輸了計為0。(先做簡單化考慮)
在我們上面的例子中,愛鹿擊敗筆神,愛鹿在此計算中得分為1,而筆神則得分為0。
E(預期成果)
這是算法的核心。 它需要兩個因數:Ra和Rb(玩家A和玩家B的舊評級),然後返回玩家A的預期勝率。它使用累積分布函數(CDF)進行分數估計。
CDF中如果能假設更多可能的擾亂,就有助于解決玩家能力的不一緻性。這也就是傳說中的Logistic CDF implementation。
這裡有幾個部分:
Ra - 玩家A的舊elo
Rb - 玩家B的舊elo
x - Ra和Rb的差異
e - 歐拉數(一個數學常數)
scale - 評分系統的預選标準差
scale影響分布的“寬度”。 較大的比例将拉伸分布,增加最佳玩家的ELO,同時減少最差玩家的ELO。相反,較小的比例将壓縮分布。
但是,比例參數本身很難推理。 如果對比例參數進行一些替換,以便系統更好地推斷其與玩家水準的關系。
一般來說,scale值是400,歐拉數為10. 即s --> n/ln(10)
這意味着,如果玩家A的ELO分比玩家B多n分,A就比B厲害10倍!這意味着,ELO為1400的玩家比1000 ELO玩家好10倍。
當A匹配到B的時候,A有90.1%的概率會赢!
那麼,如果要預測匹配結果,我們隻需要計算出計算匹配後ELO所需的K系數。
K因子
有效的K因子是任何ELO中極其重要的一部分。
K因子決定了勝利和失敗對ELO影響的敏感性。
假設我們使用以下模型:
--每個人都以1200的ELO開頭
--我們使用分數估計函數,其中n = 400。
如果K很大(例如70),那麼意外的勝利(或失敗)會對玩家的ELO産生巨大影響,并導緻排名波動。
現有玩家A的ELO分是1000,玩家B的ELO分是1300
預計A對陣B的勝率是:1/(1 10^-(-300/400)) = 0.150979557
A拿出後裔神奇地蒸發了六神B,1000 70 * (1 - 0.150979557)
賽後他們的ELO分數變為:A = 1059.43143 B = 1240.56857
這是ELO值的巨大變化 - 盡管玩家B的預期比玩家A高出5.6(0.849 / 0.151)倍,玩家A神勇發揮掏出後裔或者B心不在焉拿出花木蘭就可以輕松縮小他們的ELO之間的差距排名。哈哈,開個玩笑。
實際的排位中,玩家A可能需要數百場遊戲來趕上玩家B的ELO值,即使CH在某個平行宇宙裡再加強十倍後裔的輸出。
你們最關心和诟病的來了
坑隊友和反複摩擦的原理,以及為什麼有的人好上分。
K因子應該适合n的當前值以用于評分。K因子基本上代表玩家在比賽中可以獲得的“最大”點數,如果玩家具有相同的技能等級,他們将獲得k / 2個ELO點。
如果玩家總是與ELO一樣的玩家對戰,他們必須赢得n /(k / 2)場遊戲,才能上到1400分的真實段位。
這通常是400 /(15/2)= 53.33盤遊戲,或K = 800 / 53.33。
包括象棋和大部分的MOBA遊戲都是采用分層K因子系統,這意味着玩家必然有不同的K因子(n=400):
對于新玩家來說,K = 40,直到他們玩30場比賽
對于遊戲> 30場且從未有過ELO> 1200的玩家,K = 20
對于遊戲> 30場并且ELO> 1200的玩家,K = 10
(假設非真實)
如果我們假設新玩家的評級存在一定程度的不确定性,依據以上算法,他們反而更容易快速達到更好的成績。 它也使得非常肝/熟練的玩家更難以上分/掉分(例如,由于拿出了花木蘭)。
請注意,當玩家有不同的ELO時:
玩家A獲得/失去Rn = Ro K_a *(S-E)
玩家B獲得/失去Rn = Ro K_b *(S-E)
你可以看到,這與我開頭所說的從其他玩家“獲取”分數的實際是不同的,因為每個玩家将獲得/失去不同的數量。
這是對大部分玩家都友好并且是故意的。
同理,在小晉級賽和大晉級賽的時候,也可以通過控制K值來決定比賽質量,因為不同的比賽玩家心态是不同的!
K=60 上王者
K=40 上星耀
K=30 小段位
K=20 出現連勝連跪
(假設非真實)
如果玩家玩的少,那麼排名應該更加不穩定。 較高的K因子[相對于n]會更好,因此從K =(2 * n)/ 20到K =(2 * n)/ 25的K因子更合适。
如果玩家很肝,那麼排名應該不那麼不穩定。 較低的K因子[相對于n]會更好,因此從K =(2 * n)/ 30到K =(2 * n)/ 45的K因子更合适。
所以,你打得越多,越會影響你對局的質量!
那麼,你可以清晰地看到,盡管系統是能通過很多種手段來控制你對局的質量的。
但是最終決定你分數和段位的是你的實際水平,你在上十局和長期的表現才是核心因素
ELO算法對大多數玩家來說都是友好的,随機匹配并不會讓你變得舒服。
真的不要抱怨了,NGA需要幹貨
歡迎大家指正!抱怨回複/歪樓舉報!
*部分數據/公式參考自Scott Mackie的文獻
*整體思路來自Fandom
,
更多精彩资讯请关注tft每日頭條,我们将持续为您更新最新资讯!