オンライン開催!日立製作所のトップAI研究者と学ぶコンペティション-地下道歩行者量予測- 最優秀賞 山口将平さん 東京大学大学院 農学生命科学研究科

9月26日、日立製作所×Peakersのコンペティションがオンライン上にて行われた。昨年大好評だったオフラインコンペティションから課題も新たに、グレードアップしての開催となった。オンライン開催のためこれまで参加が難しかった遠方の学生も参加することが可能となり、全国各地のハイレベルな参加者たちと競い合うことができた。さらに日立製作所のトップAI研究者たちに直接アドバイスを受けることで、スキルの大きな向上を目指すことができるイベントとなった。

今回のコンペティションの課題は、北海道の地下道における歩行者数のテーブルデータから特定地点の歩行者数を予測するというもの。5つの観測地点中からひとつを目的変数とし、その地点の「30分後」の歩行者数を予測する。

プログラミングは独学で開始し、エンジニアとして長期インターン中の山口さん。意外なことにあまり自信はなく、優勝できるとは思っていなかったという。作業中は時間を有効に使うため、前処理を必要最低限にし、モデル構築やアンサンブルに時間をかけた。プログラミングは、実験と違って、手を動かした結果がすぐに見えるところに面白さを感じているという山口さんに、工夫点や反省点についてインタビューした。

大学院での研究内容

農学生命科学研究科で研究をしています。プログラミングは大学院に入学してから独学で始めました。もっと手を動かしてみたいと思い、エンジニアとして長期インターン中です。

プログラミングは、実験と違って、手を動かした結果がすぐに見えるところに面白さを感じています。勉強は基本独学ですが、大学の研究室や企業が主催する講座に出たり、『Kaggleで勝つデータ分析の技術』という本を読んだり、SIGNATEのコンペに参加したりしています。今回のハッカソンでは初優勝することができ、大きな自信になりました。

ハッカソンに参加した感想

コンペティションに参加した経験はありますが、イベント形式でオンラインで集まって行うものは初めてです。テーブルデータを扱えるのが楽しそうだなと思ったので参加しました。自作したコードに自信がなく正直優勝できるとは思っていませんでした。これまでの勉強の成果が出せたと、とても嬉しく思います。

初心者の方はJupiter Notebookを用いてコーディングするのが主流なのですが、2位の遠藤さんはPythonのスクリプトをしっかり書かれていて、コードの管理を自分できちんとされているなぁと感心しました。

工夫した点について

前処理についてはいくらでも苦労のしがいはあったと思いますが、とにかく時間が少ないのであまり時間をかけないほうがよいと思い、予測精度を出すというゴールに向けて必要最低限の処理をしました。時間を節約してモデル構築やアンサンブルに時間をかけたのが結果につながったのではないかと思います。

使ったのは、勾配ブースティングと呼ばれる手法です。よく使われるLightGBM・XGBoost・CatBoostをアンサンブルして提出しました。最初はLightGBMを使ってみたのですが、経験上CatBoostが時間はかかるけれど精度は出ると思ったので、CatBoostも試しました。加えて、XGBoostもやっておこうという感じで進めました。LightGBMを使い始めたときから1位になっていたようだったので、あとはそれをどう改善していくかという流れでした。

交通予測なので休みかどうかが影響すると考え、曜日が祝日かどうかという特徴量を作ったのですが、それが思ったよりも効いたように思います。あとはCatBoostがよかったと思います。

交差検証のときに、遠藤さんはシャッフルをTrueにしていたのですが、僕は時系列データなのでシャッフルはしないほうがよいと考えました。そこが遠藤さんとの差になったのかなと思います。

反省点について

反省点としては、ラグ特徴量を全然うまく作れなかったことです。過去1時間とか、過去の1日の歩行者の平均やmax – min、標準偏差などの要約統計量を作れればよかったなと。途中までは作っていたのですが、最後までやりませんでした。

メンターや企業について感じたこと

今回は黙々と手を動かしていたので、僕自身はあまりメンターさんとコミュニケーションがありませんでしたが、他の学生とのやりとりを見て、親切に相談に乗ってくれているなと感じました。

日立製作所に対しては、これまでのイメージが変わりました。電化製品のイメージが強かったのですが、AIやデータ分析など研究からいろいろなことに取り組んでいる会社だとわかり驚きました。実際にどんなことをしているのかもわかり、企業について知るよい機会になりました。

[contact-form-7 404 "Not Found"]