
こんにちは、データサイエンティストの宇佐見です。HACARUSでは先日からInternal Kaggle Challengeを実施しています。
この度第一回目のチャレンジが終了しましたので、チャレンジの内容について共有させてもらいたいと思います。
チャレンジの概要
- 対象:糖尿病網膜症の画像解析コンペ
- 期間:8月6日~9月6日
- 参加人数:7名(3人、4人の2チームに分割)
- 就業時間の20%までをKaggleに使用可能
このチャレンジの大きな特徴としては、やはり就業時間の20%までをKaggleに使用してもいいというところでしょうか。HACARUSはスタートアップであり、売り上げに直結しないKaggleに時間を割くことはリスクもあるかと思います。しかし、ここで得た知見が最終的には将来の投資になるという会社判断があり、機会をもらえたことは非常にありがたいことです。
また、もう一つの特徴としてはそれぞれのチームがデータサイエンティスト×アプリケーションエンジニアという組み合わせになっているということです。つまり、機械学習に対する知識に差があり、そこを上手く補完しながら進めていかなくてはなりません。しかもデータサイエンティストは日本人ですが、アプリケーションエンジニアは皆フィリピン人なので、コミュニケーションはリモートかつ英語で行わなくてはなりませんでした。
チャレンジを振り返って
HACARUSとして初のKaggleChallengeでしたが、これから学んだことがいくつかありました。
具体的な手法は多数の上位ランクの方が公開されている方法が参考になると思いますので、ここではKaggleチャレンジビギナーとして、またチーム構成の特異さから学んだことについて述べていきたいと思います。
Kaggle特有の仕様やTipsの存在
私自身Kaggleは代表的なチュートリアルであるTitanicを少し触った程度で、ちゃんと取り組んだのは初めてでした。ですのでまず自分の成果を提出するだけでも一苦労でした。本コンペはKernel-only competitionという形式だったため、Kaggle上のノートブックをプライベートなテストデータに対して実行できるような形式で作成しなくてはなりません。またノートブックにはリソースや実行時間の制限もあるため、作成したモデルや特徴量を事前にデータセットとしてアップロードして用意しておく必要もありました。他にもTipsとしては、過去の同様なコンペから画像データを引っ張ってきたり、他の参加者の前処理を参考にしたりといったことを上位ランクの方は行っていたようです。
「巨人の肩に立つ」ように、他の参加者の優れた手法を参考にすることは非常に重要なことでしょう。おそらくコンペのみならず、普段の業務においても多分に役立つに違いありません。
機械学習に対する知識差の埋め方
先述の通り今回の参加チームはデータサイエンティスト×アプリケーションエンジニアという組み合わせのため、機械学習で用いられるアルゴリズムに対しての前提知識に大きな差があります。そこで、私のチームでは下記の通りのステップでチャレンジを進めていくことにしました。
- データを眺めて関係のありそうな特徴を議論、前処理の決定
- 各々のノートブックを提出
- 更に精度向上のための追加の前処理や特徴量抽出の方法の議論
- 最終的なノートブックを提出
これは他方のチームも同様のアプローチでした。また、私のチームではデータサイエンティスト側からアプリケーションエンジニアのメンバーに対してベースとなるノートブックを用意して、それを各々コピーして編集していく形で進めていくことにしました。データセットも基本的な前処理はデータサイエンティスト側で行なってからKaggleにアップロードしてシェアする形をとりました。そして各ステップにてフィリピンのメンバーとはビデオでのミーティングを行い、都度進め方やアルゴリズムの説明、特徴量抽出のアプローチなどを共有するようにしていました。また、適宜疑問点などについてはSlackを使ってコミュニケーションをとったり、Google Docsでまとめを行なったりしていました。
コミュニケーションの様子
ここで難しかったこととしては、様々な手法を正確に、かつわかりやすく、そして英語で伝えなくてはならないということです。データサイエンティストのメンバー同士の会話ならお互いベースの知識があるので、詳しく言わなくともわかる部分はあるのですが、こと普段から機械学習を使っていない人に対しては知識ゼロの前提で説明をしなくてはなりません。わかりやすく噛み砕いて伝えるのは大変ではあったのですが、同時に自分の知識を再確認することもできました。
チャレンジ後の振り返りミーティングでは、このプロセスでの進め方は良かったというフィードバックをアプリケーションエンジニア側からもらえましたが、一方でなぜその手法を選んだのかというモチベーションがよくわからなかったという話もありました。k-means使ったらクラスタリングができるよ、とかxgboost使って分類できるよ、とか伝えてはいたのですが、他にも色々ある中でなぜそれを選んだのか?その手法の何が良いのか?という点が伝えられていなかったようです。彼らにとっては手法の知識が増えたとしても、今後どう活用していったらいいのかわからないという状態になってしまっていたようです。
今後もチャレンジは引き続き行なっていきますが、次回のチャレンジ前には今回見受けられた知識差が引き起こす問題が起きないように、機械学習の基本的な知識を補完するような勉強会を開きたいですね。
最後に
第一回HACARUS Kaggle Challengeのレビューは以上にて終了させて頂きますが、今後もチャレンジは続いていきます。まだまだ順位はいまいちですが、HACARUSチームとしてより良い結果を残せるようにもっと精進していきます。