DISCOVERY

日々の備忘録

JRコンペ参加した

JRコンペとは?

SIGNATEで12月から行われていたテーブルデータコンペ。 JRのいくつかの路線の各電車の遅延を予想しましょうという内容でした。

kaggleのMoAに会社のチームで取組んで銅メダルだったのですが、 ほぼ既存ソースのマルパクリとなってしまい、達成感が少なかったのでこちらに挑戦しました。

notebookの共有がないので最初はこちらの方が自力がつくのかなーと。

取組

最初は時系列データということでGPUも持っているしLSTMで取り組みました。

しかしいつまで経ってもただの横置きのベンチマークに勝てない。。

しっかりデータをみると予想区間が4駅しかないデータがいくつも存在していました。

windowサイズ5などで試していてこれでは全然うまく行かなそうだったので、LightGBMに切り替えました。

同じ特徴量で切り替えた途端、スコアが爆あがりして銀メダル圏内に。

しかしそこからKaggle本を元にいくら試してみてもスコアが上がらない。

週情報追加・遅延0判定追加・平均などの情報追加・特殊なtrainデータの除外・optunaの利用・targetEncodingなどなど

どれだけやっても一向に精度が向上しないまま最終日。

ここでLightGBM最初に試した特徴量で再度実験したところ結果が違う!

まさかのseed固定していない & jupyterを落とすことなくいろいろ実験していたので結果に毎度ばらつきがあったのでした。。

今までの取り組みが実際に良かったのか悪かったのかの判断が全部死んでしました。。 悲しい。。

f:id:azpiero:20210122022141j:plain

最終日に気づいて試せることが少ない中で、結局特徴量は元の情報にプラスして駅ごと、 電車ごとに遅延を横置きしたものを追加しただけになってしまいました。

遅延0判定の結果が一定以下のものは遅延0とまず予想するようにしました。 これはほとんどの遅延時間は0で回帰の結果0.1などと出るものは遅延0にして少しでもズレを修正したかったからです。 それ以外は回帰の結果を利用する形になりました。

結果

30位でした! f:id:azpiero:20210122020157p:plain

感想

SIGNATEの初心者コンペ以外で初めて挑戦しましたが、まずまずの結果が出て嬉しいです。 結構pythonでのテーブルデータの分析に慣れてきた気がします。

seedを固定して結果のブレをなくすことができれば、よりいろいろ試せたと思うのが少し残念。 いい教訓になりました。

途中でMoAで活躍したtabnetもpytorch-tabnetを元に試してみましたが奮わずでした。

画像系の魚群検出の方にも手を出してみてるのですが、epochが足りないのか全然いい結果が出ないですね。

余談 )

12月の電気代がGPUガシガシ使ってたら1.5倍になりました。

deepfakeとかでも遊んでたしね。仕方ない。

今日のイラスト

ぽめちゃん f:id:azpiero:20210122022215p:plain