合宿でデータ解析コンペをやったらチームのプロセスに変化が生まれた話

はじめに

こんにちは!2017新卒エンジニアの秋田です。 CETチームでは、サービスの各種ログやトランザクションデータの収集・分析およびそれらを基にした開発を行っており、インフラ/アプリケーションエンジニア・データサイエンティストなど様々な職種の人がいます。CETの実績やチームの詳細はこちらから。

さて、CETチームでは半期に1回、リファクタリングをメインとした開発合宿を行っています。 しかし今回の合宿では、僕を含めた新卒3人が企画を任され、「自由に企画していいよ」と言われていました。 そこで『先輩方が持っている知見を共有する会』というテーマを設定し、自社サービスの豊富なデータを使ってKaggleのようなデータ解析系のコンペを行うことにしました。 このコンペで実践したことを話すLTを最終日に行い、「実務での思考のプロセスやテクニックなど参考にさせてください!」という魂胆です。 実際に合宿をコンペを行ったところ、合宿だけで完結せずにチーム体制にも変化が生まれたので、合宿レポート+合宿後に起きた変化を共有したいと思います!

場所

開発合宿でおなじみ おんやど恵 さんで1泊2日で行いました! 今回の決め手としては

  • 開発合宿プランがある
    • 無線LANなど設備が完璧
    • 他社様の利用実績も多数
  • 都心からアクセスがしやすい
  • 温泉が深夜でも入浴可能
  • HP、ブログの写真から伝わる清潔感
    • 実際とても綺麗でした

参考にしたブログ

コンペの詳細

はじめに述べたように、今回は自社データを使ってKaggleのようなコンペを行うことにしました。

Kaggleとは 公式サイト より引用すると、

Kaggle makes it easy to connect your data with data scientists. See what our community of over one million data scientists can do for you. Kaggle is a platform for data science competitions. We help you solve difficult problems, recruit strong teams, and amplify the power of your data science talent.

となっており、要は「データサイエンティストや分析者が与えられたデータセットの予測精度を競い合うコンペティション」です。

Kaggleのイメージを掴んでいただいたところで、今回合宿で行ったコンペの内容を以下に記載します。

  • お題
    • 自社サービスの機械学習を使う実案件
  • 分析やモデルのデータソース
    • サービスのログやマスターデータから作成したデータマート
  • 何を予測するか(予測指標)
    • お題案件のKPI
  • 基本個人戦(※経験が浅い人にはメンターがペアを組む)

実案件をお題にした理由は以下の2つの意図がありました。

  • 実案件に取り組むときの先輩方の知見を共有してほしかった
  • もしいいモデルができたら、案件の成果が生まれそう

合宿の様子

1日目

東京から1時間半ほどで湯河原着。 各自、湯河原駅周辺で昼食を済ませ、バスで宿へ。 バス停の様子

宿到着後、諸々のセットアップを済ませ、いざコンペスタート。 サービスに関わりがある先輩からのドメイン知識の共有や、手法に関する議論などが盛んに行われており、楽しい雰囲気で行うことができました。 また1泊2日かつ2日目はほぼLTということで、あまり時間がありませんでしたが、会議等の割り込みもないため、終始集中しながら各自取り組めていた様子でした。

会議室の様子 スクリーンに映しているのが、事前にセットアップしておいたリーダーボード(InfluxDB + Grafanaで構築)です。このリーダーボードに各チームの得点状況などを映して一喜一憂していました。

夕食も非常に美味しく(だれもご飯の写真撮っていなかった…)、食後も和気あいあいと話して楽しんでいました。 夕食時の様子

2日目

2日目は少し作業してから、すぐにLT。 1日ちょっとという短い時間内で行った手法や思考のプロセスを時系列を追って説明してもらいました。 出た知見を軽く紹介すると、

  • 予測値と実測値の残差分析によって、モデルの振る舞いを解析した
  • 実データで頻繁に遭遇する欠損値を、対象アイテムと似ている特徴を持った他のアイテム群の統計量で補完した
  • サービスのドメイン知識を利用した特徴量の作り込みを行った

など分析のテクニックから実務に関わることまで幅広く共有していただき、大変参考になりました。 (みんな議論に集中していたようで、誰もLT中の写真撮っていませんでした…)

LT後は会議室の片付けをして宿を後にしました。

コンペ合宿の良かった点

  • タイムリミットを設けたことで、作業の優先順位をつけざるを得なくなり、自分自身も仮説検証やモデリング、考察のPDCAの早いサイクルを回すいい練習になった
  • 様々な案件で成果を出している先輩方がどんな思考回路で案件に取り組んでいるかの片鱗を知ることができた
  • 複数人によるモデリングが行われたので、結果的に1人で試行錯誤するよりも多くのモデルのバリエーションを検証できた

現在、今回のコンペでできたモデルを案件に投入して効果を検証中です!

合宿後変わった点

上記のようにコンペ形式での分析・モデリングが実案件に対して効果的であることが分かりました。 このプロセスを合宿だけで完結させるにはもったいないので、チームとして活かせないかという話が持ち上がりました。 良かった点をチームで掘り下げた結果、採用したのは以下の点です。

  • 1案件に対して複数人のサイエンティストが関わる → サイエンティストの中でも手法や分野に得意不得意があるのでそれを補うことができそう
  • 1週間程度の短時間で、検証したい仮説に対するMVP(Minimum Viable Product)のモデルを作り、A/Bテストに投入 → リーンスタートアップのアプローチを応用し、サービスに対する知見を貯めるスピードを上げることができそう

特に2点目は大きな変化でした。 リーンスタートアップのような手法をいつもの業務プロセスに取り入れるのはハードルが高いですが、合宿で軽くお試しすることができ、良さが実感できたので導入のハードルをかなり下げることができました。

現在、実案件でこれらのプロセスを採用し、色々なフィードバックを受けながらプロセスの改善に取り組んでいます!

さいごに

ただ新卒が「知見共有してください!」と言っただけなのに、日常業務と違うことができる「合宿」がきっかけで、チーム方針の見直しにまで発展しました。 チーム体制や業務プロセスの変化させるきっかけになるかもしれないので、ぜひ皆様も合宿を利用していつもとは違う側面から業務に取り組んでみてください!

リクルートライフスタイルでは、一緒に働くエンジニアを募集しています! ご興味のある方は下のバナーからご応募ください!