一般的なよくある質問

  • 現在進行中のコンペの話をしていいの?

    • 一般的には、public sharingはOK、(チーム外での)private sharingはNG。
    • public sharingは、KaggleのForum(NotebookやDiscussion)上で議論したり情報を公開したりすること。
    • private sharingは、参加者全員の目に入らない場所で情報交換すること、twitterやslack、メールや対面とか。
    • コードやデータはもちろん、アイデアや考察も良くない。
    • とはいえ、twitterで少しつぶやいたくらいで気づかれるわけではないので、良識に任されている
  • public leaderboardとprivate leaderboardってなに?

    • 評価用データは2つに分けられている。
    • 片方のデータへのスコアで順位が表示される。(public leaderboard)
    • 残りのデータへのスコアで最終的な順位が決定される。(private leaderboard)
    • public leaderboardに過学習していると、privateで真っ逆さまということも
    • 各コンペのLeaderboardのところに、"This leaderboard is calculated with approximately 20% of the test data."のように割合が書かれている
  • btb(beat the benchmark)ってなに?

    • Kaggle Notebookに強くて優しい人が序盤においてくれる、基本的なことをやってそこそこのスコアが出るスクリプト
    • 勉強になるので参考にすると良いです。これを自力で超えられれば初心者ではなさそう 。
  • 何から始めれば良い?

  • コードを書き終わったらどうやって提出する?

    • kaggleのNotebook上でコードを使っている場合、画面の右上に”Commit”というボタンがあります。このボタンを押し、コミットが完了するのを待ちます。
    • 終わったことが確認できたら、次は左上にある”<<”という矢印ボタンを押します。すると、画面遷移し、そこには”Notebook”,”Code”,”Data”という小タブが見られると思います。その中の”Output”を選択すると、作成したファイルが表示されますので、”submit to competition”ボタンを押しましょう。これで提出完了です。
  • Commitのボタンを押しても動作が完了しない。どうすれば良い?

    • これは時折起こる現象です。次のようにして対処してみましょう。
        1. 画面右下に丸型の矢印の更新ボタンを押してみる。
        1. ブラウザの更新ボタンを押す。
        1. 数時間おいてもう一度コミットする。
  • メダル対象のコンペってどれ?

    • コンペのページ下部で、This competition counts towards tiers となっているコンペのみメダルを受け取ることができます。does not count となっているものでは受け取れません。 (Featuredコンペの他、Researchコンペなどがあり、コンペの種類で判断できないこともあります。)
    • Kaggle Progression System 
      • Note that InClass, playground, and getting started competitions do not award medals. (翻訳)InClass, playground, and getting startedコンペはメダルを受け取ることができません。

  • Featuredコンペなど、コンペの種類ってどこでわかるの?

  • Kaggleで勝つにはお金掛かるの?

    • ある程度マシンパワーがあった方が勝ちやすいのは事実
    • でもノートPCだけでMasterになった人もいる
    • 画像系コンペ以外なら、GCPの無料クーポン$300+preemptive instanceで十分
  • ローカルPCとクラウド、どちらを使うとよい?

    • どちらも長短あるが、特に初心者はローカルPCが1台あると良いと思う。
    • ローカルPC
      • お金を気にせずに計算・試行錯誤できる
      • 発熱・騒音・電気代の問題がある
      • PCの購入という初期費用が必要
      • 外出時にジョブ管理をしずらい
    • クラウド
      • スケールでき、お金を投入して計算を速くできるので、コンペ上位の時など助かる
      • 発熱・騒音・電気代を気にしなくてよい
      • 場所をとらない
      • 初期投資は必要ないものの従量課金。クーポンが使えたりして安くすむ場合もある。
  • クラウドを使う場合、どこを使えば良いの?

    • kaggleのNotebook
      • 無料、GPU・TPUを使用可能、週30時間程度の使用制限がある
      • PythonとRを使用可能
      • 公式の環境であり初めはここを使う人が多い。処理が遅いとか自由度が低いとかを感じると、他を使うことに。
      • 公式のドキュメンテーションはこちら 
    • Google Colabratory
      • 無料で使えるGoogleが用意したJupyterノートブック環境、GPU・TPUを使用可能
      • Pythonのみ使用可能
      • 作った特徴やモデルなどを保存して置く場合に、kaggleのnotebookよりも柔軟に使えたりする
      • 月数百円課金してディスクスペースを増やすと便利になる
      • 処理速度はkaggleのNotebookとかわらないかも
      • Colab ProやColab Pro+という月額課金のサービスもある。GPUを使う場合は、無料版だとすぐに使用が制限されてしまう印象
    • Google Cloud Platform (GCP)
      • kagglerが使っているクラウドといえばこれ
      • preemptive インスタンスにすればたまに落ちるけど安い
      • 課金によって、CPU・GPUを増やすなど自分が必要な計算資源を得られる
    • アマゾンウェブサービス (AWS)
      • 有名なのは従量課金の仮想マシンサービスであるEC2

        • CPUやメモリに振ったもの、GPU付きのものなど様々なインスタンスタイプが存在
        • CudaやDeeplearningフレームワークが既にインストールされたマシンイメージ(Deep Leaning AMI)もある
        • スポットインスタンスにすればたまに落ちるけど安い
      • Jupyterノートブック環境作成、学習、デプロイを簡単に行えるサービスとしてSageMakerが登場した

技術的なよくある質問

  • ハイパーパラメータの探索ってどうするの?

    • 手動で頑張る
    • 過去のコンペのNotebookから探してくる
    • hyperopt
    • gpyopt
    • Optuna
  • EDA(Exploratory Data Analysis - 可視化してデータを見ること)って何のためにやるの?

    • 特徴量を作るため、気づきを得るため

      • 気づきの例 - Quoraコンペで埋め込まれたグラフ特徴、氷山コンペでのリーク発見、Instacartコンペでの商品間の関連性、リクルートコンペでの予約対来客の比率が減衰すること
    • データの「構造」や「意味」を知る上でのEDAはしますが、「傾向」を掴むためのEDAにはそこまで力を入れないとか

    • Kaggle上の順位を上げるためであればEDAをせずに特徴量をどんどん作る方が有効かもしれないが、ビジネスでデータ分析をやることを考えると大事

  • EDAは何のツールでやるの?

    • jupyter notebookを使うことが多いか
    • ライブラリは、pythonだとmatplotlib, seabornなど、Rだとggplot2など
  • ディレクトリ構成どうするの?

  • xgboostでカテゴリ変数をOne-Hot Encodingせずにそのまま入れていることがあるけど、いいの?

    • 決定木なので不等式で2回分岐すれば等式が表現できること、xgboostの性能の高さから、わりと大丈夫
    • one hotはメモリ的に厳しい場合があるので、普通にlabel encodingだけでやってしまうことはままある

上記以外実際に#begginers-help であった質問と回答はこちらにまとめております。