Kaggle コンペ基本戦略

自分用のメモも兼ねて

参加してすぐやること

内容・目的をよく読む

まず最初に、コンペの目的や問題内容をよく理解することが重要です。特に、どのような問題を解くのか、どの手法を使うべきかを明確に把握しましょう。
選ぶべき問題の種類としては、クラス分類、自然言語処理、時系列解析などがあります。これらは手法がある程度確立されているため、比較的メダルを獲得しやすい分野です。

評価指標をよく理解する

コンペの最終目的は評価結果を最大化することです。そのため、評価指標を理解せずに進めるのは避けましょう。
再現率やF1スコアなど、評価指標がどれかをしっかり確認し、提出後のリーダーボード(LB)スコアと自分のローカルのCross Validation(CV)スコアを一致させることを目指します。
リーダーボードでは、締切前はPublic Boardで順位とスコアが発表され、締切後はPrivate Boardで最終的な順位とスコアが発表されます。

最も良いスコアの公開ノートブックをコピーし、ステップバイステップで実行していく

巨人の肩に乗るという考え方が有効です。
多くの素晴らしいノートブックが公開されているので、それらを参考にして、コンペのデータや問題の理解を深めるのが最も効率的です。
公開ノートブックをコピーし、ステップごとに実行しながら学んでいきましょう。


開発の進め方

実際の開発時には、以下の4つのノートブックを用意することをお勧めします。

  1. EDA (探索的データ分析)

  2. 学習

  3. 評価

  4. 推測 (予測)

また、GPU利用を削減するために、テスト段階では少ないデータセットとCPUで学習を行うことが望ましいです。データは学習用(train)、検証用(valid)、評価用(eval)に分け、共通部分は外部ファイルとして作成し、各ノートブックで共有する形にしましょう。


略語の理解

こちらのリンクに略語がまとまっていますので、必ず確認しておきましょう。


EDA (探索的データ分析)

データの内容を理解するために、データの分布を計算したり、プロットを描いたりして、問題の概要をつかむ作業です。


学習

  1. データ読み込み
    対象のデータは、PandasではなくPolarsを使って読み込むことをお勧めします。Polarsは大規模データを効率的に処理できるため、パフォーマンスが向上します。

  2. データ生成 (クレンジング、特徴量作成)

    • クレンジング: 不完全なデータを補完し、必要な変数を作成します。例えば、欠損データの補完や、変数のリネーム(例: WORD → W)を行います。データをtrain、valid、evalに分割します。

    • 特徴量生成: 説明変数から特徴量を作成します。必要な特徴量をしっかりと設計しましょう。

  3. 学習
    trainとvalidデータを用いてモデルの学習を行います。初期段階では、n_estimatorsは小さめに設定(例:10)して、CPUでも十分にテストできるようにします。学習したモデルは保存しておきます。


評価

学習したモデルをevalデータで評価します。この際、評価指標に基づいてモデルの性能を確認します。評価結果を最大化するように調整を加え、再実行することが重要です。

  1. モデル読み込み
    学習したモデルを読み込んで、評価を行います。

  2. 推論
    評価データ(eval)を使って推論を行います。


推論

  1. データ読み込み
    テストデータ(test)を読み込みます。

  2. データ生成 (クレンジング、特徴量作成)
    テストデータに対しても、クレンジングや特徴量生成を行います。

  3. モデル読み込み
    学習済みのモデルを読み込み、推論を行います。

  4. 推論結果の最適化
    評価結果で確定した混合率を用いて、推論結果を最適化します。

  5. 推論結果の提出
    最終的に推論結果を提出します。


推測結果の最適化 (Post-Training)

推論結果をさらに最適化するための手法を適用します。特に、モデルの混合率やスタッキング(複数のモデルを組み合わせて精度を向上させる技術)を検討します。


まとめ

コンペの成功には、評価指標を理解し、適切な手法で開発を進めることが重要です。公開ノートブックを参考にし、実行しながら学び、最適な推論結果を提出することが最終目標です。

いいなと思ったら応援しよう!