誰が最強のMCなのか。MCバトル好きの間では常に議論になることです。
MCバトルの勝敗は、各MCの実力だけでなく、MCのコンディションやMC同士の相性、バトルの審査方法、会場の空気など様々な要因によって決まります。実力あるMCであっても意外な人物に惨敗したり、成績が振るわない対戦形式があったりして、勝敗の結果からMCの実力を推定するのは案外難しいものです。
勝敗の結果から各プレイヤーの実力を推定する方法として階層ベイズモデリングがあります。例えば将棋の勝敗データに適用したブログ記事→階層ベイズモデルで勝敗データからプロ棋士の強さを推定する - StatModeling Memorandum。今回は、このブログの著者が書いたStan・Rベイズモデリング本(通称アヒル本)を参考にして、階層ベイズモデルを用いてバトルMCの実力を推定してみました。
勝敗データ
ネット上に散らばっている勝敗データをかき集めました。
2000年代のバトル結果はネットであまり集められなかったので、2010年~2017年のデータのみ対象にしました。また、地方で開催されているバトルを含めるとキリが無くなるので、UMB(Ultimate MC Battle)やKOK(King of Kings)の本戦などの全国大会だけを選びました。
対象にした大会は、UMB2010~2017、KOK2015~2017、罵倒Grand Championship 2014・2015・2017、戦極MC Battle 第6・8・9・10・13・16章、フリースタイルダンジョンの初代モンスター時代の1on1のみ*1、フリースタイルダンジョンの東西口迫歌合戦です(一部抜け落ちている試合あり)。全部で661試合。もし他に勝敗データを提供してくださる方がいらっしゃれば、ぜひコメントいただけると嬉しいです。
負けてしかいないMCはほとんど推定に役立たないので除外したところ、139MC・477試合が残りました。この477試合のデータを用いて、ベイズモデリングをおこないました。
こんな感じでExcelにまとめました。
モデル式
アヒル本の将棋の棋士の強さ推定モデル(p.188~190)をほぼそのまま拝借します。
Performance [g, 2] ~ Normal ( μ [Winner [g] ], σ [Winner [g] ] )
Performance [g, 1] < Performance [g, 2]
μ [ n ] ~ Normal ( 0, σn )
σ [ n ] ~ Gamma ( 10, 10 )
gは試合のインデックスを示し、今回は477まであります。nはMCのインデックスを示し、1~139まであります。Performance[g,1]とPerformance[g,2]は試合gにおける勝者と敗者のパフォーマンスです。各試合におけるプレイヤーmのパフォーマンスは、平均μm・σmの正規分布から生成されると考え、1・2式目のように表現しています。σは各MCの"勝負ムラ"を示し、弱情報事前分布であるガンマ分布に従うと設定しています。パフォーマンスの大きい方が勝者となる、という制約が3式目です。
詳しいことはアヒル本を読んでください。
Stan・Rコード
下のようなコードをStanで書きました。というか、アヒル本からコピーしました。
data {
int G;
int P;
int<lower=1, upper=P> LW[G,2];
}
parameters {ordered[2] performance[G];
vector[P] mu;
real<lower=0> s_mu;
vector<lower=0>[P] s_pf;
}
model {for(g in 1:G) {
for (i in 1:2) {
performance [g,i] ~ normal(mu[LW[g,i]], s_pf[LW[g,i]]);
}
}
mu ~ normal (0, s_mu);
s_pf ~gamma (10,10);
}
でRからStanを走らせました。
P <- max(data2[,c("Loser_id","Winner_id")])
dat <- list( G =G, P = P, LW=data2[,c("Loser_id","Winner_id")] )
stanmodel <- stan_model(file="model.stan")
fit <- sampling(stanmodel, data=dat, pars=c('mu','s_mu','s_pf'), seed=1234, chains =4 , iter = 2500)
結果
推定された強さμの高いトップ20のMCは下の通りになりました(μの5~95パーセンタイル値を図示してます)。図の下に行くほど強くなっています。誰もが納得のR-指定がトップ1に輝いていますね。その後のGADORO、mol53、晋平太などの並びも、それなりに妥当ではないでしょうか。
注意すべきは、推定結果は今回扱った勝敗データに依存しているという点。当たり前ですが、扱う勝敗データを拡張すれば結果は変わります。今回は全国レベルの大きな大会だけに絞ったので、地方予選で勝ち続けていてもそれが推定結果に反映されてません。さらに、ここ2~3年の人数が大きい大会で優勝した人は、勝利した試合数が多いので有利になっています。
ちょっと意外な人がトップ20に入っているのもデータ選択の妙ですね。GASHIMAや鎮座DOPENESS、般若は、勝利した試合しか今回のデータに含まれてないのでランキング上位ですが、データ数が少ないので信頼区間が非常に大きくなっています。
次に"勝負ムラ"σの大きいMCと小さいMCのトップ10です。上の図がσの大きいMC、つまりムラがあるMCで、下の図がσの小さいMC、つまり安定しているMCです。やはり図の下側からトップ(あるいはワースト)の順になっています。
サイプレス上野が一番ムラがある、という結果でした。なぜか納得です。戦極8章でR-指定を倒して優勝した一方で、フリースタイルダンジョンなどでの連敗が反映されているのでしょうか。安定しているMCには、やはり実力のあるMC達がランクインしてますね。逆にここに入っていない晋平太や崇勲は、割と負けるけどハマったら強いというタイプでしょうか。
最後に
できれば年ごとの強さを推定したかったのですが、そのためにはデータ数が少なすぎるみたいです。アヒル本のp.231~235を参考に時系列モデルを作成してみましたが、あまり納得できる結果にはなりませんでした。計算時間もかなりかかるし…。残念。
地方予選も含めて膨大なMCバトルのデータを持っている方がいれば、ぜひ提供してくださいw。
個人的にはR-指定と晋平太の2トップになって欲しかったなぁ。
(追記:2018.08.05)
解析のもとにしたExcelファイルアップロードしました→MC_battle.xlsx 。
だいぶ適当ですが。例えばUMB2010は自分の印象に残っているバトルしか記載してません。
StanとRでベイズ統計モデリング (Wonderful R)
- 作者: 松浦健太郎,石田基広
- 出版社/メーカー: 共立出版
- 発売日: 2016/10/25
- メディア: 単行本
- この商品を含むブログ (10件) を見る