nokoのブログ

こちらは暫定のメモ置き場ですので悪しからず

Kaggleコンペ開始直後にやっていること

はじめに

  • はじめてKaggleのコンペに参加してみたので、初動でやったことの大まかな流れを備忘までに残しておきます。

やったこと

0. 前提

  • Kaggleアカウントは作成しておくこと

1. コンペ参加登録

  • Kaggleページ→compete→sample_compete(対象コンペ)→Join Competition

2. GitHubリポジトリ作成

3. Issue(初期)作成

  • フォーマット
    • タイトル
    • 完了要件
    • 実施内容
  • Issueタイトル
      1. 環境構築
      1. サンプル公開ノートブック確認
      2. Input/Outputデータ確認
      3. 処理フロー確認
      1. EDA
      1. サーベイ
      1. 実験計画立て・実験管理シート作成
  • (補足)ノートブックコンペの場合は、スプレッドシート作成(「Issue」シート)

4. 環境構築

  • (補足)ノートブックコンペの場合は対応不要

4-1. Docker環境構築

4-2. Kaggle API認証設定

  • kaggleのpipパッケージインストール
    • → requirements.txtに kaggle を追記してコンテナを再作成する
    • (暫定) pip install kaggle
  • kaggle認証
    • 事前にkeyを確認しておく
    • ホスト側でexportしておく
    • → コンテナ起動時にそれを引き継ぐようにrun.shを修正する
# ホスト側で実行(bashrcなどに設定しておく)
$ export KAGGLE_USERNAME=kaggle_username
$ export KAGGLE_KEY=xxxxxxxxxxxxxx
...
-e KAGGLE_USERNAME=${KAGGLE_USERNAME} \
-e KAGGLE_KEY=${KAGGLE_KEY} \
...
  • Kaggle API 動作確認
$ kaggle competitions list

4-3. Readme作成

  • README作成
    • 概要
      • コンペのリンク+α
    • 環境構築手順
      • 上記の環境構築手順(KaggleAPI用環境変数設定、コンテナ起動)
    • スクリプト実行手順
    • Input/Outputデータサマリ
    • 実験結果サマリ
  • → git pull requestまで

5. サンプル公開ノートブック確認

  • Input/Outputデータを確認する
    • Readmeに追記する
      • Input/Outputデータ
        • データ種
        • データ量
        • カラム
  • 処理フローを確認する
    • 前処理→学習→推論
    • スクリプト(ノートブック)・関数の切り方

6. EDA

  • このタイミングで、Inputデータ取得・読み込み周りを実装する
  • 手法
    • pandas profiling など
    • head(), info(), shape, unique, display image, wordcloud, basic nlp -> count, distributed

7. サーベイ

  • 公開ノートブック・関連論文を調査する
  • →試し得る手法の洗い出し、優先順位付けをする

8. 実験計画立て・実験管理シート作成

  • EDAサーベイの結果を元に、実験計画を立てる
  • 予実管理用の実験管理シートを作成する
    • No, タイトル, 関連IssueNo, スクリプト, 変更元, 変更内容, 補足, 結果

9. 個別Issue起票・対応

  • 実験計画に従い、Issueを起票し、合わせてブランチを作成して実験していく
  • ブランチ切り替え(別Issueに取り組む度に実施する)
# mainブランチを最新にする
$ git checkout main
$ git status
$ git pull origin main
# → 上記同様、新たなブランチを作成する