Elo 演算法評分系統
開始整理我的專屬 IMDB 排名後,我提到
之後我可以把所有電影的 .js 資料做成一個像殘酷二選一的選擇器,這樣應該就可以幫助我自己「在主觀中最客觀」的打出分數了吧。
現在清單裡已經有 359 部電影了,偶爾會突然想起來還有什麼漏網之魚就會加進來(漫威太多了暫時有點懶得加),加入新的電影後,會先依據我的打分原則評斷,小數點後的數字再大致給定那個級距裡的 1~9 。
-
9 分 -> 神作趕快收藏起來
-
8 分 -> 人生必看的佳作
-
7 分 -> 看完不會失望的好片
-
6 分 -> 中規中矩可以再更好
人類的大腦其實很不擅長給定絕對的數值,但我們非常擅長做「比較」。就算是兩部都很讚的作品:「《刺激1995》跟《阿甘正傳》哪一部比較好看?」1至少能比較快決定出勝負。
於是我決定用一個 「電影二選一評分系統」。只要不斷在兩部電影之間做選擇,系統就會透過數學演算法,在不斷的比較下幫我收斂到最精準的排行。
這套系統就是被廣泛應用在西洋棋與電競遊戲(如《英雄聯盟》積分)中的 Elo 等級分系統(Elo Rating System)。
Elo 演算法
Elo 演算法的精神在於,它不是贏了就固定加幾分、輸了就固定扣幾分,而是會根據雙方的「相對實力」來給予獎懲。
每部電影都會有一個「隱藏 Elo 積分」。當兩部電影被抽中要進行對決(二選一)時,系統會先透過公式計算出它們各自的預期勝率,接著等我做出選擇後,系統會比對「實際結果」與「預期勝率」來重新結算分數:
- 理所當然的勝利(高分贏低分): 神作打敗爛片是應該的,高分電影只會微幅加分,低分電影微幅扣分。
- 爆冷門的逆襲(低分贏高分): 如果我選了一部原本低分的電影贏了高分,系統會認為這部電影被嚴重低估,進而給予大幅度加分,並重扣那部高分電影。
這樣一來,分數的流動就會非常動態且很快的貼近每個作品應有的實力。
這裡補充一個題外話,因為在台灣的西洋棋選手普遍都很少有機會參加國際棋協 FIDE 的比賽,但其實在國內已經訓練到很厲害了,所以有機會到國外比賽時,國際積分就會因為一直低分贏高分而漲的非常快。
動態區間
把積分系統套用到電影評分上,會遇到分數破表的問題,在真實的 Elo 系統中,分數是沒有極限的,例如西洋棋界的第一人 Magnus Carlsen,創下了西洋棋等級分有史以來最高的 2882 分,所以一直贏的電影可能會變成 11.5 分,一直輸的爛片可能會變成 1.5 分(我會先把 Elo 換算成 10 分制,每 200 ELO 為 1 分)。
所以當系統啟動時,我設定先掃描我原本給定的分數清單,我的名單最高分是 9.5 分、最低分是 5.9 分。而當電影的內部 Elo 積分因為連敗而跌破 5.9 分的下限時,系統在畫面上依然會強制顯示 5.9 分。
這其實就是《英雄聯盟》的隱藏積分。電影在後台會沒有下限地被扣掉 Elo 積分(真實實力),但還是顯示是最低的銅牌五,必須要在未來的對決中贏回來、把債還清後,前台顯示的牌位才會再次開始往上爬。這個機制讓電影最差都只會變成不建議觀看的 5.9 分而已。
初始分數定位
傳統的 Elo 系統通常會讓新玩家從固定的底分(例如 1000 分)開始往上爬。但對於電影清單來說,如果要讓一部神作一路虐菜打敗幾十部爛片才爬到 9 分,效率實在太差了。所以當我新增一部主觀認為是 7.5 分的電影時,我就直接讓這部電影帶著 1500 的 Elo 積分空降加入戰局。
它一進場就會直接跟其他差不多 1500 分上下(7.5分左右)的電影進行 PK,藉此快速微調出它最精確的排名,這個可以節省很多點擊二選一的次數。
玩看看
這裡的題庫是電影清單裡所有的電影,僅供好玩,不會影響到頁面裡的分數,也許出現的評分跟你的喜好有很大分岐也說不定 XD
Footnotes
-
第67屆奧斯卡金像獎,《阿甘正傳》打敗《刺激1995》與《黑色追緝令》,得到當年最佳影片。 ↩
發表留言
本篇留言/ 0 則
載入中...