Kaggle コンペ基本戦略
自分用のメモも兼ねて
参加してすぐやること
内容・目的をよく読む
まず最初に、コンペの目的や問題内容をよく理解することが重要です。特に、どのような問題を解くのか、どの手法を使うべきかを明確に把握しましょう。
選ぶべき問題の種類としては、クラス分類、自然言語処理、時系列解析などがあります。これらは手法がある程度確立されているため、比較的メダルを獲得しやすい分野です。
評価指標をよく理解する
コンペの最終目的は評価結果を最大化することです。そのため、評価指標を理解せずに進めるのは避けましょう。
再現率やF1スコアなど、評価指標がどれかをしっかり確認し、提出後のリーダーボード(LB)スコアと自分のローカルのCross Validation(CV)スコアを一致させることを目指します。
リーダーボードでは、締切前はPublic Boardで順位とスコアが発表され、締切後はPrivate Boardで最終的な順位とスコアが発表されます。
最も良いスコアの公開ノートブックをコピーし、ステップバイステップで実行していく
巨人の肩に乗るという考え方が有効です。
多くの素晴らしいノートブックが公開されているので、それらを参考にして、コンペのデータや問題の理解を深めるのが最も効率的です。
公開ノートブックをコピーし、ステップごとに実行しながら学んでいきましょう。
開発の進め方
実際の開発時には、以下の4つのノートブックを用意することをお勧めします。
EDA (探索的データ分析)
学習
評価
推測 (予測)
また、GPU利用を削減するために、テスト段階では少ないデータセットとCPUで学習を行うことが望ましいです。データは学習用(train)、検証用(valid)、評価用(eval)に分け、共通部分は外部ファイルとして作成し、各ノートブックで共有する形にしましょう。
略語の理解
こちらのリンクに略語がまとまっていますので、必ず確認しておきましょう。
EDA (探索的データ分析)
データの内容を理解するために、データの分布を計算したり、プロットを描いたりして、問題の概要をつかむ作業です。
学習
データ読み込み
対象のデータは、PandasではなくPolarsを使って読み込むことをお勧めします。Polarsは大規模データを効率的に処理できるため、パフォーマンスが向上します。データ生成 (クレンジング、特徴量作成)
クレンジング: 不完全なデータを補完し、必要な変数を作成します。例えば、欠損データの補完や、変数のリネーム(例: WORD → W)を行います。データをtrain、valid、evalに分割します。
特徴量生成: 説明変数から特徴量を作成します。必要な特徴量をしっかりと設計しましょう。
学習
trainとvalidデータを用いてモデルの学習を行います。初期段階では、n_estimatorsは小さめに設定(例:10)して、CPUでも十分にテストできるようにします。学習したモデルは保存しておきます。
評価
学習したモデルをevalデータで評価します。この際、評価指標に基づいてモデルの性能を確認します。評価結果を最大化するように調整を加え、再実行することが重要です。
モデル読み込み
学習したモデルを読み込んで、評価を行います。推論
評価データ(eval)を使って推論を行います。
推論
データ読み込み
テストデータ(test)を読み込みます。データ生成 (クレンジング、特徴量作成)
テストデータに対しても、クレンジングや特徴量生成を行います。モデル読み込み
学習済みのモデルを読み込み、推論を行います。推論結果の最適化
評価結果で確定した混合率を用いて、推論結果を最適化します。推論結果の提出
最終的に推論結果を提出します。
推測結果の最適化 (Post-Training)
推論結果をさらに最適化するための手法を適用します。特に、モデルの混合率やスタッキング(複数のモデルを組み合わせて精度を向上させる技術)を検討します。
まとめ
コンペの成功には、評価指標を理解し、適切な手法で開発を進めることが重要です。公開ノートブックを参考にし、実行しながら学び、最適な推論結果を提出することが最終目標です。