データとバスケ

バスケをデータから楽しむブログです。

KaggleのNCAAトーナメント勝敗予想コンペに参加しました

今回はBリーグの話ではないです。

データ分析に興味がある方ならKaggleというデータ分析コンペを開催しているサイトを御存知かと思います。コンペのひとつにGoogleとNCAAが毎年行っている、NCAAバスケトーナメントの勝敗予想コンペがあります。このコンペの2019シーズン版に私も参加しました。

ご存知の通り今シーズンは八村塁が所属するゴンザガ大学が日本で注目を集めており、勝敗予想に参加することでNCAAトーナメントを2倍楽しもうという算段です。ちなみに男子と女子の両方で同じコンペが開催されておりまして、私は双方に同じ計算方法で参加しています。

www.kaggle.com

www.kaggle.com

このコンペを簡単に説明します。まずKaggleから過去数年のレギュラーシーズンとトーナメントのスタッツ、Play by Playのデータや、各大学のトーナメント出場歴などのデータが提供されています。また自分で勝手に有用なデータを用意することも許されています。

それらのデータを元に、今季のトーナメントの形に関係なく、出場する68大学(First Fourと呼ばれるゲームで落ちる4大学も含みます)のすべての組み合わせについて勝敗を予想する、という形式になっています。

もう少し正確に言うと、各大学にID番号が振られており、ID番号が小さい方の大学が勝つ確率を出す、というやり方になっています。出場校がチーム1、2、3、4だとしたら

  • チーム1 vs チーム2におけるチーム1が勝つ確率
  • チーム1 vs チーム3におけるチーム1が勝つ確率
  • チーム1 vs チーム4におけるチーム1が勝つ確率
  • 以下チーム2 vs チーム3、チーム2 vs チー厶4、チーム3 vs チーム4についても同様

を求めるという形です。実現しなかった組み合わせについては予想は無視されます。

結果は対数損失と呼ばれる値で評価されます。これは簡単に言えば完璧に勝率を予想した場合(チームAが勝ったゲームを全て確率100%と予想。負けたゲームを全て0%と予想)は0になり、完全にランダムに予想すると1になる値です。

対数損失は勝敗を単純に「勝ち」、「負け」で予想するのではなく、確率で予想するときに便利なやり方です。勝つ確率100%と予想していたチームが勝つと最高点(つまり0)を得られる一方、それで負けると大きなダメージを負います。かと言ってずっと50%の予想をしていても得られるのはランダム予想と同じ結果です(つまり1。)

このコンペの最高な部分は、NCAAトーナメントが進むに連れ結果がリアルタイムで更新されていくところです。冒頭に述べた「2倍楽しむ」はこれで達成できる予定です。この記事ではどのように過去のデータから確率を求めたのかの説明は省きますが、自分のモデルがどの程度の制度なのか、確認するのが楽しみです。

ちなみに私のモデルが弾き出したゴンザガ大の勝つ確率の一覧は以下のようになりました。今季のレギュラーシーズンの成績を主に使ったモデルなので、好調だったゴンザガ大の確率はかなり高めに出ていますね。ザイオン・ウィリアムソン率いるデューク大学相手にも勝つ確率が約75.4%と出ています!頑張れ八村塁!

対戦大学 ゴンザガ大が勝つ確率 / 100
Wofford 0.5766060
Michigan St 0.6557608
Virginia Tech 0.7019235
New Mexico St 0.7030285
Belmont 0.7051441
Mississippi St 0.7094201
Murray St 0.7210376
Montana 0.7227919
Colgate 0.7262318
Tennessee 0.7289464
Virginia 0.7334119
Kentucky 0.7445775
Duke 0.7535295
N Kentucky 0.7544945
Auburn 0.7700234
Yale 0.7724692
Utah St 0.7725864
Northeastern 0.7739441
Liberty 0.7821296
North Carolina 0.7895388
Iowa St 0.7899850
Purdue 0.7910372
St Mary's CA 0.7933053
LSU 0.8004175
F Dickinson 0.8013481
Buffalo 0.8140718
Marquette 0.8161373
Houston 0.8175769
Villanova 0.8200679
Baylor 0.8296433
Maryland 0.8338790
Texas Tech 0.8342346
Mississippi 0.8376907
Nevada 0.8459738
UC Irvine 0.8535026
UCF 0.8560282
Iowa 0.8577243
Kansas 0.8658504
Gardner Webb 0.8669303
Washington 0.8723155
Georgia St 0.8725844
Oregon 0.8833206
Iona 0.8840201
Vermont 0.8842641
Florida St 0.8846830
Abilene Chr 0.8864741
Arizona St 0.8871292
NC Central 0.8879917
Cincinnati 0.8912449
VA Commonwealth 0.8995327
N Dakota St 0.9038196
Louisville 0.9062988
Michigan 0.9132945
Florida 0.9162315
Ohio St 0.9222904
Seton Hall 0.9228450
Wisconsin 0.9259659
Syracuse 0.9270761
St John's 0.9279579
Minnesota 0.9352691
Kansas St 0.9354663
Temple 0.9355528
Oklahoma 0.9356434
St Louis 0.9367082
Prairie View 0.9389675
Bradley 0.9418723
Old Dominion 0.9424608

ちなみに同じ計算方法で過去5シーズンの男子トーナメントの予想を作り、実際の結果と突き合わせて対数損失を求めてみたら、以下のような結果になりました。そんなには悪くなさそうです。昨年のコンペの結果を見ると、上位は対数損失が0.5台だったので上位に入るのは難しそうではありますが。

シーズン 私のモデルの対数損失
2014 0.6867621
2015 0.6479138
2016 0.6332666
2017 0.7007685
2018 0.6863598

なおやり方を真似した訳ではないのですが、私こういった勝敗予想の何たるかがあまりわかっていなかったので、いつもTwitterで勝敗予想を発表されているkonakalabさんの論文を参考にさせて頂きました。この分野に興味がある方にはおすすめできる面白い論文です!

最後になりますが、別にデータから求めずヤマ感でやっても勝敗予想って面白いはずですよね。Bリーグのチャンピオンシップでも手軽に似たようなことができないか、ちょっと検討しています。参加者の皆さんには確率だけ提出してもらえばよいだけなので、そんなに手間なくできるはずです。