データ分析×消費! マネーフォワード主催オフラインコンペハッカソン- 優秀賞 森澤 竣さん 早稲田大学大学院 情報理工・情報通信専攻
2019年9月21日〜22日、東京都港区の株式会社マネーフォワード本社にて、「データ分析×消費! マネーフォワード主催・オフラインコンペハッカソン」が行われた。
本イベントは個人戦の機械学習コンペティション。個人向け家計簿アプリや法人向けバックオフィスのクラウドサービスで著名なマネーフォワード社が、Peakersとの共同で初主催した学生向けハッカソンである。参加者は同社提供のデータを用いて多クラス分類の課題に取り組んだ。
マネーフォワード社からは、同社の研究機関「Money Forward Lab」の所長である北岸 郁雄氏、同Labの技術顧問を務める自然言語処理の第一人者・関根 聡氏やアカウントアグリケーション本部の本部長で今回のデータ背景を詳しく知る内波 生一氏など、様々なバックグラウンドを持つ方が参加者のサポートにあたった。
数値データの取り扱いに加え、自然言語処理の知識も求められた今回のハッカソン。慣れない言語処理に苦戦した参加者が多く、長時間ランキングが停滞する場面もあった。そんな難易度の高いハッカソンを制し、見事上位を獲得した2名の学生にインタビューを実施した。
本ハッカソンで2位入賞および関根 聡氏が選出したアイデア賞「関根賞」のダブル受賞を果たしたのが、早稲田大学大学院で情報理工・情報通信を学ぶ森澤 竣さん。大学では説明可能なレコメンデーション(Explainable Recommendation)を研究し国内学会での発表経験も持つ。研究の傍らオンラインコンペティションにも積極的に参加している経験豊富な森澤さんだが、今回はどのような方法で精度を向上させていったのか。お話を伺った。
これまでのご経歴を教えてください。
早稲田大学の情報理工・情報通信専攻で、データマイニングに関する研究室に所属しています。卒業後は就職して、技術の社会実装に携わっていきたいです。院では特にレコメンデーションを研究しています。なかでも関心があるのは、説明可能性(explainability)。ただある商品をレコメンドいうのではなく、「なぜ、この商品をレコメンドするのか」をテキストで生成するという新しい分野に興味を持って研究しています。
今回参加されたきっかけは何だったのですか?
実は、マネーフォワードさんのアプリを自分でも使っているんです。そのマネーフォワードさんで取り組んでいる課題の精度向上に自分でチャレンジできるというテーマに惹かれました。KaggleやSIGNATEには参加経験がありますが、ハッカソンへの参加は今回が2回目。レベルの高い学生さんと交流できるのが楽しかったです。
今回、どんな工夫をされましたか?
特徴量に関しては、n-gramをベースに、形態素解析によるTF-IDF、そもそもマネーフォワードから提供されたデータに含まれている特徴を使い、Linear SVCというモデルで学習させました。
1位の方との差は1%未満と僅差でしたね。
追いつきそうで、なかなか追いつきませんでしたね。1位の方も特徴量やモデルは同じだったんですが。理由としては、提供されたデータに欠損の多いカラムがあったんです。そこに対しての補完が違っていたからだと思います。僕は単純に全データの平均を入れてしまったんですが、1位の方は違うやり方をしていたんですね。
そこが差になったかなと。
はい。1位の方は、1日目の時点ですでに最終に近いスコアを出していて、ぶっちぎりでした。そこで、根本的に何かが違うんだろうなと。2日目の朝、さりげなくメンターの方がおっしゃっていたことがヒントになって、そのときはじめてn-gramに気づいたんです。1位の方は1日目にもう気づいていたみたいです。そこから精度を急激に上げていけたんですが、追いつけそうで追いつけませんでしたね。
時間があれば試してみたかったことはありますか?
モデルのアンサンブルをやりたかったです。各モデルの出力値を別のモデルに入れて学習させるスタッキングと呼ばれる手法をやってみたかったです。もう2、3時間あったらやってみたかったです。
失敗した点、反省点はありましたか?
コードをきれいに管理していなかったので、途中でバグを発生させてしまって、その原因を探るのに時間をかけてしまいました。もう少し早くきれいなコードが書けるようにしたいです。n-gramに関しても、古典的な手法なんですが今回のように使えるケースもあるので、こういうのもきちんと試すべきだなと思いました。
マネーフォワードさんに対するイメージはいかがでしたか?
自分がアプリを使っているので身近な存在でしたが、思ったよりも社員数が多い規模が大きい会社で、企業向けサービスもいろいろやっているんだなと知りました。会社の業務の具体的なイメージがわきました。
将来はどんな挑戦をしてみたいですか?
データを分析・学習して、その学習結果をユーザーに届けるところまで、すべての工程を知っているエンジニアになりたいです。集中して学べるハッカソンには今後もどんどん参加してみたいと思います。