わたぼこり美味しそう

関西のデータ分析界隈でうろちょろ

Kaggle Days Tokyoに参加しました!!

こんにちは!! atmaインターンの植田(@tellmoogry)です
今回は12月11~12日に開催されたKaggle Days Tokyoに会社で行かせてもらえた*1のでその参加記を書きたいと思います!
基本的にはふわっと発表の概要+僕のお気持ちの記事です。
詳しい発表内容は各発表者様の公開されているスライドをご確認ください。

Kaggle Days Tokyoについて

Kaggle Daysは簡単に言うと年に数回(4~6回)世界各地で行われるKaggleの公式オフラインイベントです。前回はChinaで行われました。
Day1はGrandMasterやMasterの方々のプレゼンテーション, ワークショップがあり、Day2は日経電子版のデータを使用したオンサイトコンペが行われました。
Kaggle Days Tokyoの構成(https://kaggledays.com/tokyo/より転載) f:id:tellmoogle:20191214222622j:plain

Kaggle Days Tokyoについての説明はDay1のオープニングで説明があり、今回はGrandMaster8名, Master37名, Expert65名を含む240名が参加し、チケットはなんと2日で完売したそうです!!

以下ではDay1について自分が参加したプレゼン/ワークショップについて時系列順に簡単なまとめと自分の感じたことを書いていこうと思います。

Day1

Day1はプレゼンとワークショップで構成されています。
ワークショップは事前に参加希望を出した上で抽選がある*2んですが,私はワークショップ「Practical Tips for handling noisy data and annotation」に参加することができました!!
(プレゼンもワークショップも全部行きたかったのに身体が足りなくて辛かった)

また、発表は日本語と英語がありましたが日本語→英語、英語→日本語については同時通訳があり優しいイベント設計でした。
( とはいえ専門的な話については通訳の方を介するよりも素直に英語の方が理解しやすかったりしたので、英語力がないと辛い場面も多いと思います*3 )

Leveling-up Kaggle Competitions

【概要】
KaggleのCTOによる、Kaggle全体のコンペに関する発表でした
kaggleで使われてきた手法が年によって変わってきたと共に、コンペの形も変わりますよというような話があり、新たにsimulationコンペという名前が出てきました...!

Prediction Competition(csvを提出するもの)
→Code Competition(kernel, notebookでコードを提出するもの)
→Simulation Competition(??? 強化学習???)

【お気持ち】
コンペの種類と同様に開催数も増えるなら無問題ですが、そうでない場合
コンペ参加のジャンル(table, image, NLP, ...)を選んでいたら参加する機会自体が減ると思うので、今後kaggleで勝つために幅広いパワーが必要になる気がしますね

Essential techniques for table competition

【概要】
GMのonoderaさんによるテーブルコンぺのテクニックについての発表でした
はじめにテーブルコンペ全般でやるべきの初動についての話といくつかのテーブルコンペで効いた発想についての紹介があり、加えてテーブルコンペを今後始める人に勧めたいコンペを3つ紹介していました。

◯テーブル全般の話

  • 統計量をみる
  • 連続値のtop10の値をみる
  • Feature vs Target
  • Target meanの棒グラフ確認
  • ベン図をみる

◯テーブルコンペsolution

  • idでsubset (instacart , KDDCUP2015)
  • sorting(Home credit)

◯おすすめテーブルコンペTOP3

  • 1st : instacart
     レコメンドタスク, 指標への理解が必要, 実務的にも役立つ
  • 2nd : plastic
     データが綺麗, trainデータが少ない
  • 3rd : otto group
     マルチクラス, アンサンブルの練習

【お気持ち】
手法の点ではidごとの傾向をみたり、隠れIDを特定したりなどデータを細部まで見ることを大事にしているのが印象的でした。
(自分のことを振り返ってみると、idごとのtarget平均を見て特徴的なidを見たりすることはありますが、サイズが大きくなると細かく見ることを疎かにしがちなので改めてやるべきことをやっていないですね...)

オススメのテーブルコンペも膨大な過去のコンペの中からどれが勉強になるのかは中々分かりにくいので参考になりました。レコメンドのコンペは珍しく、他のタスクも経験して引き出しとして持っておきたいので、上から順にlate subをやってみたいですね!!

Hosting Kuzushiji the Competition

【概要】
くずし字コンペ主催者によるコンペ開催に関する発表でした

【個人的要点】

  • 日本には古文書が沢山あるけど読まれていないものが数多くあり、その課題解決をしたい
  • コンペ開催にかかった準備期間は5ヶ月
  • 誰でも参加できるコンペ設計にしたかった(→日本人は3位だったので設計はうまくいった)
  • 目的である文字認識に集中してもらえるように評価指標の設計を行った
  • 主催者側も予めモデルを用意しており、そのモデルは12位相当の精度だった
  • kagglerは何でもやるからleakageは避けられないと判断しメダル付与のないplaygroundのコンペになった(ここ少し僕の理解が甘いんですけど、多分勝つためにtest dataにある古文書自体を探し始める人たちが出てきて本来の文字認識のタスクから逸れることを避けるためだと解釈しています)

【お気持ち】
くずし字コンペが開催された頃は日本のいわゆる古文書に書かれたくずし字を読み解くコンペということで、開催された当初は、ドメイン的な観点で日本が有利そうだし興味あるけどメダル付与の対象外か〜というような意見でTLが賑わっていていた印象があり参加はしていませんでした。
ただ今回の発表を聞くと主催者側の非常に熱い想いによって作られたコンペだったんだなという風に印象が変わりました。

実務ではお客さんの課題を解決できる喜びだったり、課題を解決した先にあるものを一緒に想像できるという点が1つのモチベになりうると思います(働きが浅いので妄想です)。

今回の発表はモロにそういう部分を刺激するもので、主催者の気持ちを聞いてくずし字コンペ出れば良かったなと思った人は少なくないと思います。
これ以外のコンペについても、コンペが終わってからではなく、始まる前に主催者側の熱を聞く機会があっても良いと思わせる内容でした。*4 *5

Practical Tips for handling noisy data and annotation

【概要】
RKさんによるラベルノイズの取り扱いに関するワークショップでした。
怪しいラベルがついている場合や、アノテーションの粒度の違いなどから起こりうるラベルノイズへのアプローチの有効性をQuick Drawコンペで実験するという内容でした。

【発表キーワード】
* Mixup * batch sizeを大きく * Distillation

【お気持ち】
まずアプローチのが効いたかどうかの判定するための実験系が丁寧に作られている点と参考文献等の資料が充実しているのが印象的でした。
またラベルノイズ自体は人間がデータのアノテーションをしているようなデータでは広く起こりえそうな話で、かなり汎用的な内容だったのではないかと思います(実際発表の中で画像に限らず、manifold mixup等テーブルでもというお話がありました)。

ラベルノイズについてちゃんと考えたことがありませんでしたが、Hardラベル(0 or 1みたいなやつ)でのラベルノイズはclassごとのデータ数が少ない場合は影響が大きそうで、それをsoftラベルに置き換えるという発想は広く使えそうです。(pseudo labelong が効く場合、こういったsoftラベル化も要因のひとつになっているのかもしれませんね。調べたい)

How to encode categorical features for GBDT

【概要】
JackさんによるGBDTでのcategorical featureの取り扱い方が精度に及ぼす影響に関する発表でした。
カテゴリの水準数とnum_leavesの関係について細かく実験をなさっていて、target encodingの力強さを感じさせるものでした。

【お気持ち】
特にuselessなカテゴリが混ざっていても実験の中では悪影響を及ぼさなかったという結果が興味深かったです。
(カテゴリごとのデータ数が足りてないものは雑にまとめてしまって、target encoding使ったら良さそうですね。)

普段僕がカテゴリ変数を扱うときは横着してLGBMのcategorical featureを使用していましたが、実際にkaggleで勝つためにはtarget encodingを積極的に試す必要がありそうです。

target encodingにはcatboost的なordered TSであったり、cross validationのfoldごとにやるか、cross validationのfoldに合わせるやり方など様々ありますが、target encodingのやり方が及ぼす影響についても気になるところです...!

専業Kagglerの一年半 & LANL Earthquake Prediction 3rd place solution

【概要】
カレーちゃんさんによる発表で、前半部分は専業kagglerという職業の生活について、後半部分は地震コンペに関する内容でした。 後半の地震コンペの3rd solution解説では、単にsolutionの説明をするだけでなく、そこに至るまでの失敗も含めスコアの推移と共に試行錯誤の説明なさっていていました。

【気になったトピック】

  • 上位solutionを全て自分のものにすることが強くなるためには必要
  • Kaggleコミュニティ最高

  • LB proving

  • Discussion見落とさないこと
  • hostの論文をチェック
  • チームマージは勉強になる
  • leakがあってもそれ前提で戦うことは楽しい

【お気持ち】
前半後半どちらもkaggle愛に溢れたユニークで面白い発表でした!!
また、発表者のカレーちゃんさんはupuraさんと一緒にnovice向けのkaggle本を出版されるそうです👀

Feature Engineering Techniques & GBDT implementation

【概要】
Kaggle本著者の一人であるthreecourseさんによるGBDTに関する発表でした。Kaggle本の話、Kaggle本に書かれているような特徴量エンジニアリングの話に加えてGBDTの実装kernelの公開の話まで内容盛り沢山でした。

【お気持ち】 Kaggle本は今となってはテーブルデータを学ぶ上で読まない理由がないと思いますが、そんな本が日本語で出版されていることは学習コスト的に非常に恵まれていると改めて感じました。
売れた理由の考察が面白くて、Kaggleのキャッチーさに加えて、初級者向けの本に比べ中級者向けの本が珍しいのが要因になったというお話でした。*6
XGBoostの実装会を最近関西の人たちでやっていたので、GBDT実装の話は凄くタイムリーでしたが、クオリティにびっくりしました。
Pythonでの実装だったり論文の解説記事だったりが充実しているので、これはもう全人類GBDT実装するしかないですね...

ML modeling with AutoML Tables

【概要】
AutoMLに関する発表でした。

【お気持ち】
理解が浅いんですが、今後はAutoMLが使用したモデルやモデルのパラメータを見ることが出来るようになるようで、feature importanceと合わせて分析のアイデア抽出器として使えそうです。
データ分析者が手を動かす際の初動で用いて、AutoMLの結果から重要な変数やデータセットの特性を解釈するというような使い方でしょうか...
atmaCupにも毎回AutoMLが参戦しているので今後の激戦に期待ですね🏳

My Journey to Grandmaster Success & Failure

【概要】
senkinさんによるGMになるまでの1年半の振り返りに関する発表でした。
アプローチももちろん凄いんですが、そもそもテーブルとNLPを中心にコンスタントにコンペに出続けているところが強さの源に感じました。コンペに出る 大事

【気になったトピック】

  • 外れ値予測モデルでモデル分け
  • テキストのように取り扱う(Tf-idf, Word2vec)
  • テーブルデータをグラフ的に取り扱う
  • NUll importanceで特徴量選択 ...などなどEloコンペを中心に他にも数多くの手法の紹介がありました

【お気持ち】
この辺りのテキストやグラフの考えをテーブルに流用する発想は、知っているだけでは結局何もできないので、画像とかNLPとかドメインを選ばずにひたすらやらないと強くなれないなという気持ちになりました。コンペに!!出よう!!

How to succeed in code(kernel) competitions

【概要】
GMであるThe Zooのdottさんによるカーネルコンペについての発表でした。
カーネルコンペ自体はあまり馴染みがなかったんですが、単純にコンペ全般的に学びとなるトピックも数多くありました。

【気になった言葉】

  • Try more, fail fast
  • In CV we trust
  • Teaming strategies

【お気持ち】
(チームマージの話は色んな議論があると思いますが、メダル取得目的の話と学び目的の議論は分けて考えるのが健康的で、学び目的ならチームマージは外せない選択肢だと思いました。(誰かマージしましょう))

コードの最適化あたりもtrain, testデータがあまりにも大きい時にも使えるので自分用に用意しておくべきですね(ASHRAE*7の話をしています)
正直僕はGMレベルになるとこれまでの経験でそこまで試行錯誤しないと思っていましたが、(もちろん試行錯誤のコスパの良さは違うと思いますが)GMが沢山試してやっているならnovice, contributerは1つのコンペに時間めっちゃ割いてやらないと一生差は埋まらんなと思いました。

さいごに

Kaggle Days Tokyo Day1の僕視点での振り返りは以上となります。
全体を振り返ると強い人がやることやっているんだから、やらなきゃダメだなという気持ちです。
イベントとしてはKaggle Daysが大事にしているデータサイエンティストの交流という面が随所に感じられ、その場にKaggle参加者しかいないという異様な空間が非常に刺激的で楽しかったです。

個人的には今後、当面は1つのコンペにしっかりフル参加しながら、今までやって来なかった画像, NLPをチームで参加しながらkaggleを続けたいと思います。
それぞれの発表資料は公開されているものも多いので、振り返って自分のものにしたいと思います!
次のKaggle Days は2020年3月にドバイ開催らしいのでそれの参加記も書けると嬉しいですね!!!!!!*8
以上です。

*1:参加費、移動、宿泊、諸々出してもらいました…!

*2:弊社のnyker510さんは申し込み忘れてました

*3:辛かった

*4:もちろん基本はメダルや賞金目的なのでleakageがあれば使わないという選択肢はありませんが...

*5:https://www.kaggle.com/c/santander-customer-transaction-prediction/overview

*6:NLP, 画像も是非に...

*7:https://www.kaggle.com/c/ashrae-energy-prediction/overview

*8:会社のお金??nyk510さんのお金??で行ける説が出ている