Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Competitionsだけじゃない! Kaggle Notebooks Grandmas...

corochann
October 11, 2024

Competitionsだけじゃない! Kaggle Notebooks Grandmasterのすすめ

2024/10/12 Rist Meetup 2024「Kaggleは業務の役にたつ」 での発表資料です。
https://connpass.com/event/327246/

corochann

October 11, 2024
Tweet

Other Decks in Programming

Transcript

  1. 自己紹介 中郷孝祐 (@corochann) Sony EMCS Malaysia • テレビのソフトウェア開発 Preferred Networks

    • 製造業領域でのDeep learning応用 • Chainer Chemistryの開発 • Matlantisのリリース、PFCC立ち上げ • PFEにてPLaMo-100Bの事後学習 Kaggle • 2x Grandmaster (Notebooks & Competitions) 10
  2. Kaggle歴 2017 2018 2019 2022 2023 2024 Competitions Notebooks Dstl

    Satellite Image LANL Earthquake PetFinder.my Adoption HPA Single Cell Lyft Motion LLM Science Exam 13th 19th 4th 7th 5th x1 ASHRAE Energy x3 x4 Lyft Motion CHAMPS Molecule Google QUEST x1 2020 Bengali. AI x4 2021 x3 VinBigData Chest X-ray 11 Notebooks GM Competitions GM 本気で取り組み始めてから 1.5年 初金メダルから4年、Kaggle登録からは7年
  3. Notebookを書く目的 • 自身の勉強に役立つ ◦ 人に説明することでより理解が深まる ◦ コメントがもらえることで、自分の理解がより深まる • Kaggle Platformで楽しませてもらっていることの恩返し

    ◦ 感謝の気持ちでContribution backしよう! • Kaggle上で色々な人とやりとりすることができる ◦ 有名な人から質問が来ることも • 好きなフレームワーク・ツールの布教 ◦ うまくいけば布教もできるかも、、? → Optunaの例を後述 • 自身のアイデアの昇華 ◦ Competitionよりも時間軸が短く、小さな単位で出口に出すことができる • メダルがもらえる ◦ 、、、まずはこの動機からでも十分!? 16
  4. Notebookを書く魅力 • モチベが続きやすい ◦ 1週間〜1ヶ月程度の集中勝負でいける ◦ Upvote数見ながら、早期撤退判断もしやすい • 運要素は少ない ◦

    コンペのようにShake downやリークなどで 最後にぶち壊し、、、ということはほぼない → https://www.kaggle.com/competitions/microsoft-malware- prediction/leaderboard 18
  5. 日本のNotebooks GM • まだ6人しかいないようです ◦ tito san ◦ Y.Nakama san

    ◦ Hidehisa Arai san ◦ chumajin san ◦ mugen88 san ◦ corochann • 今からでもFirst 10に入れます! Global Japan Competitions 334 69 (最多!!) Datasets 79 2 Notebooks 151 6 Discussions 80 1 GMの数比較 こちらが少ない😢 https://www.kaggle.com/code/corochann/eda-grandmaster-japan にて確認 22
  6. Kaggle Notebooks Grandmasterを目指す魅力 • Competitions GMよりも短期で目指せる可能性がある ◦ 両方の金メダル狙った並走も可 (後述) •

    Competitions カテゴリで勝つのが難しい人でもチャンスがある ◦ コード品質や可視化、サーベイ力、アイデアで勝負できる。 ◦ 英語力はそこまで重要ではない ▪ 今ならDeepLやChatGPTで翻訳させた文章でも十分 23
  7. 金メダルを取るには? みなさんはどんなNotebookを最初にみますか? • Upvote数が多いもの (Most votesでSort) • 有名な人、GMが書いているもの • 最初のとっかかりになるもの

    (Quick start系) • 問題理解、データの把握に役に立つもの (EDA系) • コードの書き方がわかるもの (Tutorial系) • スコアが高いもの (Training & Prediction系) 31 コントロールできない すでにGMの人はそれだけ で有利かも
  8. 金メダルを取るには? みなさんはどんなNotebookを最初にみますか? • Upvote数が多いもの (Most votesでSort) • 有名な人、GMが書いているもの • 最初のとっかかりになるもの

    (Quick start系) • 問題理解、データの把握に役に立つもの (EDA系) • コードの書き方がわかるもの (Tutorial系) • スコアが高いもの (Training & Prediction系) →ここら辺を狙っていきましょう!  1コンペでEDA, Model学習, Model推論の金メダル3個、  それ以上を狙うことも可能 32
  9. 2. EDA: Exploratory Data Analysis • コンペのデータがどのようなものなのかを詳細に見て説明・解説 • 可視化やドメイン知識を共有することが重要 •

    データを深くみることでわかる気づきがポイント • Survey能力があり、そういうのを共有できるとプラス • スピード勝負 (~1ヶ月) https://www.kaggle.com/code/corochann/google-quest-first-data-introduction 34
  10. 4. Model Training: モデル学習コード • データ前処理の方法、モデル選定、モデルの使い方 • 学習パイプライン(学習ライブラリの使い方)をどう組むか ◦ Multi

    stage trainingの場合、stageごとにNotebook分けられることも • Upvoteもらうには結局モデル性能は重要。 https://www.kaggle.com/code/corochann/bengali-seresnext-training-with-pytorch 38
  11. UpvoteもらいづらいNotebook例 • Winning SolutionのNotebook公開 ◦ コンペ終了後のNotebookはかなり上位でない限りは難しい • Playgroundコンペとかに対するNotebook投稿 ◦ すでによいNotebookが飽和しており、また旬ではないため難しい

    • 世の中ではマイナーなライブラリを用いたNotebook ◦ Chainerの普及試みたが難しかった😢😢😢 • スコアが低いモデル学習Notebook ◦ 残念?ながら スコア >> ユニークさ/英語力 か 42
  12. 並走がうまくいった例 Lyft Motion Predictionコンペの例 • 最初の1.5ヶ月程度: Notebook作成に注力。この時点で良いスコアが取れ ており、優位性があることが見えていた ため、継続することに。 ◦

    Notebookで4x Gold獲得 • 1.5ヶ月~コンペ終了まで: Notebookが金メダル取れたところで、 チームに参加し順位取りに行くモードに切り替え。 ◦ 最終的に4th prize でFinish 47
  13. タイトル • 何をしているか一目でわかりやすく。 • EDA, Training, Inferenceなどの単語が入っているとわかりやすい。 • 使っているモデル名、特にユニークな気づきなどを含める。 •

    ⭐最近は絵文字入れるのが流行っている印象⭐ ◦ emojipediaなどの絵文字検索サービスも活用 • NotebookにはTagも設定できるので、きちんと設定すると丁寧 ◦ eda, data visualization, feature engineering, starter code, beginner, tutorial deep learning, data cleaning, etc… https://www.kaggle.com/code/corochann/vinbigdata-detectron2-train 50
  14. Markdownを正しく使う • Notebookの階層構造、章立てを意識して見出しをつける ◦ # 章, ## 節, ### 小見出し

    • **太字** • `変数名` • > 引用文 • [文章](URL) で引用 Notebookの右側に Table of Contentsが展開されます 52
  15. HTMLも使える! • 目次を作成してリンクを貼る ◦ [Dataset](#dataset) → <a id="dataset"></a> にジャンプ •

    YouTubeなどの埋め込み ◦ <iframe>...</iframe> • 文字の色やフォント変更して強調する ◦ <h3 style="color:red">text</h3> • 画像のレイアウトこだわる ◦ <img src=”” width=700px align=center></img> • 段落変えない改行 ◦ <br> などなど、、、 53
  16. Hide Cellを活用 • Notebook作成の際に、input, output cellそれぞれを Defaultで見せるか、折りたたんでおくか選べる。 • 右クリックして “Hide

    cell in Viewer” を選択 • Input: import文や便利関数定義など、 ストーリーから逸れるものは畳んでおく • Output: 長すぎるログなどは隠す 55
  17. Done is better than perfect! • とはいえ、公開までのスピードが重要な世界 • 書きたいと思っているが間に合っていないところは 見出しだけつけて

    “To be updated” と書いて公開してしまおう。 ◦ 毎日少しずつ更新していってVersion 20とかになることも。 • あとはやってみるのみ! 57
  18. Other Useful Links • How to become a Kernels Master

    ? | Kaggle ◦ 過去1位だった@artgorさんのコメント ◦ > The common idea is that kernel contains the authors ideas, analysis, opinion and not only code (except for top-scoring kernels). • Six steps to more professional data science code | Kaggle ◦ R使いの@rtatmanさん ◦ 📦 Modular, ✔ Correct, 📖 Readable, 💅 Stylish, 🛠 Versatile, 💡 Creative に書いていくのが大切とのこと。 • Creating a Good Analytics Report ◦ @jpmiller さん ◦ よいコードの書き方が書いてある (かなり昔の資料です、、、) 58
  19. Notebookが盛り上がるコンペは? • 参加チーム数が多いコンペ ◦ 参加者が多く、盛り上がっているコンペほどUpvoteもらいやすい • 物理系コンペは狙い目 ◦ ドメイン知識が必要で、データも特化しているので 説明できること・気づきがたくさんある

    ◦ 面白いからか、参加チームも多い傾向 • テーブルデータ系コンペ ◦ テーブルデータ系は初心者も入りやすいので参加者が多い傾向 ◦ EDAもやりやすい • LLM, 画像系コンペ ◦ ものによる。 ◦ 計算資源がたくさん必要なコンペは参加者が少ないことも 60
  20. Kaggleの生態系を理解する ~ ゲーム理論の観点から Competitionsは相対的な順位が重要 →囚人のジレンマ状態 相手 協調 裏切り 6点 10点

    2点 0点 協調 裏切り 自 分 https://mas.kke.co.jp/fukuzatsu/dilemma/ を元に作成 自分は情報を出さずに、相手に情報を出させて上位を取るのが最適 64
  21. Kaggleの生態系を理解する ~ ゲーム理論の観点から Notebooks, Datasets, Discussionsは、、? →Upvote数という絶対値で決まる。協力ゲーム! 相手 協調 裏切り

    10点 8点 0点 4点 協調 裏切り 自 分 相手を尊重してUpvoteしても自分が失うものはない 相手から参照・Upvoteもらえるような協力ができれば最適! 65
  22. 引き出しを増やす: 可視化編 • matplotlib ◦ https://github.com/matplotlib/cheatsheets ◦ https://matplotlib.org/stable/gallery/index.html • plotly

    ◦ Plotly Python Graphing Library ◦ Plotly Express ◦ plotly expressは簡単に Interactiveな図が書けておすすめ Galleryをみて どんな可視化があるか把握しておく 70
  23. 今から取り組むなら、、、 • LLM活用すると、全く違った効率でできるのかも? ◦ コーディング支援 ◦ 英語への翻訳、英語文のReview ▪ 英語ができないから、、、はもう ◦

    コードから、必要な解説コメントの生成 ◦ そもそものドメイン知識などのSurveyに活用 ◦ Notebookのネタになるアイデア出し ◦ etc etc… 79 https://openai.com/index/mle-bench/
  24. メッセージ • 日本はすでにKaggle Competitions Grandmasterが世界一いる ◦ スキルが優秀な人材は揃っている • 発信力をあげよう! ◦

    技術のガラパゴス化を防ぎたい ◦ トレンドを作る(日本ではやったライブラリが世界へ広まると嬉しい) • NotebookやDiscussionへの参加に興味を持っていただけたら嬉しいです ◦ 本気でやりたいが、はじめの公開が自信ないかた、、、Reviewします 80