人生初ハッカソン「ベースボールハッカソン」に行ってみた
人生初ハッカソンに行ってきました。
2日間にわたって開催された「パ・リーグ×パーソル ベースボールデータハッカソン」野球ハッカソンのエンジニアリング部門に参加しました。
ハッカソンまで
web広告をたまたま見かけて
- 開発じゃなくてデータ分析
- テーマが野球
映画マネーボールのGMみたいで楽しそうっていうのが惹かれたポイント。
他にも動機はあって
- インターンを経てデータサイエンティスト職に惹かれて、なんとなく職種の雰囲気を感じたかったから。
- スキルアップ。kaggleすらやったことがなかったが、新しいことを始める時はとりあえず飛び込む派なので。
- 就活や退院(しないけど)のための実績作り。
- 息抜き
ハッカソン2日前の状況
経験不足&個人参加なので、データを読み込ん、前処理して、何かしらのモデルを組んで、予想して、ちゃんとした形式で提出する所までいけるかすらやや不安。。。
これはまずいということで、回帰と2値分類のコードは作って行くことにした。
kaggleのhouse prices(回帰)とTitanic(分類)のkernelを2,3個写経した。
特に、
Stacked Regressions : Top 4% on LeaderBoard | Kaggleの写経によって、カテゴリカル変数をone-hot表現にして、欠損値をmedianや0で補完するか行ごと消すかして、sklearnの各モデルで試して1番良いのを選べば、最低限の精度は出そうだという感覚は掴めた。
正直、全くモデルの性質を理解していないが、LASSO Regression、Elastic Net Regression、Kernel Ridge Regression、Gradient Boosting Regression、XGBoost、LightGBM、アンサンブリング学習のコードは手に入れた。
ハッカソンの告知見てる感じ、9割方、回帰でしょって張って、2値分類は最低限の決定木だけ覚えた。
ハッカソン当日
- 全32名が参加し、うち26名がエンジニアリング部門(個人参加の人もいればチーム参加の人もいた。
- まさかの2値分類(泣)
- 決定木しか予習してないって(泣)
- しかも、0と1の偏りが大きい。ほとんど0。
ハッカソン内容については詳しくは割愛。ページ一番下の他の方々のブログをご参照下さい。
簡単にいうと、あるチームのファンクラブ会員約14万人が本拠地の1試合目(game1)~42試合目(game42)までに来たか来ていないかのデータから、43試合目(game43)、game44、game45に来るか来ないか、0 or 1を当てるというもの。
やったこと
- メインのデータに加えて試合の詳細情報データを使って、試合の曜日と試合の相手チームの情報を取ってきた。
- モデル:決定木(他のモデルの実装も試そうと思ったが、他のモデルを使う時に定番のパラメータが分からなかった。)
- モデルはgame43の予想、game44の予想、game45の予想で別々に作った。
- 特徴量何パターンか試して8:2でvalidationした結果、RMSLEが最も低くなりそうだった特徴量を使った。
- その結果、わずか特徴量8つw
特徴量(例として、game43を予測するのに使った特徴量)
- 誕生年
- 性別
- 継続年数
- ポイント
- EC購入金額
(game1~game42の情報ごっそり飛ばして)
- game43の対戦相手チームの試合に関して、今までで来た確率
- game43の曜日に行われた試合に関して、今まで来た確率
- 今までに来た合計試合数(直近の試合を重視するように重み付けした。game1に来た場合ー1、game2に来た場合ー1.05、、、game41に来た場合ー1.05^40)
結果
エンジニアリング部門19チーム(全26名)中入賞は4チーム。
結果は・・・
5位
意外と惜しいやないかーい。(後でわかった。)
パリーグ6球団タオルセット/ユニフォーム欲しかった。。。
まあ初参戦、ぼっち参戦、学生(たぶん2チームだけ)ということを言い訳にすると上々のスタートとも言えるか。
参加賞も野球ファンなので普通に嬉しい。
感想
飛び込んでよかった。他も何か参加してみようかなーと。
自分の備忘録を兼ねて他の参加者の方々のブログ。
- 「ベースボールデータハッカソン」エンジニアリング部門で準優勝しました - u++の備忘録
- ベースボールデータハッカソンのプレイベントと、ハッカソン当日に参加しました - そぬばこ
- ハッカソン、記者がまさかの優勝 プロ球団をコンサル: 日本経済新聞