2019年12月11,12日 の2日間にわたって開催された Kaggle Days Tokyo に参加してきました。 非常に楽しく、学びのある時間を過ごせたので、その記録を残したいと思います。
Kaggle Days とは? Kaggle Daysは、世界最大のデータ分析コンペプラットフォーム Kaggle が開催している世界的なイベントです。プレゼンテーション・ワークショップ・オフラインコンペなどが行われ、データ分析について学んだり、ビジネス課題に対するアイディアを得たり、新しい仲間と交流できる場となっています。
2018年のワルシャワから始まり、今回で6回目の開催になるのですが、なんとその地に東京が選ばれました!
Kaggle Days Tokyo への参加について 日本人 Kaggler としてこの機を逃さないように、Kaggle Days Tokyo のチケットが公開されたら急いで応募し、非常に幸運なことに、当選して行けることになりました。
また、ちょうど12月から新しい会社に入社したばかりで、まだ10日しか在籍していのですが、業務扱いで Kaggle Days に参加させていただけました。感謝です。(ちなみに、新しい会社はこの記事が掲載されているWantedlyです!)
Kaggle Days Tokyo 1日目 1日目に参加したプレゼンテーションとワークショップについて、いくつかピックアップし、その概要と注目ポイントを記載します。
Leveling-up Kaggle Competitions ( Ben Hamner さん ) Kaggle がリリースされたのは2010年で、そこからコンペの形式やプラットフォームが段々と進化して行った過程を、Kaggle CTOのBenさんが話されました。
例えば、始めの頃の Winner's Solution が Random Forest だったけど、そのあと DL が出てきて GBDT と組み合わされるようになったこと。また、コンペの形式が以下のように段々と進化していったこと。
Prediction Competition Code Competition Simulation Competition Kaggle Platform上での教育も行われていることなどが、Kaggleの発展として説明されました。個人的には、Kaggle Notebook (kernel) の存在がKaggleの発展には大きかったのではないかと思います。
Kaggleというプラットフォームの凄さと、これからも素晴らしいものであり続けて欲しいと思えるプレゼンでした。
Tabular competition feature engineering ( Kazuki Onodera さん ) テーブルコンペの特徴量エンジニアリングについて、Instacartコンペを例について解説されました。 基本的な統計量、null数、top10 value、venn diagram などを見るのはもちろん、そのデータが生成される過程を読み解きながらデータ分析しているのが興味深かったです。
例えば、あるユーザが、ネットショップでずっと同じものを買っていても、ある時、別の代替品を買うことがあるのでは?とデータから推測。代替品と思われる商品が同時に買われていないかも確認しながら、それを特徴量として組み込むことでスコアを上げ、ソロでの2位を獲得されたそうです。
印象的だったのは、豆腐は豆の代替品になるか?ならないのでは?といった、自身の常識や感覚を元に、それを評価できる数値を作成して特徴量作成に利用している部分でした。
また、テーブルデータ分析の勉強をするのにオススメなKaggleコンペは、Ottoコンペ, PLAsTiCCコンペ, Instacartコンペだそうです!
Hosting Kuzushiji Competition ( Tarin Clanuwat さん ) くずし字コンペのホストからの、くずし字コンペに関するプレゼンでした。今年の7~10月上旬までの約3ヶ月間、日本語のくずし字の画像を文字として認識するコンペが開催されました。
Tarinさんの話の中で印象的だったのは、評価指標をF1 Scoreにした経緯と、その結果に関してです。「画像認識のコンペなので、評価指標にIoUも使わないのか?」と、Kaggle運営から聞かれたそうですが、「コンペティターには、どこの範囲かより、なんの文字かを認識する部分に注力してほしい」という思いから、IoUを使わなかったそうです。
しかし、F1 Scoreで正解だったのかというとそうではなく、くずし字データは偏りが大きいデータだったので、出現頻度が低い文字こそ当てて欲しかったのに、そこを評価できない評価指標になってしまったそうです。
「コンペのホストになる方に送るアドバイスとしては、このコンペで何を得たいのかを明確にすることだ」という言葉が印象的でした。
Practical tips for handling noisy data and annotation ( Ryuichi Kanoh さん ) ノイジーなデータを処理するためのヒントをテーマにしたワークショップでした。 Quick Drawというデータセットを使って実際に実験しながら、その結果を踏まえての説明がありました。
ノイジーデータ処理の主なポイントは以下の3点
Mixup Large Batch Size Distillation Mixupに関しては Manifold mixup と言われる、中間層でMixする手法があり、まだKaggleで大々的には使われていないものの、個人的には注目しているとのことでした。
Large Batch Sizeに関しては、確かにノイジーデータにはバッチサイズを大きくすると良いが、一般的には大きすぎるバッチサイズだと精度が落ちることが知られており、闇雲に大きくすればいいわけではないこと、また学習率との兼ね合いもあることが説明されました。バッチサイズと学習率、重み減衰と学習率に着目し、大きなトレンドを捉えることで最適なパラメータを探せるという話が印象的でした。
Distillationは様々な方法がありますが、例えば、事前に学習されたteacherモデルの予測値をsoft-labelとし、実際のlabelをhard-labelとて、soft-label lossとhard-label lossの重み付け和をstudentモデルのlossとして使う方法などがあります。今回の実験ではhard-lossの二倍を重みをsoft-lossに設定した場合が、一番精度が高かったようです。
資料が細かく丁寧に記載されており、実験したソースコードもアップされています。
専業Kagglerの一年半 & LANL Earthquake Prediction 3rd Place Solution ( Hideki Murata さん ) 元財務省・金融庁勤務の公務員から専業Kagglerになった経緯や、どのようなコンペに出たのかなど、通称カレーさんこと村田さんから話がありました。
専業Kagglerは職業ではないので、家族の協力と理解が非常に重要であること、収入がないのでそのようなストレスに対する向き不向きがあること、村田さんのコンペの成績などが、ユーモアを交えて説明され、会場は終始笑いに包まれていました!
Kaggler なら誰しもが思うこと・・・ Kaggle だけをやって生活したい!というその夢を体現した村田さんの話はとても興味深かったです。
また、LANL Earthquake Prediction コンペでは、p4677という外部データを使い、テストデータの Private LB で使われる部分をハックすることで3位を獲得されたとのことでした。
専業Kagglerを通してわかったKaggleで強くなるポイントは、上位ソリューションをしっかり理解することと、自分の得意な部分を伸ばすことだ、とのことです。
Computer Vision with Keras ( Dimitris Katsios さん ) Google Colaboratory上で、APTOSコンペのデータを使い、Kerasでライブコーディングをするというワークショップでした。
keras.applications.ResNet50でResNet50をベースにしたモデルを構築、一度構築したそのモデルをEfficientNetベースへの変更をするなどして、丁寧に説明しながらも、あっという間にモデルを作って見せてくれました。
参加者に、「この場合の最終レイヤーは何にしたら良いかな?」とか「loss function は何がいいと思う?」など、質問をしながら進行され、参加形式のライブコーデイング体験となりました。 良い発言をした人には、プレゼントが用意されていたのも素敵でした!
最近はPyTorchばかり触っていましたが、改めてKerasも使いやすい素晴らしいDLフレームワークだと再認識しました。
Kaggle Days Tokyo 2日目 2日目は Kaggle Days Tokyo 参加者だけが参加できる、日本経済新聞社がスポンサーのコンペが開催されました。だれが、どんな日経新聞の記事を読んだのかがデータに入っており、とても面白いデータセットでした。
私は一人で参加予定でしたが、たまたまチームを組んでくれる Kaggler と巡り会えたので、一緒にチーム戦で参加しました。このような、今まで知らなかった人と仲良くなれるのも、Kaggle Days の醍醐味だと思いました。
コンペの戦績ですが、上位に食い込むことはできませんでしたが、オフラインコンペの魅力を知ることができました。機会があればまたオフラインコンペに出て、もっと良い成績が残せるようになりたいと思いました。
そして、入賞者の方々、おめでとうございます!!8時間という短時間に多くの有効な特徴量を作成し、ハイスコアを出せる Kaggler の方々は本当に素晴らしいと思いました。少しでも近づけるよう精進したいです!!
終わり あっという間に終わってしまった Kaggle Days Tokyo でした。新しい Kaggler 仲間にも出会え、データ分析って楽しい、コンペって楽しい、Kaggle ってやっぱり面白い! と思える2日間を満喫しました。これからも沢山コンペに出て、データ分析を学びつつ、メダル獲得・ランキングの上昇を目指してKaggleライフを満喫したいと思います!
また、この記事で紹介されていないプレゼンについてですが、この後、弊社 Kaggler の先輩が別に記事を投稿する予定ですので、そちらを参考にしていただけたらと思います。
追記 Kaggle Days Tokyo Report #2 弊社 kaggler の先輩、合田さんがこの記事で扱っていない Kaggle Days Tokyo のプレゼンについて解説してくれている記事を公開しました ! 欠損値処理やエンコーディング手法について、とても丁寧に詳しく書かれているので、必見です !
Wantedly の機械学習の勉強会に遊びに来ませんか? 現在、Wantedlyでは毎週木曜日18:30から、機械学習の勉強会を開催しています。外部の方も参加可能ですので、ぜひ遊びに来てください。Kaggle のコンペネタ、大歓迎です!
また、一緒にWantedlyで機械学習エンジニアとして活躍してくれるメンバーも募集中です。話だけでも聞きたいなど、カジュアル面談も受け付けてますので、気軽に話を聞きに来ていただけたら嬉しいです!