技術ブログ

Developers's blog

Kaggleバスケコンペ(NCAA)解法の紹介

2020.03.26 小野 裕哉
kaggle 機械学習
Kaggleバスケコンペ(NCAA)解法の紹介

NCAAコンペ概要

 全米大学体育協会バスケットボールトーナメントの試合の勝敗を予測するコンペでした。男女別にコンペが開かれました。リーグ戦の試合結果の詳細とトーナメントの試合結果のデータが年ごとに与えられ、今年のトーナメントの試合結果を予測します。評価指標はLoglossでした。


結果

 新型コロナウイルスの影響で、大会自体がキャンセルになってしまいました。リークなしのLBの最も良いスコアは0.52586です。


取り組み内容

コンペの内容を理解してから

 LBの順位が参考にならないということを一番意識しなければならないと感じました。
というのも、LBは2015~2019年の予測のスコアなのですが、その答えはすでに与えられたデータに入っているため簡単にスコアを0にすることができ、リークに気を付けないと簡単に誤ったスコアが出てしまいます。
どのコンペでもCV(Cross Validation)は重要ですが、今回は特に必要でした。公開されているノートブックにもリークをしたものが多かったため、もしコンペが中止にならなければかなりのshakeが起きていたと思います。しかし、リークを防ぐことに関するディスカッションもいくつかあり、そこに注意できている参加者もいました。
また、過去数年間は毎年NCAAコンペは開かれているため、それらの上位成績者の解法を読み参考にしました。しかし、一貫した特徴はなく様々な解法であった為、自分なりの方法を考える必要がありました。


前処理 • 特徴量エンジニアリング

 基本的には、リーグ戦の合計得点などの試合の詳細データをチームごとに集計し、それを特徴量としました。
また、与えられているデータにチームのランキングなどもあったため、欠損値を補完しながら特徴量に加えました。Kenpom.comという、リーグとトーナメントのデータを集計しているサイトがあり、その独自の集計方法が特徴量として使えそうであったためスクレイピングをしたのですが、トーナメントのデータをリークしているためそのまま使うことはできず、自分でコーディングして作り直しました。
このうちのピタゴラス勝率やポゼッション率は比較的重要な特徴量となりました。また、各チームのプレースタイルの特徴を掴む為、チームごとのリーグ戦の試合内容に対してPCA分析をしてその結果を加えるといったこともしました。特徴量選択はまだしていませんでした。


CV(Cross Validation)

 交差検証の仕方についてですが、2014年までのデータ12年分を用い12FoldのGroupKFoldで行いました。去年、一昨年などの戦績を反映した特徴量を作っていないため、リークは起きていないと思います。年によってValidationのスコアが全然違うことから、やはりスポーツの予測は難しいなということを感じました。ジャイアントキリングの多く起こった年のスコアはかなり悪くなってしまいます。


モデリング

 LightGBM、CatBoost、DNNのアンサンブルです。シングルモデルのスコアにそれほどの違いはなかったのですが、出力の分布は大きく違い、アンサンブルをすることでスコアを向上することができました。僕の場合は、LightGBM、CatBoost、DNNの配分を、3:2:5にした場合が最もスコアが良くなりました。
XGBoostは他のモデルに比べスコアが良くなかったため使いませんでした。ハイパーパラメータチューニングはまだしていなかったため、これをするとさらに良くなったかもしれません。


まとめ

 コンペ自体がキャンセルになってしまい非常に残念です。しかし、今までしっかりできていなかった、シングルモデル作成→複数モデル作ってアンサンブル の流れに慣れてきたという点や、LBの順位が全く信用できない中でCVだけを頼りに取り組むという点においては学びが多く、良かったと感じています。来年はコロナウイルスの影響も収まりコンペがまた開かれると思うので、その時に今回の取り組みの成果を出したいです。

 


Twitter・Facebookで定期的に情報発信しています!

関連記事

Kaggleコンペ 2019 Data Science Bowlの振り返り

はじめに 昨日まで開催されていたKaggleの2019 Data Science Bowlに参加しました。結果から言いますと、public scoreでは銅メダル圏内に位置していたにも関わらず、大きなshake downを起こし3947チーム中1193位でのフィニッシュとなりました。今回メダルを獲得できればCompetition Expertになれたので悔しい結果となりましたが、このshake downの経験を通して学ぶことは多くあったので反省点も踏まえて

記事詳細
Kaggleコンペ 2019 Data Science Bowlの振り返り
kaggle 回帰 機械学習
Kaggle解説: 銅メダル獲得 NFLコンペについて

はじめに KaggleのNFLコンペで2038チーム中118位となり、銅メダルをとることができました。以下に、参加してからの取り組みや、反省点を書いていきたいと思います。 コンペ参加前の状況 10ヶ月ほど前にTitanicコンペに参加してから、「Predicting Molecular Properties」と「IEEE-CIS Fraud Detection」というコンペに参加してみましたが、公開されているカーネルを少しいじってみた程度でメダルには到底届

記事詳細
Kaggle解説: 銅メダル獲得 NFLコンペについて
kaggle 機械学習
KaggleコンペGreat Energy Predictor III で銅メダル獲得!

アクセルユニバース株式会社(以下当社)では、人が対応している業務を画像認識、音声認識、文字認識等を活用して効率化する機械学習ソリューション開発をおこなっています。 インターン生は業務の一環としてKaggleに取り組んでおり、先日のASHRAE - Great Energy Predictor IIIにて銅メダルを獲得しました。 メダルを獲得した田村くんのコメントです。 今回は、他の方が提出したもののブレンド(混ぜる)の仕方を工夫しました。 まずはなるべ

記事詳細
KaggleコンペGreat Energy Predictor III で銅メダル獲得!
kaggle 機械学習
kaggleコンペNFL Big Data Bowl で銅メダル獲得!勝因は「特徴量エンジニアリング」

アクセルユニバース株式会社(以下当社)では、人が対応している業務を画像認識、音声認識、文字認識等を活用して効率化する機械学習ソリューション開発をおこなっています。 インターン生は業務の一環としてkaggleに取り組んでおり、先日のNFL Big Data Bowlコンペにて銅メダルを獲得しました。 こちらのコンペは、アメリカンフットボールのランプレイにおいて、攻撃側が進むヤード数を予測するコンペです。 メダル獲得した小野くんのコメントです。 ーーー 主な勝

記事詳細
kaggleコンペNFL Big Data Bowl で銅メダル獲得!勝因は「特徴量エンジニアリング」
kaggle 機械学習

お問い合わせはこちらから