SlideShare a Scribd company logo
1 of 30
Stanで決める人類最強の男
@TeitoNakagawa
2014/07/05
男なら、誰もが一度は考え夢見ること
一体、誰が人類最強なのか?
本当にみんなそんなことに興味あるの?
信頼と実績の人気情報サイト
でも議論の的に!
パウンド・フォー・パウンド
• パウンド・フォー・パウンド(英: Pound for pound)は、異なる階級の選手を比較、対比する方法を指し示
すものとして1950年代初期に『リング』誌の初代編集長ナット・フライシャーによって造られた用語であり、
その後、階級や王座認定団体、王座そのものが増えると、単に選手の優れた才能や能力を説明するた
めに用いられるようになった[1]。ボクシングや総合格闘技、キックボクシングなどの格闘技の世界で、仮
に体重差がなかった場合に最強と目されるチャンピオンに与えられる称号、もしくはそのような選手を考
える思考法を指し、PFPまたはP4Pと略される。
Different Rule?
Different Weight?Fedor Emelianenko
Mike Tyson Sugar Ray
Robinson
参考:Pound4Pound
http://espn.go.com/mma/rankings
ESPN Ranking UFC Ranking
http://www.ufc.com/rankings
現状のPound4Pound論争
• 異なるルール⇒総合格闘技で一段落
– 1993年 The Ultimate Fighting Championship
– 各格闘技から総合格闘技へ転身した選手たち
• 最強を決定する場にふさわしい人間
• 総合格闘技自体の成熟
• 異なる選手⇒議論が必要
– 単純な勝敗によるランキング
– より重い体重の選手へのシフト
– 弱い選手と戦っているチャンピオン?
ベイズ推定によるより柔軟なモデリングが必要
Stan使うしかねぇだろ、Stan!
Stanで人類最強の男を決定する。
データ
UFC(Ultimate Fighting Championship)
• 世界最大のプロ総合格闘技。男子8階級、女子2階級制
• 5分3R(王座戦は5R)、KO、TKO、判定の3つで勝敗が決まる。
判定は3人のジャッジによってラウンド毎に決定される
• 選手はオープンフィンガーグローブとスパッツの着用のみ可
使用した試合データ
• データは複数のサイトよ
り、自動、手動で入手。
• 試合数:2616試合
• 選手数:1175人
• 5試合以上の選手318人
• クレンジングを行った結
果、試合数は実際の試
合数より減っている。
モデリング
ベイズ推定で勝敗データをモデリングする。
参考:階層ベイズモデルによるスキルの推定
http://heartruptcy.blog.fc2.com/blog-entry-68.html
スキル推定モデル
•各プレイヤーにはスキルμだけでなく、ムラσが存在する。
•試合ごとにパフォーマンスpが決まり、これの大小で勝敗が決まる。
>
Fighter A:
Skill:Low
Variance:High
Fighter B:
Skill:High
Variance:Low
p
μ
σ
p
μ
σ
モデルの変遷
モデルの変遷
1. ムラありモデル
2. ムラありモデル+パラメータ制約
3. ムラなしモデル
4. 5試合未満の選手を推定対象から除外
コード
Model05.stan
data{
int N_fighter;
int N_fighter_estimate;
int N_match;
int Winner[N_match];
int Loser[N_match];
int z[N_match];
real p_s1_min;
real p_s1_max;
}
parameters{
real<lower=0, upper=10> s;
real skill[N_fighter_estimate];
real winner_p[N_match];
real loser_p[N_match];
}
model{
real skill_merged[N_fighter];
s ~ uniform(p_s1_min,p_s1_max);
for(i in 1:N_fighter_estimate){
skill[i] ~ normal(0, s);
skill_merged[i]<-skill[i];
}
for(i in N_fighter_estimate+1:N_fighter){
skill_merged[i]<-0;
}
for(j in 1:N_match){
winner_p[j] ~
normal(skill_merged[Winner[j]],0.01);
loser_p[j] ~ normal(skill_merged[Loser[j]],0.01);
z[j] ~ bernoulli(step(winner_p[j] - loser_p[j]));
}
}
選手数
対象選手数
試合数
勝者のID
敗者のID
試合結果
標準偏差の
(最小、最大)
サンプル後、
試合結果評価用
skillに値を格納
5試合未満の選手は一
律でskillは0とする。
スキルSD
スキル
パフォーマンス
(勝者、敗者)
全選手のスキル
勝者のパフォーマンスが敗者のそれ
を上回るときは1をサンプリングする。
Zは必ず1
Model05.R
library(rstan)
######################
#データクレンジングは省略
######################
#Stanの実行部分
#引き渡すdataオブジェクトの作成
data <- list(
Winner=Winner
, Loser=Loser
, N_fighter=N_fighter
, N_fighter_estimate = N_fighter_estimate
, N_match=N_match
,z=rep(1,N_match)
,p_s1_min=1
,p_s1_max=5
)
#引き渡すinit初期値パラメータの作成
init <- list(winner_p=rep(0.05, N_match)
,loser_p=rep(-0.05, N_match)
,skill=rep(0,N_fighter_estimate)
,s=3
)
#モデルの実行
fit1<-stan(
#fit=fit1,
file="./Model05",
data=data,init=list(init),
iter=6000,chains=1,warmup=1000
######################
*実際には3並列処理、20000iter、で実行しました。
勝者(敗者)のIDを
含むベクトル
試合結果:必ず1
パラメータ
勝者のパフォーマンス
は必ず敗者を上回って
いる。⇒これがないと最
初からサンプリングでき
ない。
結果
収束しませんでした。。。
Stanによって導き出された
最強の選手BEST3
3rd:George St.Pierre
Win Loss NC/D
19 2 0
•第6代、8代、UFCウェル
ター級チャンピオン
•通称「ラッシュ」
•極真空手3段
•士導館空手黒帯
•ブラジリアン柔術黒帯
2nd :Chris Weidman
Win Loss NC/D
7 0 0
•現UFCミドル級チャンピ
オン
•絶対王者アンデウソン・
シウバに2度にわたり勝
利UFCは無敗
•ブラジリアン柔術全米
王者
1st :Jon Jones
Win Loss NC/D
14 1 0
•現UFCライトヘビー級
チャンピオン
•23歳と8カ月で史上最年
少チャンピオンに
•ブラジリアン柔術全米
王者
Skill上位ランキング BEST10
fighter nomatch nowin winrate skill
Jon Jones 15 14 93% 0.0450
Chris Weidman 7 7 100% 0.0444
Georges St.Pierre 21 19 90% 0.0406
Khabib Nurmagomedov 6 6 100% 0.0405
Chad Mendes 8 7 88% 0.0389
David Hulett 6 6 100% 0.0387
Demetrious Johnson 8 7 88% 0.0369
Jose Aldo 6 6 100% 0.0366
Royce Gracie 11 10 91% 0.0366
Anderson Silva 18 16 89% 0.0352
格闘技データにおける考慮点
• マッチメイク:強い選手を倒した選手を高く評価し
たい⇒反映
• トレンド:選手は一般に、キャリアやスキルを上
昇していき、ピークを迎え、衰えていく。一人の選
手の年間の試合数は5にも満たない。⇒選手の
年度別の推定などは難しい。
• KO:判定よりもKOを高く評価したい。
• 年齢:年齢による衰えVSキャリアによる成長⇒未
反映
• 体重:階級の異なる選手同士の戦いを高く評価
したい⇒未反映

More Related Content

Viewers also liked

BUGSを使うメリット
BUGSを使うメリットBUGSを使うメリット
BUGSを使うメリット. .
 
How to use animation packages in R(Japanese)
How to use animation packages in R(Japanese)How to use animation packages in R(Japanese)
How to use animation packages in R(Japanese)sleipnir002
 
Dummiesパッケージ
DummiesパッケージDummiesパッケージ
Dummiesパッケージweda654
 
Rで代数統計 TokyoR #42 LT
Rで代数統計 TokyoR #42 LTRで代数統計 TokyoR #42 LT
Rで代数統計 TokyoR #42 LTToru Imai
 
データサイエンティスト必見!M-1グランプリ
データサイエンティスト必見!M-1グランプリデータサイエンティスト必見!M-1グランプリ
データサイエンティスト必見!M-1グランプリSatoshi Kitajima
 
Tokyor42 ggplot2
Tokyor42 ggplot2Tokyor42 ggplot2
Tokyor42 ggplot2Yohei Sato
 
東京R非公式おじさんが教える本当に気持ちいいパッケージ作成法
東京R非公式おじさんが教える本当に気持ちいいパッケージ作成法東京R非公式おじさんが教える本当に気持ちいいパッケージ作成法
東京R非公式おじさんが教える本当に気持ちいいパッケージ作成法Nagi Teramo
 
R入門(dplyrでデータ加工)-TokyoR42
R入門(dplyrでデータ加工)-TokyoR42R入門(dplyrでデータ加工)-TokyoR42
R入門(dplyrでデータ加工)-TokyoR42Atsushi Hayakawa
 
Tokyor42_r_datamining_18
Tokyor42_r_datamining_18Tokyor42_r_datamining_18
Tokyor42_r_datamining_18Yohei Sato
 
パターン認識 04 混合正規分布
パターン認識 04 混合正規分布パターン認識 04 混合正規分布
パターン認識 04 混合正規分布sleipnir002
 
ビジネスマン必見!キレイな提案書を作るためのデザインの基礎知識
ビジネスマン必見!キレイな提案書を作るためのデザインの基礎知識ビジネスマン必見!キレイな提案書を作るためのデザインの基礎知識
ビジネスマン必見!キレイな提案書を作るためのデザインの基礎知識Tsutomu Sogitani
 
【プレゼン】見やすいプレゼン資料の作り方【初心者用】
【プレゼン】見やすいプレゼン資料の作り方【初心者用】【プレゼン】見やすいプレゼン資料の作り方【初心者用】
【プレゼン】見やすいプレゼン資料の作り方【初心者用】MOCKS | Yuta Morishige
 
Gamma分布と仲間たち
Gamma分布と仲間たちGamma分布と仲間たち
Gamma分布と仲間たちXiangze
 
Kubernetes in 30 minutes (2017/03/10)
Kubernetes in 30 minutes (2017/03/10)Kubernetes in 30 minutes (2017/03/10)
Kubernetes in 30 minutes (2017/03/10)lestrrat
 
色彩センスのいらない配色講座
色彩センスのいらない配色講座色彩センスのいらない配色講座
色彩センスのいらない配色講座Mariko Yamaguchi
 

Viewers also liked (17)

BUGSを使うメリット
BUGSを使うメリットBUGSを使うメリット
BUGSを使うメリット
 
How to use animation packages in R(Japanese)
How to use animation packages in R(Japanese)How to use animation packages in R(Japanese)
How to use animation packages in R(Japanese)
 
Dummiesパッケージ
DummiesパッケージDummiesパッケージ
Dummiesパッケージ
 
Rで代数統計 TokyoR #42 LT
Rで代数統計 TokyoR #42 LTRで代数統計 TokyoR #42 LT
Rで代数統計 TokyoR #42 LT
 
データサイエンティスト必見!M-1グランプリ
データサイエンティスト必見!M-1グランプリデータサイエンティスト必見!M-1グランプリ
データサイエンティスト必見!M-1グランプリ
 
TokyoR42_around_chaining
TokyoR42_around_chainingTokyoR42_around_chaining
TokyoR42_around_chaining
 
Tokyor42 ggplot2
Tokyor42 ggplot2Tokyor42 ggplot2
Tokyor42 ggplot2
 
東京R非公式おじさんが教える本当に気持ちいいパッケージ作成法
東京R非公式おじさんが教える本当に気持ちいいパッケージ作成法東京R非公式おじさんが教える本当に気持ちいいパッケージ作成法
東京R非公式おじさんが教える本当に気持ちいいパッケージ作成法
 
R入門(dplyrでデータ加工)-TokyoR42
R入門(dplyrでデータ加工)-TokyoR42R入門(dplyrでデータ加工)-TokyoR42
R入門(dplyrでデータ加工)-TokyoR42
 
Tokyor42_r_datamining_18
Tokyor42_r_datamining_18Tokyor42_r_datamining_18
Tokyor42_r_datamining_18
 
パターン認識 04 混合正規分布
パターン認識 04 混合正規分布パターン認識 04 混合正規分布
パターン認識 04 混合正規分布
 
ビジネスマン必見!キレイな提案書を作るためのデザインの基礎知識
ビジネスマン必見!キレイな提案書を作るためのデザインの基礎知識ビジネスマン必見!キレイな提案書を作るためのデザインの基礎知識
ビジネスマン必見!キレイな提案書を作るためのデザインの基礎知識
 
【プレゼン】見やすいプレゼン資料の作り方【初心者用】
【プレゼン】見やすいプレゼン資料の作り方【初心者用】【プレゼン】見やすいプレゼン資料の作り方【初心者用】
【プレゼン】見やすいプレゼン資料の作り方【初心者用】
 
Gamma分布と仲間たち
Gamma分布と仲間たちGamma分布と仲間たち
Gamma分布と仲間たち
 
PyMC mcmc
PyMC mcmcPyMC mcmc
PyMC mcmc
 
Kubernetes in 30 minutes (2017/03/10)
Kubernetes in 30 minutes (2017/03/10)Kubernetes in 30 minutes (2017/03/10)
Kubernetes in 30 minutes (2017/03/10)
 
色彩センスのいらない配色講座
色彩センスのいらない配色講座色彩センスのいらない配色講座
色彩センスのいらない配色講座
 

Stanで人類最強の男を決定する 2