そぬばこ

備忘録とか、多分そんな感じ。

ベースボールデータハッカソンのプレイベントと、ハッカソン当日に参加しました

パ・リーグ×パーソル ベースボールデータハッカソン というイベントに参加してきました。

techplay.jp

techplay.jp

概要

私は、分類器に関する研究をしている調布の大学の学部4年生です。野球観戦が好きで、現在、経営科学系研究部会連合協議会主催のデータ解析コンペティションに参加していることもあり、このイベントに興味を持ちました。

雑にイベントの概要をまとめますと、パ・リーグのデータを提供するから、そのデータを使ってハッカソン的な事やっちゃおうぜ!という感じのイベントです。私はそのプレイベントとハッカソン当日2日間分の計3日、渋谷に足を運びました。プレイベントは、元楽天のボブ(川井 貴志さん)がゲストとして登壇されたこともあり、楽天ファンの私としては非常に興奮しましたし、ハッカソン当日では、普段データ分析やKaggleをやっていない私からすると気付きや学びが多く、非常に充実した時間を過ごすことが出来たと思っています。この記事では、ハッカソン当日の2日間について書きたいと思います。

データハッカソン

ハッカソンの概要

日程としては、1日目が10:00 〜 19:00、2日目の10:00 〜 14:30の約1日半で行われました。なお、部門が以下の2つに分かれており、私は「エンジニアリング部門」で同大学の先輩と2人で参加させていただきました。

  • エンジニアリング部門
    • データから決められた部分のデータを予測し、予測精度を競う。
  • コンサルティング部門
    • データから新しい提案を考え、プレゼンする。

エンジニアリング部門で予測したのは、「ある球団のファンクラブの会員が特定の試合に来るか否か」です。

約14万人の会員について、球団主催試合のgame1から42に行ったかどうかが事前にわかる状態となっており、game43, 44, 45に行ったかどうかを予測するといったものでした。

f:id:nersonu:20181008125758p:plain

さらに、1日目途中に半分である約7万人がgame43, 44, 45に行ったかどうかが公開され、元々公開されていたベースボールオペレーションの以下のデータを用いて、予測モデルを考えていくといった感じです。

  • 各投手それぞれの試合毎の成績
  • 各野手それぞれの試合毎の成績
  • 試合の中身が各打席ごとにわかるようになっている時系列データ

f:id:nersonu:20181008131312p:plain f:id:nersonu:20181008131515p:plain

データは基本外部に公開しちゃダメなのですが、ここらへんはプレイベントでも撮影が許可されていたので大丈夫なハズ……

やったこと

私も先輩もデータ解析やKaggleといった経験はなく、私の研究領域の知識とその場しのぎのアイデアでいろいろと考えました。データ整形に慣れていないのもあり、あまり特徴量は増やすことは出来ないのがわかっていたので、何か1つの仮説をもとにすすめることになりました。

その中で出てきた疑問が「野球ファンは何日前にチケットを買って、何を動機にするのか」というところで、私達はそれを「 大体1週間前にテレビやネット配信で観た試合が盛り上がっていれば買うんじゃないか? 」と仮定しました。

そもそも盛り上がってるってなんだ……という話なのですが、せっかくだしこないだのプレイベントで聞いたセイバーの指標を使ってみるか、ということになり、以下のようなデータを用いることにしました。

  • 会員が観た試合の1週間前の試合の、選手のFIPの値の合計
  • 会員が観た試合の1週間前の試合の、選手のwOBAの値の合計

結果、何位だったかわかりませんでした(入賞してないので)ので、どこまでそれが効いたかわかりませんが、オリジナリティは少し出せたか?と思ったり思わなかったりしています。あと、そもそもFIPとwOBAの本来の使い方とは離れているので、正しく効く保証もありませんし、 n日前というのはもうすこし検討するべきでした。

うまくいかなかったこと

そもそもデータ整形に慣れていない、scikit-learnの分類器のパラメータチューニングがうまくいってないといったようなことは、経験で明らかなので省略します。今後のデータ解析コンペで鍛えていければと思います。

研究室の同期が、不均衡データに関する研究をしていたので、彼が教えてくれたSMOTE(Chawla et al. 2002)を今回使ってみることにしました。使ったのはPythonライブラリimbalanced-learnのSMOTE1です。

レーニングデータにそのままSMOTEを使ったのですが、結果としては分類器の結果にも偏りが無くなってしまい、精度が残念なことになりました。今後はデータの特性を理解して、データに対する処理も考えていきたい所ですが、使うにあたってSMOTEに対する理解が深まったのは良かったです。

勉強になったこと

表彰の前に入賞者による用いた特徴量やモデルの解説があり、今後どのように処理していけばいいか非常に参考になる点がありました。XGBoost流行ってるし、やっぱ良さそうということもわかりました。

感想

好きな野球に関するデータを扱えたことは、純粋に楽しかったです。こういった実データを用いた予測ということをなかなかやっていないこともあり、そういったことそのものが新鮮でしたし、普段の研究で私の提案モデルを既知のデータでValidationしてるだけなのとは大きく違うなと思いました。

また、やはり他チームの解説で学びや気付きがあったことが一番の収穫でした。学んだことを、データ解析コンペやこういったイベント等で活かせていければと思っています。

参考文献

Chawla, N. V., Bowyer, K. W., Hall, L. O., & Kegelmeyer, W. P. (2002). SMOTE: synthetic minority over-sampling technique. Journal of artificial intelligence research, 16, 321--357.